Logo Passei Direto
Buscar

TECNOLOGIA DA INFORMAÇÃO - POO E PYTHON 4

Material com exemplo de POO em Python: sistema de biblioteca com código das classes Livro, LivroDidatico, Usuario e Bibliotecario, operações de emprestar/devolver, cadastro e uso de instâncias, além de explicações sobre herança e polimorfismo.

User badge image
Lalazinha

em

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Certamente! Vamos explorar um exemplo prático de programação orientada a objetos (POO) em Python, abordando conceitos como classes, objetos, herança, encapsulamento e polimorfismo. Este exemplo vai ilustrar como esses conceitos são aplicados na prática para criar um sistema de gestão de uma biblioteca.
### Exemplo de Programação Orientada a Objetos em Python: Sistema de Biblioteca
#### Definição das Classes
```python
class Livro:
 def __init__(self, titulo, autor, isbn):
 self.titulo = titulo
 self.autor = autor
 self.isbn = isbn
 self.disponivel = True
 
 def emprestar(self):
 if self.disponivel:
 self.disponivel = False
 print(f'O livro {self.titulo} foi emprestado.')
 else:
 print(f'O livro {self.titulo} não está disponível no momento.')
 
 def devolver(self):
 if not self.disponivel:
 self.disponivel = True
 print(f'O livro {self.titulo} foi devolvido com sucesso.')
 else:
 print(f'O livro {self.titulo} já está disponível.')
class LivroDidatico(Livro):
 def __init__(self, titulo, autor, isbn, disciplina):
 super().__init__(titulo, autor, isbn)
 self.disciplina = disciplina
 
 def __str__(self):
 return f'{self.titulo}, {self.autor}, {self.disciplina}'
class Usuario:
 def __init__(self, nome, idade):
 self.nome = nome
 self.idade = idade
 self.livros_emprestados = []
 
 def emprestar_livro(self, livro):
 if len(self.livros_emprestados) < 3:
 livro.emprestar()
 self.livros_emprestados.append(livro)
 else:
 print(f'{self.nome}, você atingiu o limite de livros emprestados.')
 def devolver_livro(self, livro):
 if livro in self.livros_emprestados:
 livro.devolver()
 self.livros_emprestados.remove(livro)
 else:
 print(f'{self.nome}, você não possui este livro emprestado.')
class Bibliotecario:
 def cadastrar_livro(self, titulo, autor, isbn, disciplina=None):
 if disciplina:
 livro = LivroDidatico(titulo, autor, isbn, disciplina)
 else:
 livro = Livro(titulo, autor, isbn)
 return livro
```
#### Utilização das Classes
```python
# Criando instâncias das classes
bibliotecario = Bibliotecario()
livro1 = bibliotecario.cadastrar_livro('Python para Iniciantes', 'John Doe', '978-3-16-148410-0')
livro2 = bibliotecario.cadastrar_livro('Introdução à Programação', 'Jane Smith', '978-3-16-148410-1', 'Ciência da Computação')
usuario1 = Usuario('Alice', 25)
usuario2 = Usuario('Bob', 30)
# Interagindo com o sistema
usuario1.emprestar_livro(livro1)
usuario2.emprestar_livro(livro2)
usuario1.devolver_livro(livro1)
print(f'Livros emprestados por {usuario1.nome}: {", ".join([livro.titulo for livro in usuario1.livros_emprestados])}')
print(f'Livros emprestados por {usuario2.nome}: {", ".join([livro.titulo for livro in usuario2.livros_emprestados])}')
```
### Explicação do Código
1. **Classes:**
 - **Livro:** Representa um livro com atributos como título, autor, ISBN e disponibilidade. Métodos como `emprestar()` e `devolver()` são utilizados para alterar o estado de disponibilidade do livro.
 - **LivroDidatico:** Subclasse de Livro que adiciona um atributo disciplina. Sobrescreve o método `__str__()` para fornecer uma representação textual personalizada.
 - **Usuario:** Representa um usuário da biblioteca com métodos para emprestar e devolver livros, gerenciando uma lista de livros emprestados.
 - **Bibliotecario:** Classe responsável por cadastrar novos livros na biblioteca, distinguindo entre livros comuns e didáticos.
2. **Herança:** A classe `LivroDidatico` herda características da classe `Livro`, permitindo reutilizar código e estender funcionalidades específicas para livros didáticos.
3. **Polimorfismo:** O método `emprestar_livro()` em `Usuario` pode lidar com objetos de tipo `Livro` e `LivroDidatico` de maneira transparente, de acordo com a estrutura da POO.
### Conclusão
Este exemplo ilustra como a programação orientada a objetos pode ser aplicada para modelar e implementar sistemas complexos de forma estruturada, organizada e reutilizável. Através da definição de classes, herança, encapsulamento e polimorfismo, desenvolvedores podem criar sistemas robustos como sistemas de gerenciamento de bibliotecas, sistemas de gestão empresarial, jogos e muito mais. Esses princípios não apenas facilitam o desenvolvimento de software, mas também contribuem para sua manutenção e expansão ao longo do tempo.

Mais conteúdos dessa disciplina