Modelagem "é-um"

Ola pessoal… eu tenho uma superclasse chamada Pessoa e duas classe q a extendem: Cliente e Fornecedor. agora q vem a questao: um cliente pode ser um fornecedor e vice-versa. Como eu modelo essa situação?

Olá julio,

Acho que a sua modelagem está correta… a questão é como os outros objetos verão seus clientes e fornecedores.

Eu digo que todos os clientes e fornecedores sao pessoas, o que vai diferenciar é onde voce está usando as classes…

Por exemplo, em uma emissão de nota fiscal de venda, voce usará a pessoa como um cliente, o contrário será num relatorio de compras por exemplo, que a pessoa será um fornecedor.
Tá certo, isso voce já sabe, agora imagine como isso ficaria no banco de dados:

Existem algumas possibilidades:

  • Ter uma tabela pessoa, contendo todos os dados comuns dass pessoas e todos os dados de clientes e fornecedores, ficaria um tabelão só. Na hora de carregar para seu objeto, carregaria apenas os dados interessantes.

  • Ter tres tabelas, uma de pessoas, uma de clientes, e outra de fornecedores e assim fazendo uma modelagem de um para muitos, ou um para um.

Ah e mais uma coisa: o “pode ser” pode se encaixar no conceito de herança multipla, que não se aplica em java…

Espero ter ajudado

:thumbup: