Dúvida - POO - Herança

Amigos,

Em relação a herança estou com um problema.

Existe a classe pai “Pessoa”, eu gostaria de criar mais 2 sub-classes “Cliente” e “Funcionário”. Levando em consideração que um funcionário também pode ser um cliente eu não consigo por herança simples, pensei em utilizar o padrão Decorator essa ideia prossegue ou existe uma outra alternativa?

Obrigado!

Prefira composição à herança.

Me parece que você tem uma classe chamada Usuario (que é um usuário do sistema) e ele tem 2 papéis distintos (Cliente ou funcionário). Portanto, a hierarquia correta seria:

public class Papel { }

public class Cliente extends Papel { }

public class Funcionario extends Papel { }

public class Usuario { private List<Papel> papeis; }

Joshua Bloch Top !

Essa dica não é do Joshua Bloch, mas do Erich Gamma, criador um dos criadores do livro de design patterns (e do Eclipse, e do JUnit).

Vale muito a pena ler essa entrevista aqui que, embora seja de 2005, permanece muito atual:
http://www.artima.com/lejava/articles/designprinciples4.html

Puts pra mim era HAUSHUSHSUA.

Vlw por compartilhar a entrevista achei legal ele explicando.

Obrigado Vini :wink:

Eu ouvi dizer uma historia que o Erich Gamma e Kent Beck criaram o Junit quando estava no avião indo para uma palestra é verdade ?
Porque achei bem legal a história que me contaram KKKKK

[quote=lucasvvasconcelos]Eu ouvi dizer uma historia que o Erich Gamma e Kent Beck criaram o Junit quando estava no avião indo para uma palestra é verdade ?
Porque achei bem legal a história que me contaram KKKKK[/quote]

Não sei dizer. Talvez a idéia tenha surgido lá, mas tenho certeza que teve muito suor na camisa posterior. :slight_smile:
Se você gostou dessa entrevista no Artima, vale a pena ler o resto da série e também as entrevistas com o criador do C#, o Anders Heilsberg. Tudo no mesmo site.

Vlw Vini eu vou ler tudo :wink: