2009-11-18 6 views
2

Очень новое для UML и дизайн системы.Простые поведения UML меня дезорируют!

Мы находимся на этапе создания диаграммы классов на этапе проектирования и изо всех сил пытаемся выяснить, как выполнить требование. Вот проблема:

У нас есть класс Person, состоящий из класса Name и класса ContactDetails. Контактные данные класса состоят из класса MobileNumber и EmailAddress.

Как бы я смоделировал диаграмму класса, чтобы у ContactDetails должен был быть MobileNumber или EmailAddress или оба?

Я уверен, что это просто - но это меня бросило!

Благодаря

+0

кстати: какой инструмент UML вы используете? – rdmueller

ответ

0

давайте начнем с простым:

Модели ваших классов, как вы бы написать программу. Создайте класс ContactDetails и добавьте два атрибута «MobileNumber» и «EmailAddress», оба из соответствующего типа. Создать методы-конструкторы:

+ ContactDetails (млн MobileNumber)
+ ContactDetails (электронная почта EMAILADDRESS)
+ ContactDetails (млн MobileNumber, электронная почта EmailAddress)

Теперь: как бы вы добавить необходимое ограничение в код?

Установив пустой конструктор как закрытый? Сделай так!

-ContactDetails()

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

Все.

+0

Итак, атрибуты есть, и у нас есть три конструктора: ContactDetails (MobileNumber, Email); ContactDetails (электронная почта); ContactDetails (MobileNumber); Необходимо вызвать одного из трех, чтобы заполнить атрибуты? Я понял! Не совсем уверен, что вы подразумеваете под элементом Constraint - это? http://publib.boulder.ibm.com/infocenter/rsmhelp/v7r0m0/index.jsp?topic=/com.ibm.xtools.modeler.doc/topics/cconstrnt.html –

+0

Извините, я думаю, что у меня есть misread: Мне нужно разбить MobileNumber и Email на отдельные классы. Это то, как нам нужно это делать - их нужно разделить. Как это сделать с помощью диаграммы классов? –

+0

атрибуты имеют типы. like String s; Целое число b; Итак, s реализуется в классе «String», b в классе «Integer». Вот как вы помещаете их в отдельные классы, но ссылайтесь на них со своего ContactDetails. В диаграммах классов у вас есть два основных отношения. Это называется «имеет ...» отношения.Наследование (Обобщение) называется отношением «есть ...». – rdmueller

1

alt text

Кроме того, если объединение не является обязательным, это не композиция. Это не более чем агрегирование или даже простая ассоциация, как я покажу на этой диаграмме.

+0

yep. вот что я имел в виду с «добавлением ограничения» :-) Проблема в том, что вы не можете преобразовать это непосредственно в код. – rdmueller

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

  • Нет связанных вопросов^_^