25.11. OCL на диаграммах других типов 569
Name() возвращает "Jim", EmailAddress::getDomain() возвращает "umlandthe
unifiedprocess.com" и EmailAddress::getAddress() возвращает "jim@umlandthe
unifiedprocess.com". Объекты EmailAddress эквивалентны, если их атрибу
ты address (адрес) имеют одинаковое значение.
Система для обработки пришедшей почты пользуется политикой бе
лый/черный список:
• Все почтовые сообщения, адрес отправителя (fromAddress) которых
входит в черный список (blackList), удаляются.
• Все почтовые сообщения, fromAddress которых входит в белый спи
сок (whiteList), помещаются в ящик входящей почты (inBox).
• Все остальные почтовые сообщения помещаются в ящик для про
смотра (reviewBox).
• Состояние пришедшего сообщения (Message) меняется соответствен
но его типу: спам (удаляется), Legitimate (допустимый) или Unclassi
fied (неклассифицированный).
На рис. 25.17 показана диаграмма последовательностей для операции
MailSystem::classifyMessage( m : Message ). Диаграмма деятельностей для
этой операции представлена в следующем разделе на рис. 25.18, и вы
должны заметить, как эти диаграммы соответствуют друг другу. Диа
грамма последовательностей определяет, какие классы и операции
реализуют поведение, описанное диаграммой деятельностей.
MailSystem (система электронной почты) – контекст выражения. OCL
использовался для определения условий в комбинированном фрагмен
те alt.
С помощью OCL также было задано состояние объектов на диаграмме
(хотя это обычное применение OCL, поскольку OCL и UML имеют оди
наковый синтаксис для описания состояний).
25.11.2. OCL на диаграммах деятельности
Диаграммы деятельности можно создавать для описания поведения
любого элемента UMLмоделирования. На диаграммах деятельностей
OCL используется для определения:
• узлов вызова действия;
• сторожевых условий переходов;
• объектных узлов;
• состояния объекта.
jimsAddress:EmailAddress
address = "jim@umlandtheunifiedprocess.com"
Рис. 25.16. Адрес электронной почты jim@umlandtheunifiedprocess.com
представлен как объект класса
EmailAddress