Aula 6 — Programação Orientada a Objetos
2026-08-26
A pergunta da Aula 5: como o compilador aceita Pagavel p = new Pix() e depois p = new Cartao()?
A resposta começa aqui: a Interface — o mecanismo de linguagem que torna a abstração Pagavel real.
Roteiro: contrato → interfaces modernas → tipos como comportamento → exceções como guardas.
PagavelDiz o quê, nunca como. Métodos são implicitamente public abstract.
PixEsquecer um método do contrato = erro de compilação, não bug em produção.
A tomada não sabe se é liquidificador ou TV — só exige o plugue certo. Um aparelho novo não exige refazer a fiação da casa.
Evolução sem ruptura: Pix.java nem precisa saber que processarComLog existe.
Interface = cérebro (regra); classe concreta = músculos (armazenamento). Mesma regra, zero duplicação.
O método default aplicarJuros muda o saldo do objeto. Isso significa que a interface passou a ter estado próprio?
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:
default pode chamar outros métodos abstratos da mesma interface, confiando que a classe concreta os implementa.aplicarJuros armazena o novo saldo dentro da própria interface, num atributo privado.static de interface pode ser chamado sem nenhuma instância de uma classe concreta.Dica
aplicarJuros chama getSaldo()/setSaldo().static pertencem ao tipo, não a uma instância.| Interface | Classe Abstrata | |
|---|---|---|
| Estado | Proibido | Permitido |
| Herança | Múltipla (implements) |
Única (extends) |
| Propósito | O que faz | O que é |
Pix e Cartao sem nada em comum em dados — mesmo tipo Pagavel, porque ambos “sabem pagar”.
Uma interface pode ter métodos default com lógica de negócio real. Isso a transforma numa “classe disfarçada”? O que exatamente impede isso?
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:
default e static tornam a interface equivalente a uma classe comum, incluindo suporte a atributos de instância.Dica
default/static, a interface continua proibida de ter atributos de instância.Pix e CartaoDeCredito.O compilador aceita qualquer double. A exceção protege o que o tipo não consegue expressar.
Retornar null/0/false só empurra o erro para uma linha distante — um NullPointerException sem relação óbvia com a causa real.
Baixo nível lança; alto nível decide como reagir.
Exceção = cláusula do contrato: “prometo tentar, mas posso falhar — e aviso formalmente”.
Por que “lançar uma exceção” é descrito nesta aula como um ato de honestidade do objeto, e “tratá-la” como um ato de resiliência do sistema?
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:
double.null ou 0 para sinalizar um erro é uma prática que só adia a descoberta do problema real.throws NotificationException na assinatura de um método é uma forma de tornar explícita uma possível falha do contrato.Dica
double), não a validade semântica do valor.default/static/private trazem comportamento sem quebrar retrocompatibilidadePróxima aula: Polimorfismo — como o compilador aceita múltiplas formas por trás do mesmo contrato.
UNICAMP — Instituto de Computação