Heranca ou Interfaces?

2 respostas
B

Eu sei que isso depende muito, mas, de modo geral, o que vocês recomendam: usar mais herança ou interfaces no desenvolvimento de sistemas OO? Li que há alguns casos de herança que até quebram o encapsulamento e, por outro lado, com interfaces nós repetimos muito código. E aí o que vocês acham?

2 Respostas

pcalcado

Mais uma vez: Depende.

Depende do caso, depende da arquitetura,d epende dos requisitos não funcionais,d epende do r4equisito funcional… emd esenvolvimento de software existem poucas coisas que são resolvidas com receitas de bolo, você vai ter que conhecer muito bem um e outro para tomar decisões acertadas.

Vamos ao exemplo de um software que eu trabalhava hoje a tarde. Temos uma entidade ‘Tarefa’. Legal, meu sistema vai manipular tais coisas.

Acontece que a tarefa em questão pode ser gerenciada por um outro módulo do meu sistema ou pode, na verdade, ser gerenciada por outro sistema totalmente diferente (um issue tracker como o Bugzilla) através de um objeto proxy (que ‘finge’ que é a tarefa mas na verdade vai entrar em contato com o Bugzilla para realizar os comandos).

Meu sistema pensa em Tarefas como coisas com início, fim, status e assignada para alguém. Este é o contrato, desde que algo siga este contrato não importa sua implementação. Ótima candiata para uma interface.

Sendo ela uma interface, eu crio uma classe TarefaLocal que é a minha implementação de tarefa, e um TarefaAdapter que é quem finge que é uma tarefa do Bugzilla. Ambas implementam a interface e são tratadas da mesma forma pelo sistema.

Caso eu descubra que preciso de uma hierarquia mais refinada para TarefaLocal, digamos TarefaLocalPrioritaria e Simples, eu posso criar subclasses. Considerando que não importa qual seja a subclasse de Local elas mantêm algumas características (como ter data de início e fim) eu deixo TarefaLocal como classe abstrata contendo a lógica comum à suas filhas e nas filhas eu coloco a lógica específica de cada uma apenas.

B

Ahhh… valeu clareou mais agora. Você tem alguma ideia de um sisteminha que use herança e interfaces para que eu possa praticar ?
Valeu.

Criado 31 de maio de 2006
Ultima resposta 1 de jun. de 2006
Respostas 2
Participantes 2