1
resposta

Composição X Herança = Abstração Pessoa

Ocorreu uma situação em que não foi possível extender a classe Funcionário para os Tercerizados em virtude dos métodos da Classe herdada não fazerem sentido !

Não poderíamos utilizar uma camada a mais de Abstração ?

Exemplo:

abstract Pessoa ( atributos: nome, cpf)

abstract Funcionario extend Pessoa ( atributos: cargo, salario, dataUltimoReajuste )

class FuncionarioEmpresa extend Funcionario ( metodos { } )

class FuncionarioTercerizado extend Funcionario ( atributo: empresa )

A composição torna o relacionamento das classes 1x1, se um funcionário assumir 2 cargos em uma empresa a composição iria gerar duplicidade ao meu entender.

Essa solução é viável ? Se não for, quais seriam os problemas ?

1 resposta

Oi André,

Seria uma outra alternativa válida, sendo que na verdade não a melhor solução, pois todas vão ter vantagens e desvantagens, cabendo avaliar qual faz mais sentido em cada cenário.

Obs: Existe uma boa prática de design que diz favoreça a composição em relação à herança, pois a herança em muitos projetos acaba trazendo alguns efeitos colaterais e problemas no código.

Bons estudos!