Aula 8 — Programação Orientada a Objetos
2026-08-26
Interface define o que o objeto faz. Herança define o que ele é.
É o acoplamento mais forte da Orientação a Objetos — e, por isso, o mais perigoso mal utilizado.
Roteiro: mecânica → fragilidade → quando herdar → classes abstratas → Template Method.
extends: a Relação “É-UM”Herança de atributos é incorporação física — não associação externa.
finalSem private + final, a invariante do pai é apenas uma “sugestão”.
Resultado esperado: 3. Resultado real: 6 — contagem duplicada por confiar na mecânica interna do pai.
GerenciadorDeCobrancas extends ListaDeContatos — o gerenciador usa uma lista, não é uma lista.
Vaza métodos do pai (limpar, remover) + poluição de tipo. A cura: composição.
Sem adicionar nada: “objeto zumbi” — polui a taxonomia sem valor.
Por que “o gerenciador usa uma lista, não é uma lista” é o critério certo para decidir entre herança e composição?
Escreva sua resposta e compare com um colega antes de avançar (2 min).
Dica
Julgue V ou F — a questão só conta se acertar os 4 itens:
GerenciadorDeCobrancas extends ListaDeContatos expõe métodos do pai que talvez nunca devessem ser públicos no filho.Dica
Pix já escrevia idCobranca direto (via protected) — quebra em runtime, sem aviso em compilação.
null”super esquecido: máquina de estado “zumbi”Como um chassi de carro: rodas, bancos, suspensão — sem motor. new MeioPagamentoBase() nem compila.
Não existe “deserdar” um campo em Java. Herdar estado é compulsório.
Por que não existe uma forma de um filho “recusar” um atributo herdado, mas existe @Override para recusar/substituir um método herdado?
Escreva sua resposta e compare com um colega antes de avançar (2 min).
Dica
Julgue V ou F — a questão só conta se acertar os 4 itens:
new, desde que todos os métodos existam.Dica
new numa classe abstrata, completa ou não.@Override), atributos são herdados sem opção de recusa.final: ninguém muda a ordem. abstract: cada filho preenche só seu detalhe.
“Não nos ligue, nós ligamos para você.” O fluxo pertence ao pai — não ao filho.
Ganho: previsibilidade, manutenibilidade, menos chance de erro do especialista. Risco: esqueleto mal projetado vira camisa de força.
Se o Pix pudesse sobrescrever realizarPagamento() inteiro (em vez de só criarCobrancaEspecifica()), o que exatamente o sistema perderia?
Escreva sua resposta e compare com um colega antes de avançar (2 min).
Dica
Julgue V ou F — a questão só conta se acertar os 4 itens:
realizarPagamento() não fosse final, uma subclasse poderia pular a validação ou o registro de log.criarCobrancaEspecifica() é o único ponto que cada subclasse precisa conhecer para se especializar.Dica
final.Próxima aula: o Princípio da Substituição de Liskov — quando um filho pode substituir o pai com segurança.
UNICAMP — Instituto de Computação