Dúvida UML (Classe Abstrata ou Interface)

Engenharia de Software

Modelagem

12/09/2014

Pessoal, estou iniciando a documentação UML de um sistema relativamente simples: Cadastro de Entidades (Clientes, Fornecedores, Representantes e Transportadoras), e um Calendário.

A minha dúvida está com relação a melhor maneira, ou a mais recomendada para a montagem das classes de Entidades, se devo fazê-la como uma Classe Abstrata, ou se devo ter uma Interface "Entidade"?

Um exemplo simplificando:
Cliente - teria Nome, Apelido, CPF_CNPJ
Fornecedor - teria Nome, Apelido, CPF_CNPJ, Classificação
Representante - teria Nome, Apelido, CPF_CNPJ, Comissão
Transportadora - teria Nome, Apelido, CPF_CNPJ, Código_ANP

Opção 1:
Classe Entidade (Abstrata) - teria: Nome, Apelido, CPF_CNPJ
Classe Cliente (herda Entidade)
Classe Fornecedor (herda Entidade) - teria adicionalmente: Classificação
Classe Representante (herda Entidade) - teria adicionalmente: Comissão
Classe Transportadora (herda Entidade) - teria adicionalmente: Código_ANP

Opção 2:
Interface Entidade: teria Nome, Apelido, CPF_CNPJ
Classe Cliente (inclui Entidade)
Classe Fornecedor (inclui Entidade) - teria adicionalmente: Classificação
Classe Representante (inclui Entidade) - teria adicionalmente: Comissão
Classe Transportadora (inclui Entidade) - teria adicionalmente: Código_ANP

Aproveitando os exemplos acima, CPF_CNPJ imaginei que poderiam ser Interfaces (Pessoa_Juridica, Pessoa_Fisica), mas sinceramente nem faço ideia de como seria a lógica disso na programação/banco, alguma sugestão?

No Calendário, eu posso referenciar um compromisso com qualquer uma das Entidades (Cliente, Fornecedor, Representante, Transportadora), o relacionamento dela será com a Classe Entidade ou as "Sub-Classes" (Cliente, Fornecedor, Representante, Transportadora)?

Desculpem qualquer falha gritante ou se ficou confuso...

Obrigado!
Daniel Duarte

Daniel Duarte

Curtidas 0
POSTAR