Какая связь между картой и колодой на диаграмме классов (техасский холдем)? Я все еще пытаюсь понять, как работают отношения на диаграмме классов. Если колода состоит из карт, разве это не будет композицией, учитывая, что удаление колоды удалит карты? Есть случай, когда вы можете удалить колоду, но при этом сохранить карту, и это будет считаться агрегацией. Так что мой разум ошеломлен этой концепцией. Может ли кто-нибудь объяснить мне это на примере?
Какая связь между картой и колодой на диаграмме классов (техасский холдем)?
Ответы (2)
Разработчики упускают из виду цель ООП. Диаграмма классов должна резонировать с предметной областью реального мира. В области техасского холдема колода может содержать до 52 карт, а карта может содержаться не более чем в одной колоде. Карту также можно держать в одной руке или положить на стол, если я правильно помню. Это то, что вы должны моделировать, а не детали реализации.
Хотя можно смоделировать отношения между колодой и картами как композицию, я сомневаюсь, что это добавляет какую-либо ценность. Когда вы в последний раз поджигали колоду, забирая с собой все карты? По сути, вы добавляете и удаляете карты из колоды и перемешиваете колоду, пока игра не закончится.
Основываясь на описании Джима Л., мы могли бы создать следующую модель предметной области:
В этой модели связь между Deck
и Card
моделируется как композиция, потому что карта является частью колоды и не может использоваться совместно с другой колодой (обратите внимание, что отсутствие совместного использования является определяющей характеристикой композиции, а не зависимостью жизненного цикла).
Я хотел бы добавить к тому, что сказал Джим Л., что диаграмма классов может использоваться на всех трех уровнях моделирования:
- (независимое от решения) моделирование предметной области
- (независимое от платформы) моделирование дизайна
- (зависит от платформы) моделирование данных
Deck
может иметь свойствоCards
, представляющее собой коллекцию некоторого типа, где тип элемента равенCard
. - person jmcilhinney   schedule 30.09.2014