1
resposta

Herança x Composição.

Bom dia meus queridos,

Não estou aqui para uma dúvida, mais para uma discussão entre programadores. Passei os últimos 3 dias tentando entender o por que utilizar Composição ao invés de Herança. Desta forma então decidi implementar um projeto do zero sem utilizar Herança. Apenas aplicando os conceitos da composição. A ideia geral seria um ERP e cheguei no seguinte: Classe Empresa

Perceba que criei três models: Endereco, Contato e PessoaJuridica, ou seja, se tiver outras Models que necessitem dos atributos em comum eu simplesmente utilize estes models. Porém, agora acabou criando outra dúvida: Endereco, Contato e PessoaJuridica são gravados no Banco de Dados e não tenho certeza se isso não fere algum pattern de população de dados...

1 resposta

Passei os últimos 3 dias tentando entender o por que utilizar Composição ao invés de Herança

Quando você herda uma classe, existe uma acoplação muito grande entre a classe filha e mãe, e você deve tomar muito cuidado para não violar princípios como o da Substituição de Liskov, por exemplo.

Já com composição, o acoplamento pode ser muito baixo (se você depender de abstrações, ao invés de classes concretas) e você pode ainda encapsular completamente os membros da composição e suas operações, disponibilizando na interface da classe "raiz" métodos que compõem, decoram e delegam para os métodos dos objetos da composição. Assim, os usuários da sua classe "raiz" não precisarãm saber nada sobre os detalhes ou interfaces das classes da composição.

Endereco, Contato e PessoaJuridica são gravados no Banco de Dados e não tenho certeza se isso não fere algum pattern de população de dados

Cada entidade dessa tem a sua propria tabela, correto?