Звоните! 
 (926)274-88-54 
 Бесплатная доставка. 
 Бесплатная сборка. 
Ассортимент тканей

График работы:
Ежедневно. С 8-00 до 20-00.
Почта: soft_hous@mail.ru
Читальный зал -->  Диаграммы параллельных состояний 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [ 27 ] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Множеавенная и динамическая классификация

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

Дискриминатор

Женщина

-Личность <

пол I

Мужчина й} Д

роль


пациент

Доктор

Медсестра

Физиотерапевт


Семейный врач

Рис. 6.4. Множественная классификация

Можно задать одно полезное ограничение, которое позволяет утверждать, что любой экземпляр суперкласса должен быть экземпляром одного из подклассов в данной группе. (Суперкласс в этом случае является абстрактным.) Хотя по этому вопросу в стандарте языка UML существует некоторая путаница, многие аналитики используют ограничение {complete} (полный) для задания подобного ограничения.

В качестве иллюстрации отметим следующие допустимые сочетания подтипов на диаграмме: (Женщина, Пациент, Медсестра), (Мужчина, Физиотерапевт), (Женщина, Пациент) и (Женщина, Доктор, Хирург). Заметим также, что такие сочетания, как (Пациент, Доктор) и (Мужчина, Доктор, Медсестра) являются недопустимыми. Первое множество недопустимо, поскольку не включает тип, определенный дискриминатором пол с ограничением {полный}; второе множество недопустимо, поскольку включает сразу два типа с одним и тем же дискриминатором роль . По определению однозначной классификации соответствует единственный непомеченный дискриминатор.



Возникает еще один вопрос: может ли объект изменять свой тип? Примером такой ситуации является банковский счет. Когда счет клиента становится пустым, он существенно меняет свое поведение. В частности, должны быть переопределены некоторые операции (включая снять со счета и закрыть счет ).

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

Следует ли использовать множественную динамическую классификацию? Я полагаю, что она полезна для концептуального моделирования. Ее можно использовать и при моделировании спецификаций, но при этом нужно иметь подходящее средство для ее реализации. Весьма характерно, что с точки зрения интерфейса динамическая классификация выглядит как обычное обобщение, и пользователь класса не сможет определить, какая конкретная реализация используется (см. Фаулер, 1997 [18]). Однако, как и в большинстве подобных случаев, выбор зависит от конкретных обстоятельств, и окончательное решение остается за вами. Преобразование множественного динамического интерфейса в однозначную статическую реализацию может оказаться более затруднительным, чем оно того заслуживает.

На рис. 6.5 показан пример использования динамической классификации в отношении работы, выполняемой личностью, которая, естественно, может меняться. Характерно, что в этом случае для подтипов необходимо определить дополнительное поведение, а не только одни метки. В подобных случаях зачастую имеет смысл создать отдельный класс для выполняемой работы и связать этот класс с личностью с помощью некоторой ассоциации. Специально для этой цели я разработал образец под названием Ролевые Модели ; информацию об этом образце и другую информацию, дополняющую мою книгу Analysis Pat-terns [18], можно найти в Интернете на моей домашней страничке.

Женщина

->

Личность

Мужчина

{полный}

работа Динамическая

Менеджер

Инженер

Продавец

Рис. 6.5. Динамическая классификация



Агрегация и композиция

Агрегация и композиция

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

До появления языка UML вопрос о различии агрегации и ассоциации у аналитиков просто не возникал. Осознавалась подобная неопределенность или нет, но свои работы в этом вопросе аналитики совсем не согласовывали между собой. В результате многие разработчики считали агрегацию важной, но по совершенно другой причине. Язык UML определяет агрегацию, но семантика этого отношения очень широка. Вот мнение Джима Рамбо: Представляйте ее как безвредное лекарство (Рамбо, Джекобсон, Буч, 1999, [37]).

В дополнение к агрегации в языке UML определена более сильная разновидность агрегации, называемая композицией. При композиции объект-часть может принадлежать только единственному целому; кроме того, как правило, жизненный цикл частей совпадает с жизненным циклом целого: части живут и умирают вместе с целым. Обычно любое удаление целого распространяется на все его части.

Такое каскадное удаление часто рассматривается как часть определения агрегации, однако оно имеет место только в том случае, когда кратность конца ассоциации составляет 1..1. Например, если вы действительно хотите удалить Клиента, то должны распространить это удаление на Заказы (и, соответственно, на Строки Заказа).

На рис. 6.6 изображены примеры рассмотренных ранее понятий. Связи композиции у Точки означают, что любой экземпляр Точки может быть либо Многоугольником, либо Окружностью, но не может быть


Композиция

Окружность

радиус

Агрегация

Рис. 6.6. Агрегация и композиция



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [ 27 ] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57



ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку.



Звоните! Ежедневно!
 (926)274-88-54 
Продажа и изготовление мебели.


Копирование контента сайта запрещено.
Авторские права защищаются адвокатской коллегией г. Москвы
.