Dúvida com herança X Composição

5 respostas
jv.nicocelli

Bom dia Pessoal,

Estou desenvolvendo uma aplicação e me deparei com a seguinte situação, imaginem o seguinte senário:

  • Tenho uma super classe chamada Pessoa;
  • Como subclasse da classe Pessoa estão as classes Cliente(PF) e Contato.

Neste senário, o cliente TEM UM Contato, porém o Objeto contato está na mesma árvore de herança que o Cliente.

Ai eu pergunto à vocês, isto é possível?

5 Respostas

drsmachado

Vamos por partes. Um contato sempre será tudo que uma pessoa é? Terá sempre todos os atributos (por exemplo, se quero cadastrar um contato de um cliente, irei exigir o cpf deste contato?).
Creio que esta relação de herança seja um exagero (salvo se o sistema for uma rede social e o contato simbolizar um amigo).
E, independente da relação que haja entre duas classes e uma superclasse em comum, elas podem ter outras relações entre elas, como a composição.

jv.nicocelli

Bom dia drsmachado,

No meu caso o contato sempre será uma pessoa.

Para ser mais claro, o sistema é para uma pizzaria, onde o cliente terá uma pontuação acumulativa por compra.

Dessa forma, é necessário que o pedido seja feito para o titular, independente de quem ligar, para que seja gerada a sua pontuação.

Por exemplo: Eu sou o Cliente(Titular), porém a minha esposa(Contato) poderá ligar para fazer um pedido.

De qualquer forma você já respondeu a minha dúvida, já que as classes podem ter relações entre elas.

Obrigado.

M

nicocelli:
Bom dia Pessoal,

Estou desenvolvendo uma aplicação e me deparei com a seguinte situação, imaginem o seguinte senário:

  • Tenho uma super classe chamada Pessoa;
  • Como subclasse da classe Pessoa estão as classes Cliente(PF) e Contato.

Neste senário, o cliente TEM UM Contato, porém o Objeto contato está na mesma árvore de herança que o Cliente.

Ai eu pergunto à vocês, isto é possível?

Classe endereço também vai na mesma onda…

drsmachado

Na realidade, não vejo essa necessidade.
Contato pode ser uma única String, representando o nome da pessoa.

public class Pessoa{}
//
public class Cliente{
   private List<String> contatos;
  //demais atributos
  //gets e sets
}

Pois, se por acaso o titular for morar em outra cidade temporariamente, as pessoas não participam da promoção?

jv.nicocelli

Pensando por esse lado você está certo.

Obrigado pela ajuda.

Criado 28 de dezembro de 2012
Ultima resposta 28 de dez. de 2012
Respostas 5
Participantes 3