Comment puis-je concevoir une classe nommée allergie?


Exigence: concevoir une classe appelée allergie qui fournit des informations sur l'allergie d'un patient. par exemple, qui a signalé l'allergie(patient/médecin/parent), différents symptômes de l'allergie détectés, gravité, méthode qui revient quand cette allergie a-t-elle été détectée chez ce patient.

Je pense à quelque chose comme ceci:

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;
    }
}

Est-ce une bonne conception de la classe? Y a-t-il un moyen d'améliorer la conception? Ou faut-il une meilleure mise en œuvre?

Je dois être capable d'expliquer autant de concepts de POO. Puis-je utiliser n'importe quel autre concept de POO ici en dehors de l'abstrait, de l'encapsulation et de l'héritage que je pourrai utiliser en ayant le design actuel dans mon esprit?

Author: Thomas Kilian, 2015-03-26

3 answers

Que diriez-vous d'utiliser une énumération pour la gravité(faible, élevée, moyenne) et d'utiliser une énumération pour le rapporteur(patient, médecin, membre de la famille, autre) et d'utiliser HashSet pour les symptômes.

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

Meilleure façon d'avoir Pojo d'allergie et patient. Le patient a une allergie. Cependant; le patient peut avoir des allergies, vous pouvez ajouter une structure de données comme arrayList of allergy.

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

En dehors des erreurs de syntaxe mentionnées dans le commentaire, et en supposant que vous ne devriez pas utiliser l'héritage, le concept qui vous manque le plus sont les interfaces. Donc, ce que vous pourriez inclure une maladie d'interface (appelée IDisease) et laisser la classe d'allergie l'implémenter, c'est-à-dire

     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;
        }
        }

L'utilisation d'une interface ici pourrait être justifiée au cas où plus tard vous voudriez écrire un algorithme pour analyser tous les différents types de maladies (y compris les allergies) et souhaitez garder l'algorithme découplé de les détails réels d'une maladie en particulier.

 0
Author: Ueli Hofstetter, 2015-03-26 02:05:25