2016-06-07 9 views
1

Я читал учебник по диаграммам классов UML, и у меня проблемы с пониманием классов классов и почему этот класс MileageCredit не является частью класса FrequentFlyer в приведенном ниже примере (взято из рисунка 11 учебника here):Как определить подходящую реализацию классов UML-ассоциаций?

enter image description here

Предполагая, что это взаимно однозначное соответствие между FrequentFlyer и MileageCredit (если человек имел два FrequentFlyer членства они все еще имеют разные номера frequentFlyerNumber), то я бы просто положить эти baseMiles и bonusMiles свойства в FrequentFlyer Сам класс.

Не могли бы вы объяснить, почему это неправильно?

+0

Это не имеет никакого отношения к случаю использования. Пожалуйста, измените свою тему соответственно. – Ister

+0

Спасибо, надеюсь, что название стало ясно сейчас – Bendy

+0

Да, теперь это намного яснее. – Ister

ответ

2

MileageCredit - это AssociationClass, что означает, что это одновременно ассоциация (linking) Flight и FrequentFlyer) и класс, который описывает эту Ассоциацию. Этот факт изображен пунктирной линией, соединяющей класс и ассоциацию. Обратите внимание, что в соответствии с спецификацией UML эти класс и ассоциация создают один объект.

В вашем примере есть Ассоциация (которая называется MileageCredit) между FrequentFlyer и Flight. Вы можете предположить, что это показывает Flight by FrequentFlyer. Что касается этой Ассоциации, вам нужна дополнительная информация (количество премиальных и бонусных миль, которые присуждаются FrequentFlyer для этого рейса), эта ассоциация имеет этот дополнительный класс, описывающий эту информацию.

Если вы создали baseMiles и bonusMiles в FrequentFlyer, которые не имели бы абсолютно никакого отношения к Ассоциации - это была бы только информация об общих баллах, присужденных FrequentFlyer.

+0

Обратите внимание, что на уровне кода MileageCredit, вероятно, станет либо классом, принадлежащим FrequentFlyer, либо ассоциацией с Flight или отдельным классом с ассоциациями как с Flight, так и с FrequentFlyer. – Ister

+0

Спасибо, я думаю, это было мое замешательство в смешении его с схемой базы данных. – Bendy

+0

Можно подумать о том, что класс ассоциации размещается между (обычно) двумя классами и связывает их с отношением 1-m * n-1 (* является ассоциированным -класс). –