Во-первых, я бы сказал, что ваш код будет выглядеть лучше, если вы сделаете
Car b = new Car();
b.setEngine(engine);
выглядел бы лучше.
Тогда что касается вашего агрегирующего мышления, да, вы правы. "Как-то". Но это если вы действительно разбиваете свои "объекты" на мелкие части. Я имею в виду, будет ли у вас машина, если у нее нет двигателя? :)
На самом деле я бы увидел машину такой, какая она есть, я бы скорее подумал, что это совокупность Машины и Водителя. Если автомобиль поврежден, у вас есть водитель. И даже если Водитель умрет, у вас все равно будет Машина.
От uml
об агрегации:
Агрегация — это вариант ассоциативного отношения «имеет»; агрегация более специфична, чем ассоциация. Это ассоциация, которая представляет отношения часть-целое или часть-отношения. Как тип ассоциации, агрегация может быть названа и иметь те же украшения, что и ассоциация. Однако агрегация не может включать более двух классов; это должна быть бинарная ассоциация.
Агрегация может происходить, когда класс является коллекцией или контейнером других классов, но содержащиеся в нем классы не имеют сильной зависимости жизненного цикла от контейнера. Содержимое контейнера не уничтожается автоматически при уничтожении контейнера.
состав/агрегация
Еще одно отношение, которое путают с агрегацией, — это состав. Когда агрегация описывает отношение «имеет», композиция выполняет отношение «содержит/часть». Как я уже сказал, обычно двигатель является частью нужного вам объекта автомобиля (состава). Объект Car имеет Driver (агрегацию).
person
MrSimpleMind
schedule
23.03.2015