Nome é algo que repete muito, poderíamos ter uma classe de dominio chamada Pessoa, como classe Pai e depois cada entidade (Medico, Paciente, atendente) implementa suas caracteristicas?
Nome é algo que repete muito, poderíamos ter uma classe de dominio chamada Pessoa, como classe Pai e depois cada entidade (Medico, Paciente, atendente) implementa suas caracteristicas?
Olá, Rictonietti.
Tudo bem?
Sim, você pode criar uma classe de domínio chamada Pessoa
e utilizá-la como uma classe pai para outras entidades como Medico
, Paciente
e Atendente
. Isso pode ajudar a evitar a repetição de atributos comuns, como nome
, endereço
, telefone
, etc. Vamos ver um exemplo prático de como isso poderia ser implementado:
public abstract class Pessoa {
private String nome;
private String cpf; // ou outro identificador único
private String endereco;
private String telefone;
// Construtor, getters e setters
public Pessoa(String nome, String cpf, String endereco, String telefone) {
this.nome = nome;
this.cpf = cpf;
this.endereco = endereco;
this.telefone = telefone;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}
E então, você pode criar as classes específicas para Medico
, Paciente
e Atendente
que herdam de Pessoa
:
public class Medico extends Pessoa {
private String crm;
public Medico(String nome, String cpf, String endereco, String telefone, String crm) {
super(nome, cpf, endereco, telefone);
this.crm = crm;
}
public String getCrm() {
return crm;
}
public void setCrm(String crm) {
this.crm = crm;
}
}
public class Paciente extends Pessoa {
private String planoSaude;
public Paciente(String nome, String cpf, String endereco, String telefone, String planoSaude) {
super(nome, cpf, endereco, telefone);
this.planoSaude = planoSaude;
}
public String getPlanoSaude() {
return planoSaude;
}
public void setPlanoSaude(String planoSaude) {
this.planoSaude = planoSaude;
}
}
public class Atendente extends Pessoa {
private String turno;
public Atendente(String nome, String cpf, String endereco, String telefone, String turno) {
super(nome, cpf, endereco, telefone);
this.turno = turno;
}
public String getTurno() {
return turno;
}
public void setTurno(String turno) {
this.turno = turno;
}
}
Com essa estrutura, você consegue reutilizar atributos comuns e métodos nas classes específicas, facilitando a manutenção e a evolução do código. Além disso, isso segue os princípios do Domain-Driven Design, onde você modela o domínio da aplicação de forma clara e coesa.
Espero ter ajudado e bons estudos!