Nesta atividade, vamos criar uma classe simples em Python que vai ajudar a solidificar os conceitos de atributos de instância, atributos de classe, getters e setters. Vamos começar com exemplos simples e progredir para algo mais complexo.
Exemplo 1: Classe Livro
Vamos começar por definir uma classe Livro
. Esta classe terá atributos de instância para o título e o autor do livro, e um atributo de classe para contar quantos livros foram criados.
Definição da Classe Livro
class Livro:
# Atributo de classe
contador_livros = 0
def __init__(self, titulo, autor):
# Atributos de instância
self.titulo = titulo
self.autor = autor
# Incrementar o contador de livros sempre que um novo livro é criado
Livro.contador_livros += 1
# Getters
def obter_titulo(self):
return self.titulo
def obter_autor(self):
return self.autor
# Setters
def definir_titulo(self, titulo):
self.titulo = titulo
def definir_autor(self, autor):
self.autor = autor
Utilização da Classe Livro
# Criar instâncias da classe Livro
livro1 = Livro("1984", "George Orwell")
livro2 = Livro("O Processo", "Franz Kafka")
# Obter informações dos livros
print(livro1.obter_titulo()) # Output: 1984
print(livro2.obter_autor()) # Output: Franz Kafka
# Alterar informações dos livros
livro1.definir_titulo("Mil Novecentos e Oitenta e Quatro")
print(livro1.obter_titulo()) # Output: Mil Novecentos e Oitenta e Quatro
# Acesso ao atributo de classe
print(Livro.contador_livros) # Output: 2
Exemplo 2: Classe Aluno
Vamos criar a classe Aluno
que terá atributos de instância para o nome, idade e curso, e um atributo de classe para contar o número total de alunos. Vamos também incluir métodos getters e setters.
Definição da Classe Aluno
class Aluno:
# Atributo de classe
contador_alunos = 0
def __init__(self, nome, idade, curso):
# Atributos de instância
self.nome = nome
self.idade = idade
self.curso = curso
# Incrementar o contador de alunos sempre que um novo aluno é criado
Aluno.contador_alunos += 1
# Getters
def obter_nome(self):
return self.nome
def obter_idade(self):
return self.idade
def obter_curso(self):
return self.curso
# Setters
def definir_nome(self, nome):
self.nome = nome
def definir_idade(self, idade):
self.idade = idade
def definir_curso(self, curso):
self.curso = curso
Utilização da Classe Aluno
# Criar instâncias da classe Aluno
aluno1 = Aluno("Maria", 20, "Engenharia Informática")
aluno2 = Aluno("João", 22, "Medicina")
# Obter informações dos alunos
print(aluno1.obter_nome()) # Output: Maria
print(aluno2.obter_curso()) # Output: Medicina
# Alterar informações dos alunos
aluno1.definir_idade(21)
print(aluno1.obter_idade()) # Output: 21
# Acesso ao atributo de classe
print(Aluno.contador_alunos) # Output: 2
Exemplo 3: Classe Produto
Neste exemplo, vamos criar uma classe Produto
com atributos de instância para o nome, preço e quantidade. Também adicionaremos um atributo de classe para manter um registo do número total de produtos e implementaremos getters e setters para manipulação.
Definição da Classe Produto
class Produto:
# Atributo de classe
contador_produtos = 0
def __init__(self, nome, preco, quantidade):
# Atributos de instância
self.nome = nome
self.preco = preco
self.quantidade = quantidade
# Incrementar o contador de produtos sempre que um novo produto é criado
Produto.contador_produtos += 1
# Getters
def obter_nome(self):
return self.nome
def obter_preco(self):
return self.preco
def obter_quantidade(self):
return self.quantidade
# Setters
def definir_nome(self, nome):
self.nome = nome
def definir_preco(self, preco):
self.preco = preco
def definir_quantidade(self, quantidade):
self.quantidade = quantidade
Utilização da Classe Produto
# Criar instâncias da classe Produto
produto1 = Produto("Laptop", 1200.50, 10)
produto2 = Produto("Teclado", 25.90, 50)
# Obter informações dos produtos
print(produto1.obter_nome()) # Output: Laptop
print(produto2.obter_preco()) # Output: 25.90
# Alterar informações dos produtos
produto1.definir_preco(1150.00)
print(produto1.obter_preco()) # Output: 1150.00
# Acesso ao atributo de classe
print(Produto.contador_produtos) # Output: 2
Resumo
Nesta atividade, aprendemos a criar classes simples com Python utilizando atributos de instância, atributos de classe, getters e setters. Criámos três classes diferentes: Livro
, Aluno
e Produto
, para ilustrar como podemos aplicar estes conceitos em diferentes contextos.
Quiz
-
O que é um atributo de classe?
a) Um atributo associado a cada instância de uma classe.
b) Um atributo compartilhado por todas as instâncias de uma classe.
c) Um método que pertence apenas a algumas instâncias.
d) Um valor constante dentro da classe.
-
Como podes definir um método getter em Python?
a) Utilizando a função
set
.b) Através de uma função interna.
c) Definindo um método com
def
para retornar o valor do atributo.d) Criando uma variável pública.
-
Qual dos seguintes é um exemplo de um atributo de instância?
a) Definição de
contador_produtos
emProduto
b) Definição de
titulo
emLivro
c) Definição de
obter_nome
emAluno
d) Definição de
contador_alunos
emAluno
-
O que acontece quando crias uma nova instância de uma classe que possui um atributo de classe contador?
a) Nada é alterado.
b) O valor do atributo de classe contador é incrementado.
c) Um novo atributo é criado para cada instância.
d) O valor do atributo de classe é redefinido.
-
O que representa a linha
Livro.contador_livros += 1
no contexto de um atributo de classe?a) Decrementa o valor do atributo de classe.
b) Flask o valor por 1.
c) Incrementa o valor do atributo de classe por 1.
d) Zera o valor do atributo de classe.
Respostas:
- b)
- c)
- b)
- b)
- c)
Espero que esta atividade tenha sido útil para reforçar os conceitos de atributos de instância, atributos de classe, getters e setters. Boa sorte com a sua jornada em Programação Orientada a Objetos!