1
resposta

Poderiamos ter um Dominio Pessoa

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?

1 resposta

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!