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

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

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

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


person John V    schedule 06.11.2013    source источник


Ответы (1)


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

person BitMask777    schedule 06.11.2013
comment
Так не нарушает ли это принцип композиции? Потому что это 1) общие 2) жизни после уничтожения составного класса. Как это может быть правильно? Но на конференции системных проектировщиков.. Не понимаю. Было так - Самолет состоит из пассажиров и каждому пассажиру соответствует одно место (или нет - 0..1) - person John V; 06.11.2013
comment
Да, я согласен с вами. Я считаю, что это неправильная модель. Самолет не состоит из пассажиров... пассажиры связаны с ним только через ассоциацию с местами. Одна из причин, по которой случаются подобные ошибки моделирования, заключается в том, что люди забывают привязывать свою модель к реальному миру. Модель должна выражать реальные, естественные отношения. Думаю, мораль этой истории такова: не верь всему, что слышишь на конференции :-) - person BitMask777; 07.11.2013