GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Duvida com abstração Pessoa, PessoaFisica, PessoaJuridica, Cliente em um sistema imobiliario


#1

Pessoal estou modelando um sistema para imobiliaria, onde tenho as seguintes condições:

-Um cliente deve ser uma pessoa.
-Um cliente pode ser uma pessoa fisica ou juridica.
-Um cliente pode ser tanto um locador como um locatario.
-O locatario pode ser um locador também e vice versa.

Bem a parte da modelagem que tá pegando é essa, não sei como fazer, a principio, tenho uma classe Pessoa, e mais uma classe PessoaFisica e PessoaJuridica ambas herdando a classe Pessoa, mas não sei como faria a parte do cliente, pois ele pode ser ou juridica como fisica. E ai, alguma sujestão para essa modelagem ?


#2

Para não ter restrição tão forte, faça mais uso de composição! Há situações que composição é mais recomendado, outras herança, e vice-versa.


#3

Cliente não precisa ser um Domínio em si

Ex: quando você for cadastrar um cliente, instancia um objeto do tipo locatário que este pode ser PF ou PJ


#4

Sugestão:

Pessoa
--------------------------
  |                      |
PessoaFisica     PessoaJuridica
--------------     -----------------
  |                      |
LocatarioPF        LocatarioPJ
-------------        -------------
  |                      |
LocadorPF          LocadorPJ

Mas isso depende muito das propriedades que teriam Locador e Locatario.
Você poderia também ter Locatário/Locador como uma interface.


#5

Um cliente podera terá varios imoveis associados a ele, tera imovéis como ele sendo proprietario(no caso ele sera locatario), e podera ter imoveis com ele sendo o locador, como ficaria isso ?


#6

Classes:
Cliente
- nome : String
- imoveisLocator : List
- imoveisLocatario : List

PessoaFisica
- CPF

PessoaJuririca
- CNPJ

Imovel
- proprietario - Cliente
- locator - Cliente

Relacionamentos:
Cliente HAS-A Imovel (1 - *)

PessoaFisica IS-A Cliente

PessoaJuridica IS-A Cliente


#7

Resolvido com a sua sugestão, ficou assim:

--------- Pessoa
-------------- Cliente
------------------- ClientePessoaFisica
------------------- ClientePessoaJuridica

E o cliente podera ter uma lista de imoveis proprietarios, e uma lista de imoveis alugados.

Obrigado pessoal!


#8