У меня возник вопрос о моделировании ассоциаций между классами и интерфейсами. Насколько я знаю, интерфейс указывает, что может сделать объект; без обеспечения состояния или функциональности (When to use an interface instead of an abstract class and vice versa?). Кроме того, моя книга об OOAD (объектно-ориентированное моделирование и дизайн Джеймса Рубога) гласит, что ассоциация описывает группу связей с общей структурой и общей семантикой между экземплярами объектов.Ассоциация между классами и интерфейсами
Теперь предположим, что у меня есть следующие объекты:
1) ИКАР Интерфейс: Определяет операции автомобиль может сделать
2) BMW: Класс, который реализует интерфейс ИКАР
3) IWheel: интерфейс определения возможностей колеса
4) LuxuryWheel: класс, который реализует интерфейс IWheel
сейчас , чтобы моделировать отношения между BMW и LuuryWheel, какие из следующих, по вашему мнению, правильны, с точки зрения дизайна? Я поделился своими мыслями по каждому из них.
A) Создайте связь между ICar и Iwheel. Класс BMW может создавать конкретные экземпляры класса LuxuryWheel. Это очень гибкий, но возможности парного автомобиля с возможностями Wheel. Кроме того, определение ассоциации говорит, что отношение между экземплярами.
B) Создайте связь между классом BMW и классом LuxuryWheel. Решает конкретную проблему; но плотно соединяет BMW с роскошными колесами
C) Создайте связь между классом BMW и интерфейсом Iwheel. Таким образом, BMW может использовать любой тип, который реализует интерфейс IWheel.
Вариант C) выглядит лучше для меня. Пожалуйста, поделитесь своими мыслями.
+1 Вы можете добавить определенную ассоциацию между BMW и LuxuryWheel и добавить связь между абстрактной ассоциацией и вашей ассоциацией. <> Это показывает, что ваше отношение на самом деле такое же отношение, как указано между интерфейсами, но оно было доработано до конкретных реализаций BMW и LuxuryWheel –