Как получается, что этот класс в композиции является общим?

Я знаю, что в UML композиция означает, что один класс в основном включает в себя другой с зависимостью времени жизни, т. Е. Когда этот класс уничтожается, составной класс также уничтожается. В отличие от агрегации, класс не является общим. Но потом я увидел - на конференции разработчиков системы это:

[A Plane]<>COMPOSITION---------[Passenger]0,1--------<>[Seat] 

Это будет означать, что если самолет уничтожен, все пассажиры будут уничтожены (пока это правильно), НО пассажиры тогда находились в агрегации (или ассоциации) по отношению к месту, где в каждом наборе может быть 0 или 1 пассажир. Но в этом случае разве нет разделения пассажиров? В действительности с современными языками (например, C#), если только Seat содержит ссылку на пассажира, он все равно будет существовать, независимо от того, был ли уничтожен класс Plane.

1 ответ

Решение

Лучшим выражением отношений между этими классами было бы то, что места (а не пассажиры) являются частью состава самолета, а пассажиры связаны с местами. Объединение пассажиров с местами технически выражало бы более сильные отношения, но связь, кажется, является более естественными (то есть "реальными") отношениями. Когда самолет "разрушен", то же самое происходит и с местами, но пассажиры "живут", как и их связи с другими частями модели, такими как место в другом самолете на другом участке маршрута полета.

Другие вопросы по тегам