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

21 Авг 2019 в 07:03
213 +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 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир