Как лучше решить эту ООП задачу? Есть классы: University и Professor.
University содержит множество экземпляров Professor.
У Professor должен быть метод getUniversity, возвращающий University.
Как можно правильно по ООП решить эту задачу? При этом, Professor не должен хранить в себе ссылку на экземпляр университета, ведь это агрегация, и профессор может существовать в отсутствие университета, поэтому ссылка на университет может быть всегда пустой. Более того, нарушается принцип SOLID (OCP): если в будущем мы захотим добавить College и профессор должен будет работать сразу в двух учебных заведениях.

21 Авг 2019 в 07:03
236 +1
1
Ответы
1

Для решения этой задачи можно использовать принцип инверсии зависимостей (Dependency Inversion Principle). Для этого можно создать интерфейс, который будет представлять учебное заведение (например, интерфейс Institution), а затем классы University и College будут реализовывать этот интерфейс. Professor будет иметь метод getInstitution(), который будет возвращать объект, реализующий интерфейс Institution.

Пример решения задачи:

public interface Institution {
// методы учебного заведения
}
public class University implements Institution {
// реализация методов университета
}
public class College implements Institution {
// реализация методов колледжа
}
public class Professor {
private Institution institution;
public Professor(Institution institution) {
this.institution = institution;
}
public Institution getInstitution() {
return institution;
}
}

Таким образом, используя интерфейс Institution, мы можем легко добавить другие учебные заведения в будущем без изменения класса Professor. Кроме того, Professor не хранит ссылку на конкретное учебное заведение, что позволяет ему работать с разными типами учебных заведений.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир