Ficha 02 · Herança, polimorfismo, composição
- Aplicar herança
- Usar polimorfismo
- Compor objectos
- Identificar quando usar cada técnica
Parte I · Herança
Exercício 1 · Herdar Pessoa (15 pts)
Cria Pessoa(nome, idade) com método saudar(). Cria Aluno(nome, idade, numero) que herda de Pessoa e adiciona método info() que devolve string com tudo.
Exercício 2 · isinstance (10 pts)
Considera:
class A: pass
class B(A): pass
class C(B): pass
obj = C()
Indica True ou False:
a) isinstance(obj, C) ___
b) isinstance(obj, B) ___
c) isinstance(obj, A) ___
d) isinstance(obj, object) ___
e) type(obj) is C ___
f) type(obj) is A ___
Parte II · Polimorfismo
Exercício 3 · Animais (20 pts)
Cria classe Animal com método som() que retorna "...". Cria 3 subclasses (Cão, Gato, Vaca) que redefinem som(). Escreve função coro(animais) que recebe lista e imprime som de cada.
Exercício 4 · Figuras geométricas (15 pts)
Cria classe abstracta Figura com método abstracto area(). Cria Rectangulo, Circulo, Triangulo. Função area_total(figuras) devolve soma das áreas.
Parte III · Composição
Exercício 5 · Carro (15 pts)
Cria classe Motor(cilindrada) com método ligar(). Cria classe Carro(marca, modelo, cilindrada) que contém um Motor. Carro.arrancar() chama motor.ligar().
Exercício 6 · Herança vs composição (15 pts)
Para cada caso, decide se modelarias com herança ou composição e justifica em 1 frase:
a) Aluno e Pessoa. ___
b) Carro e Motor. ___
c) Lobo e Animal. ___
d) Equipa e Jogador. ___
e) Livro e Editora. ___
f) Quadrado e Rectangulo (matematicamente). ___
Parte IV · Cenário
Exercício 7 · Sistema de empréstimo (10 pts)
Modela uma biblioteca:
- ItemBiblioteca (abstracta) com método info() abstracto.
- Livro(titulo, autor) herda.
- Revista(titulo, edicao) herda.
- Biblioteca que tem lista de itens (composição) e métodos adicionar(item), listar().