Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Операции

Объект не только занимает место в реальном мире, им можно также манипу­лировать. Операции (см. главы 4 и 9), выполняемые над объектом, объявляются в его абстракции. Например, если класс Transaction содержит операцию commit и у него имеется экземпляр t : Transaction, то можно написать выражение t. commit (). Его выполнение означает, что над объектом t осуществляется опе­рация commit. В зависимости от связанной с этим классом иерархии наследова­ния данная операция может быть вызвана полиморфно (см. главу 9).

Состояние

Состоянием объекта называется совокупность всех его свойств (обычно стати­ческих) и их текущих значений (обычно динамических). В число свойств входят ат­рибуты объекта (см. главу 4), а также всех его агрегированных частей. Таким об­разом, состояние объекта динамично, и при его визуализации вы фактически описываете значение его состояния в данный момент времени и в данной точке пространства. Процесс изменения состояния объекта можно изобразить графичес­ки, если на одной и той же диаграмме взаимодействия (см. главу 18) нарисовать его несколько раз, причем на каждом рисунке будет отражено новое состояние. Другой способ показать этот процесс дает использование автоматов (см. главу 21).

Совершая над объектом операцию, вы изменяете его состояние, однако при опросе объекта состояние не меняется. Например, резервируя билет на самолет (объект г : Reservation), вы определяете значение одного из его атрибутов (на­пример, цена билета = 395.75). Изменив впоследствии условия резервирова­ния, скажем, добавив к маршруту еще одну пересадку, вы тем самым изменяете и его состояние (например, цена билета становится равной 1024 . 86).

На рис. 13.3 показано, как можно с помощью языка UML изображать значения атрибутов объектов. Так, значение атрибута id объекта my Customer равно "432-89-1783 ". В данном случае тип идентификатора (номер социального страхова­ния) показан явно, хотя его можно и опустить (как это сделано для атрибута active = True), поскольку тип содержится в объявлении id в ассоциированном классе объекта myCustomer.

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

времени. Например, на рис. 13.3 показано, что объект с (экземпляр класса Phone) находится в состоянии WaitingForAnswer (ЖдетОтвета), определенном в авто­мате для класса Phone.

Примечание Так как объект может одновременно находиться в нескольких состояниях, вы вправе показать весь список текущих состояний.

Другие особенности

Поскольку процессы и нити (см. главу 22) являются важными составными час­тями вида системы с точки зрения процессов, в UML имеется графический образ для различения активных и пассивных элементов (элемент считается активным, если он является частью процесса или нити и представляет собой исходную точку потока управления). Вы можете объявить активные классы, материализующие процесс или нить, и, соответственно, выделить экземпляр активного класса (см. рис. 13.4).

Применение Чаще всего активные объекты применяются в контексте диаграмм

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

Кроме объектов, в UML существует еще две сущности, у которых могут быть экземпляры. Первая - это связь (Link), представляющая собой семантическое со­единение между объектами (см. главы 14 и 15). Связь, таким образом, является экземпляром ассоциации. Связь, как и ассоциация, изображается в виде линии; от ассоциации ее можно отличить по тому, что она соединяет только объекты. Вто­рой важный случай - атрибуты и операции, область действия которых ограниче­на классом (см. главу 9). Свойство с областью действия класса - это, по сути дела, объект в этом классе, совместно используемый всеми его экземплярами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]