2016-11-10 2 views
4

Я работаю над интернет-магазином. Это простой интернет-магазин, и я должен создать диаграммы UML для класса и показать множественность. Я немного растерялся в той множественности, с которой я столкнулся. Я не знаю, как отличить композицию, агрегацию и ассоциацию. Ниже приведена диаграмма, с которой я столкнулся. Может ли кто-нибудь сказать мне, если я на правильном пути?UML-диаграмма: диаграмма и отношение класса онлайн-магазина

http://i.imgur.com/8FwhsaI.jpg

ответ

4

Не так уж плохо. Вы не должны сильно беспокоиться об агрегировании, если вам не нужно иметь дело с управлением памятью или ограничениями внешнего ключа в дизайне базы данных. Просто оставьте их.

Одним из важных изменений, которые вы должны внести, являются имена ролей для ассоциаций. Например. вместо shippingAddress:Address, объявленного как атрибут, используется роль shippingAddress, появляющаяся рядом с ассоциацией на Address, которая исходит от User (и т.п. для других).

С Address является обычным явлением и используется повсюду, вы можете оставить класс на этой диаграмме и составить отдельную диаграмму, где Address находится посередине, а все окружающие ее окружают.

0

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

  • показать кратности каждого соединения
  • не используют геттер и сеттер *
  • не использовать атрибуты идентификаторов *
  • Заказ делает композицию с пользователем (не имеет смысла иметь порядок с пользователем соответствующего с ним и OrderLine изготавливает композицию с заказом;
  • Изготовление изделий с помощью OrderLine и Review делает состав с продуктом;
  • Производитель производит агрегацию с продуктом (зависит от вашей системы, это может быть композиция, но она скорее будет агрегацией).

Помните (часть) делает что-то с (в целом)

  • не нужно создать атрибут в классе, если у вас есть связь с этим классом, кроме случаев, когда у вас есть список (eg1: атрибут CreditPayment в платежах и Class CreditPayment);
  • Вы можете составить список продуктов под заказ. После этого вы можете удалить класс Orderline.

* если вы не будете генерировать код из модели.

Смежные вопросы