Como posso desenhar uma aula chamada alergia?

requisito: conceber uma classe chamada alergia que forneça informação sobre a alergia de um doente. por exemplo, quem notificou a alergia(doente/médico/familiar), os diferentes sintomas da alergia que são detectados, a gravidade, o método que retorna quando essa alergia foi detectada nesse doente.

Estou a pensar em algo assim.
public abstract class Allergy{
    private String reporter;
    private String symptoms;
    private int timeReported;
    private int severity;

//Higher the number, higher the severity

    public Allergy(String reporter, String symptoms, int timeReported, int severity){
        this.reporter=reporter;
        this.symptoms=symptoms;
        this.timeReported=timeReported;
        this.severity=severity;
    }

    public void setReporter(String reporter){
        this.reporter=reporter;
    }

    public void setSymptoms(String symptoms){
        this.symptoms=symptoms;
    }

    public void setSeverity(int severity){
        this.severity=severity;
    }

    public void setTimeReported(int timeReported){
        this.timeReported=timeReported;
    }

    public String getReporter(){
        return reporter;
    }

    public String getSymptoms(){
        return symptoms;
    }

    public int getSeverity(){
        return severity;
    }

    public int getTimeReported(){
        return timeReported;
    }
}
Este é um bom design da turma? Há alguma maneira de melhorar o design? Ou alguém tem uma implementação melhor?

Tenho de ser capaz de explicar tantos conceitos OPA. Posso fazer uso de qualquer outro conceito OOP aqui além de Abstrato, encapsulação e herança que eu serei capaz de usar tendo o projeto atual em minha mente?

Author: Thomas Kilian, 2015-03-26

3 answers

Que tal usar um enum para gravidade (baixo, alto, médio) e usar um enum para o repórter(paciente, médico, familiar, outro) e usar HashSet para sintomas.

 1
Author: Rani, 2016-06-03 19:49:30

A melhor maneira de ter alergia e paciência. O paciente tem alergia. No entanto, o paciente pode ter alergias, então você pode adicionar a estrutura de dados como arrayList de alergia.

 1
Author: Anand Kulkarni, 2016-06-03 20:20:46

Além dos erros de sintaxe mencionados no comentário, e assumindo que você não deve usar herança, o conceito que você está faltando mais são interfaces. Então o que você poderia incluir uma doença de interface (chamada IDisease) e deixar a classe de alergia implementá-la, ou seja

     public interface IDisease{
          void setReporter(String reporter);
          //other methods
        }

        }

        public class Allergy implements IDisease{
public Allergy(String reporter, String symptoms, int timeReported, int severity){
        this.reporter=reporter;
        this.symptoms=symptoms;
        this.timeReported=timeReported;
        this.severity=severity;
        }

        public void setReporter(String reporter){
        this.reporter=reporter;
        }

        public void setSymptoms(String symptoms){
        this.symptoms=symptoms;
        }

        public void setSeverity(int severity){
        this.severity=severity;
        }

        public void setTimeReported(int timeReported){
        this.timeReported=timeReported;
        }

        public String getReporter(){
        return reporter;
        }

        public String getSymptoms(){
        return symptoms;
        }

        public int getSeverity(){
        return severity;
        }

        public int getTimeReported(){
        return timeReported;
        }
        }
A utilização de uma interface pode justificar-se no caso de, mais tarde, pretender escrever um algoritmo para analisar todos os tipos de doenças (incluindo alergias) e manter o algoritmo dissociado a partir dos detalhes reais de uma doença particular.
 0
Author: Ueli Hofstetter, 2015-03-26 02:05:25