Как я могу создать класс под названием аллергия?

1

Требование: разработать класс с названием аллергия, который предоставляет информацию об аллергии пациента. например, кто сообщил об аллергии (пациент/врач/родственник), различные симптомы обнаруженной аллергии, степень тяжести, метод, который возвращается, когда была выявлена аллергическая реакция у этого пациента.

Я думаю о чем-то подобном:

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

Это хороший дизайн класса? Есть ли способ улучшить дизайн? Или кто-то имеет лучшую реализацию?

Я должен уметь объяснять так много концепций ООП. Могу ли я использовать любую концепцию ООП здесь, кроме абстрактных, инкапсуляции и наследования, которые я смогу использовать, имея в виду текущий дизайн?

  • 1
    Конечно. Нижний регистр p для public . И, возможно, timeReported может быть Date (если это Java 7 или ниже) или Instant (если это Java 8) вместо int .
  • 1
    Этот вопрос, кажется, больше подходит для Code Review, потому что он запрашивает мнения о рабочем коде. Это не совсем подходит для переполнения стека, потому что оно не имеет явной проблемы, которую можно решить.
Показать ещё 1 комментарий
Теги:
class
oop
design

3 ответа

1

как об использовании перечисления для серьезности (низкий, высокий, средний) и использования перечисления для репортера (пациента, врача, члена семьи, другого) и использования HashSet для симптомов.

1

Лучший способ получить Pojo от аллергии и пациента. У пациента есть аллергия. Однако; пациент может иметь аллергию, тогда вы можете добавить структуру данных, такую как arrayList аллергии.

0

Помимо синтаксических ошибок, упомянутых в комментарии, и предполагая, что вы не должны использовать наследование, наиболее понятной вами концепцией является интерфейс. Итак, что вы могли бы включать в себя интерфейс Disease (называемый IDisease) и позволить классу Allergy реализовать его, т.е.

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

Использование интерфейса здесь может быть оправдано, если позже вы хотели бы написать алгоритм для анализа всех различных видов заболеваний (включая аллергии) и хотели бы, чтобы алгоритм был отделен от фактических данных о конкретном заболевании.

  • 0
    Кажется, нет никаких причин для этого. (Возможно, вам следует объяснить, почему вы считаете это хорошей идеей.)
  • 0
    Я могу использовать любые концепции ООП здесь. Мне жаль, что я не был ясно в требованиях. Я упомянул, что используя мой дизайн, я уже реализовал абстракцию, наследование (другие дочерние классы, такие как кожная аллергия, аллергия на глаза или что-то еще, что могло бы расширить или унаследовать эту абстрактную аллергию класса) и инкапсуляцию (делая переменные приватными). Я спрашивал, могу ли я использовать какие-либо другие концепции в моем текущем проекте, чтобы сделать его лучше? Помимо синтаксической ошибки, вы думаете, мой текущий дизайн достаточно хорош? заранее спасибо
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню