Neste capítulo, vamos mergulhar nos conceitos fundamentais de Programação Orientada a Objetos (POO): classes e objetos. Estes conceitos são essenciais para estruturar o código de uma forma modular e reutilizável. Vamos explorar como definir classes em Python e criar objetos a partir dessas classes.
O que é uma Classe?
Uma classe é como um molde ou um template que define as características e comportamentos que os objetos podem ter. Se pensarmos num programa que simula uma escola, podemos ter uma classe chamada "Aluno". Esta classe pode ter atributos, como nome e idade, e métodos, como estudar e fazer exame.
Definindo uma Classe em Python
Vamos começar por definir uma classe em Python. Usaremos o exemplo de uma "Aluno" para ilustrar este conceito.
class Aluno:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
def estudar(self):
print(f'{self.nome} está a estudar.')
def fazer_exame(self):
print(f'{self.nome} está a fazer exame.')
Atributos da Classe
Na classe "Aluno", nome
e idade
são atributos. Eles representam características de cada aluno. O método __init__
é o construtor da classe, responsável por inicializar os atributos quando um novo objeto é criado.
Criando Objetos
Agora que temos a definição da nossa classe, podemos criar objetos dessa classe.
aluno1 = Aluno('Maria', 16)
aluno2 = Aluno('João', 17)
print(aluno1.nome) # Output: Maria
print(aluno2.idade) # Output: 17
aluno1.estudar() # Output: Maria está a estudar.
aluno2.fazer_exame()# Output: João está a fazer exame.
Métodos da Classe
Os métodos estudar
e fazer_exame
são comportamentos que podemos definir numa classe. Quando chamamos aluno1.estudar()
, estamos a utilizar o método estudar
do objeto aluno1
.
Exemplo Prático: Biblioteca
Vamos desenvolver um exemplo mais completo. Suponha que queremos criar um sistema para gerir uma biblioteca. Precisamos de uma classe para representar os livros e outra para representar os utilizadores.
Classe Livro
class Livro:
def __init__(self, titulo, autor):
self.titulo = titulo
self.autor = autor
self.disponivel = True
def emprestar(self):
if self.disponivel:
self.disponivel = False
return True
else:
return False
def devolver(self):
self.disponivel = True
Classe Utilizador
class Utilizador:
def __init__(self, nome):
self.nome = nome
self.livros_emprestados = []
def emprestar_livro(self, livro):
if livro.emprestar():
self.livros_emprestados.append(livro)
print(f'{self.nome} emprestou {livro.titulo}.')
else:
print(f'{livro.titulo} não está disponível.')
def devolver_livro(self, livro):
self.livros_emprestados.remove(livro)
livro.devolver()
print(f'{self.nome} devolveu {livro.titulo}.')
Utilizando as Classes
livro1 = Livro('1984', 'George Orwell')
livro2 = Livro('O Principezinho', 'Antoine de Saint-Exupéry')
utilizador1 = Utilizador('Ana')
utilizador1.emprestar_livro(livro1) # Output: Ana emprestou 1984.
utilizador1.devolver_livro(livro1) # Output: Ana devolveu 1984.
utilizador1.emprestar_livro(livro2) # Output: Ana emprestou O Principezinho.
Resumo
Neste capítulo, explorámos os conceitos de classes e objetos em Python, criámos classes para representar "Aluno" e "Livro" e utilizadores. Vimos como criar objetos dessas classes e como utilizar métodos para definir comportamentos dos nossos objetos.
Quiz
Testa a tua compreensão dos conceitos abordados neste capítulo com este quiz rápido.
-
O que é uma classe em Python?
- a) Um objeto
- b) Um molde ou template
- c) Um método
-
O que faz o método
__init__
numa classe?- a) Define um atributo
- b) Inicializa os atributos de um objeto
- c) Deleta um objeto
-
Como crias um objeto da classe
Aluno
com o nome 'Pedro' e idade 15?- a)
Aluno('Pedro', 15)
- b)
aluno = Aluno()
- c)
aluno = Aluno('Pedro', 15)
- a)
-
Qual é a saída do seguinte código?
livro = Livro('O Hobbit', 'J.R.R. Tolkien') livro.emprestar() print(livro.disponivel)
- a)
False
- b)
True
- c)
None
- a)
-
O que faz o método
devolver
da classeLivro
?- a) Empresta o livro
- b) Torna o livro disponível novamente
- c) Deleta o livro