Seguinte galera. Tenho um senário de uma classe genérica e suas especializações. Conforme imagens em anexo. Tenho um combo de tipos de reclamantes para preencher. A pergunta é: Qual classe ponho o método para me retornar os tipos de reclamantes? A classe reclamante não deveria me listar apenas os reclamantes propriamente ditos?


Generalização de clases
5 Respostas
Mas você não tem uma classe de TipoReclamante??
Criar a classe TipoReclamante, talvez fosse um boa forma. Acho que colocar em uma das quatro classes que você já criou não seria uma boa idéia.
Imagine que Reclamante é uma classe que representa o reclamante físico mesmo, ou seja, por que um Professor/Aluno/Funcionario deve ter conhecimento dos TipoReclamante existentes? Da mesma forma por que novos Reclamante deveriam ter esta informação? Isto é mais cabível a uma classe TipoReclamante. Esta TipoReclamante conteria uma lista de Reclamante, por exemplo.
A melhor forma de você implementar isso, é com você (como usuário/cliente/solicitante da aplicação) definindo o real comportamento do problema.
Se for desta forma não compensa ter uma especialização da classe reclamante.
A única coisa que diferencia cada um deles é o tipo de identificação, ou seja, o professor tem funcional, o aluno tem matrícula e o funcionário tem login no sistema.
Pelo que entendi do que você mostrou , voce poderia modelar assim :
Reclamante(transforme numa classe abstrata)
codReclamante(PK)
Nome
Telefone
e-mail
datCodRec
PRofessor
codReclamante(FK com codReclamante no Reclamante)
identificacao(PK)
Aluno
codReclamante(FK com codReclamante no Reclamante)
Matricula(PK)
Funcionario
codReclamante(FK com codReclamante no Reclamante)
Login(PK)
seria um modelo mais normalizado.
Nesse caso , você poderia descobrir o tipo de reclamante pegando o instanse of da classe por exemplo.