6.1. Classes: tipos abstratos e boas interfaces
Uma classe é um tipo abstrato de dados: interface coerente, implementação escondida.
Resumo
- ADT (tipo abstrato de dados): dados + operações. Trabalhe com entidades do mundo real, não de baixo nível.
- Interface com nível de abstração consistente: tudo ali representa a mesma ideia.
- Saiba qual abstração a classe implementa; ofereça operações em pares (abrir/fechar, ligar/desligar).
- Encapsulamento: dados privados, sem detalhes privados na interface, sem suposições sobre quem chama.
- Evite acoplamento semântico: não dependa de como a classe funciona por dentro, só da interface.
Perguntas-chave
responda de cabeça, depois abraQual vantagem de um ADT?
Esconde detalhes, limita o efeito de mudanças, deixa a interface informativa e permite trabalhar com conceitos do domínio.
O que é uma interface com abstração inconsistente?
Uma interface que mistura operações de ideias diferentes, como uma classe Funcionario que também expõe métodos de lista.
Por que não expor dados membros públicos?
Porque qualquer código pode alterá-los sem controle e a implementação fica presa à forma atual dos dados.
Exercícios de fixação
0/5 respondidas1.
A classe
Funcionarios tem adicionarFuncionario(), removerFuncionario() e também proximoItemDaLista() e primeiroItem(). Qual o problema?2.
Uma classe
Ponto deixa x e y públicos. O que o capítulo recomenda?3.
Qual é a principal vantagem de pensar em tipos abstratos de dados?
4.
O cliente de uma classe chama
salvar() só depois de chamar validar(), porque sabe que salvar() não valida. Isso é:5.
Por que oferecer operações em pares (como
ligar/desligar)?