UML - Classes Pessoa (Física e Jurídica), Fornecedor, Usuário, Motorista e Cliente
22 respostas
rgildoaraujo
Galera,
Uma dúvida me veio quando estou tentando modelar um sistema para uma transportadora.
Modelando, encontrei as seguintes classes: Fornecedor, Usuário do sistema, Motorista e Cliente. Esse cliente pode ser uma Pessoa Física ou Jurídica. O Fornecedor é somente Pessoa Jurídica. Até aqui tudo ok!
Como ficaria modelada o meu Diagrama de Classes?
Eu teria que criar uma classe Pessoa e duas subclasses: PessoaFisica e PessoaJuridica? Se sim, existiria a classe Cliente e Fornecedor já que um Cliente pode ser tanto PessoaFisica quanto PessoaJuridica e um Fornecedor só PessoJuridica?
E Usuário e Motorista? Extenderiam a classe Pessoa?
dando uma olhada rapida, pude perceber que vc pode criar sim duas classes PessoaFisica e PessoaJuridica. Essas duas classes herdariam da classe Cliente e PessoaJuridica herdaria mais ainda de Fornecedor. E Usuário e Motorista, tambem com atributos distintos, extenderiam a classe Pessoa.
Eh isso aí. Se alguem quiser dar pontos de vista. :lol: to com pressa agora, depois posso analisar melhor
Calvin
Minha opinião:
Existe uma classe Pessoa, e outras duas classes PessoaFisica e PessoaJuridica, até aqui ok né?!
A classe Cliente extende a classe Pessoa.
A classe Usuario extende a classe PessoaFisica.*
A classe Fornecedor extende a classe PessoaJuridica
A classe Motorista extende a classe PessoaFisica (Nunca vi nenhuma empresa dirigindo um caminhão, HUAHuahUHAUha)
Apartir das informações que voê deu, acredito que isso seja o correto!
Modelagem depende muito do contexto, geralmente você consegue descobrir suas classes básicas, como estas, apartir de um descritivo do sistema entregue pelo Cliente ou mesmo por você.
Isso depende muito de como é o usuário do seu sistema, se for um usuário normal a afirmação “Usuário é uma PessoaFisica” está correta, porém aqui na minha empresa temos casos que algums usuários de sistema são outros sistemas ou mesmo algumas empresas (apartir de um webService) logo colocamos Usuario extendendo Pessoa.
Qualquer coisa retorne!
W
WilliamSilva
Olá rgildo,
estou tentando modelar um sistema para uma transportadora.
Se é para transportadora então deve transportar algo e se existe motorista então ele deve dirigir algo como:
-Caminhão.
-Van.
-Veículo leve ou pesado
-etc.
Um rabisco do que eu imagino ser o dominio de uma transportadora pelo que eu entendi da discussao ate agora, usando Graphviz:
u [label='Usuario']
p [label='Pessoa']
pf [label='Fisica']
pj [label='Juridica']
f [label='Fornecedor']
c [label='Cliente']
m [label='Motorista']
v [label='Veiculo']
ca [label='Caminhao']
va [label='Van']
mt [label='Motocicleta']
t [label='Transporte']
u -> p [label='is']
c -> p [label='is']
m -> pf [label='is']
pf -> p [label='is']
pj -> p [label='is']
f -> pj [label='is']
m -> v [label='has']
mt -> v [label='is']
ca -> v [label='is']
va -> v [label='is']
t -> u [label='has']
t -> m [label='has']
t -> f [label='has']
t -> c [label='has']
Voce pode usar o AjaxGraphviz pra ver o diagrama, ou altera-lo, em http://ashitani.jp/gv/ ;)
David
Ei, gostei desse Graphviz! Muito legal mesmo!
Luca
Olá
Ô loco :lol:
CV, muito legal esta pinóia.
[]s
Luca
W
WilliamSilva
cv wrote.:
Voce pode usar o AjaxGraphviz pra ver o diagrama
Muito legal…
cv1
Estrelinha que eh bom, nada ne?
Edufa
Eu uso uma outra abordagem, num sistema onde haviam vários papeis.
Pessoa (abstrata), PessoaFisica e PessoaJuridica.
Role (interface)
Pessoa possui uma lista de roles q ela pode assumir
Motorista, Colaborador, Cliente, Fornecedor, Usuário, etc (todos implementam a interface Role) e cada um teria seus atributos particulares.
Não sei se com essa abordagem acaba complicando mais, mas funcionou bem.
W
WilliamSilva
cv wrote.:
Estrelinha que eh bom, nada ne?
Só se pagar U$$ 50,00 Ok… :roll:
agodinho
CV, desculpe a ignorância mas qual browser vc usou? (valendo uma estrelhinha)
Tentei aqui com o exfoder 6 e 7 e nada …
Fui na raiz da url que vc postou pra ver alguma dica mas o site é japonês …
David
No firefox funciona que é uma beleza…
agodinho
Valeu!!! Já ajudou …
fcoury
Cara,
No meu firefox não tá indo, o que tem que ser feito? Só colar a parada do lado esquerdo?
Help!!!
cv1
…e apertar enter em qqer lugar da textarea
Ou vc tb pode baixar o graphviz, eh um software muito bom, e tb velho de guerra. Tem pra todos os sistemas operacionais e tal.
rodrigoy
Coisa de japonês…
rbrugnollo
hehehe estou resgatando o tópico…
Edufa:
Eu uso uma outra abordagem, num sistema onde haviam vários papeis.
Pessoa (abstrata), PessoaFisica e PessoaJuridica.
Role (interface)
Pessoa possui uma lista de roles q ela pode assumir
Motorista, Colaborador, Cliente, Fornecedor, Usuário, etc (todos implementam a interface Role) e cada um teria seus atributos particulares.
Não sei se com essa abordagem acaba complicando mais, mas funcionou bem.
Cara… teria como você me passar este diagrama de classes pra eu ver como você implementou…
sou novato em OO e estou MTO perdido com o diagrama de classes para pessoa hehe…
eu não consigo entender porque pessoafisica e juridica são especializações de Pessoa… elas não tem atributos em comum(nome não é o mesmo… um é nome… e outro é nomeFantasia… e pelo que li… pode-se colocar atributos com nome iguais apenas quando representam a MESMA coisa…)
bom… se puder me enviar esse seu por e-mail(o que me ajudaria MTO!!HEHE)… meu mail é [email removido]
Y
YvGa
Eu implementei como pattern state. A classe pessoa tem um tipo pode ser do fisica ou juridica. Nos casos em q elas variam pouco (cliente de loja, prestador de servico) ele funciona bem.
Em casos mais complexos, em q vc precise de muitas informacoes especificas de pessoa fisica ou juridica, eu acho q elas nao deveriam ter uma interface ou classe abstrata comum.
Essa ideia dos roles tbm achei interessante.
Y
YvGa
duplicado
Kenobi
YvGa:
Eu implementei como pattern state. A classe pessoa tem um tipo pode ser do fisica ou juridica. Nos casos em q elas variam pouco (cliente de loja, prestador de servico) ele funciona bem.
Em casos mais complexos, em q vc precise de muitas informacoes especificas de pessoa fisica ou juridica, eu acho q elas nao deveriam ter uma interface ou classe abstrata comum.
Essa ideia dos roles tbm achei interessante.
Realmente não vai funcionar bem, pq o State prevê que suas implementações compartilham os métodos da Interface e nesse caso, você vai querer ter métodos dferenciados à cada um.
Poderia até tentar unificar, como CNPJ - CPF num método comum, mas começa a ficar meio POG …
Y
YvGa
Realmente não vai funcionar bem, pq o State prevê que suas implementações compartilham os métodos da Interface e nesse caso, você vai querer ter métodos dferenciados à cada um.
Poderia até tentar unificar, como CNPJ - CPF num método comum, mas começa a ficar meio POG … [/quote]
Exatamente isso que acontece.
Funciona bem pq eh simples. Por isso q eu acho q qdo precisa muita informacao especifica PessoaFisica e PessoaJuridica nao deveriam implementar a mesma interface.
thiagohnunes
Galera, estou passando por um problema parecido. Tenho a classe Pessoa e tenho a classe Fisica e Juridica que herdam de Pessoa. No domínio que estou representando, um Fornecedor pode ser uma Pessoa Física ou Pessoa Jurídica. Sendo assim, como eu modelaria?