Какая связь между картой и колодой на диаграмме классов (техасский холдем)?

Какая связь между картой и колодой на диаграмме классов (техасский холдем)? Я все еще пытаюсь понять, как работают отношения на диаграмме классов. Если колода состоит из карт, разве это не будет композицией, учитывая, что удаление колоды удалит карты? Есть случай, когда вы можете удалить колоду, но при этом сохранить карту, и это будет считаться агрегацией. Так что мой разум ошеломлен этой концепцией. Может ли кто-нибудь объяснить мне это на примере?


person Leonardo Montoya    schedule 29.09.2014    source источник
comment
На диаграмме классов, вероятно, нет никакой связи. Класс Deck может иметь свойство Cards, представляющее собой коллекцию некоторого типа, где тип элемента равен Card.   -  person jmcilhinney    schedule 30.09.2014


Ответы (2)


Разработчики упускают из виду цель ООП. Диаграмма классов должна резонировать с предметной областью реального мира. В области техасского холдема колода может содержать до 52 карт, а карта может содержаться не более чем в одной колоде. Карту также можно держать в одной руке или положить на стол, если я правильно помню. Это то, что вы должны моделировать, а не детали реализации.

Хотя можно смоделировать отношения между колодой и картами как композицию, я сомневаюсь, что это добавляет какую-либо ценность. Когда вы в последний раз поджигали колоду, забирая с собой все карты? По сути, вы добавляете и удаляете карты из колоды и перемешиваете колоду, пока игра не закончится.

person Jim L.    schedule 30.09.2014

Основываясь на описании Джима Л., мы могли бы создать следующую модель предметной области: введите здесь описание изображения

В этой модели связь между Deck и Card моделируется как композиция, потому что карта является частью колоды и не может использоваться совместно с другой колодой (обратите внимание, что отсутствие совместного использования является определяющей характеристикой композиции, а не зависимостью жизненного цикла).

Я хотел бы добавить к тому, что сказал Джим Л., что диаграмма классов может использоваться на всех трех уровнях моделирования:

  1. (независимое от решения) моделирование предметной области
  2. (независимое от платформы) моделирование дизайна
  3. (зависит от платформы) моделирование данных
person Gerd Wagner    schedule 30.09.2014