Утилиты, Объект - Объектно-ориентированный подход и диаграммы классов в UML

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

На диаграмме утилита изображается как класс со стереотипом "utility", и может иметь как атрибуты, так и операции.

Объект

Одним из самых важных понятий объектно-ориентированного программирования является понятие объект. Объект есть экземпляр класса, в некоторых специальных случаях он может быть экземпляром нескольких классов (на этом остановимся ниже). Объект обладает набором состояний, в которых он может находиться, строго определенным поведением и уникальным идентификатором; структура и поведение схожих объектов определяется в их общем классе.

Объекты могут исполнять определенные роли. Роль определяет отношение между классом и его экземплярами [4], выделяя определенное их подмножество. Считается, что все эти объекты похожи по своему поведению и состояниям, которые они могут принимать. Например, в системе может существовать много объектов класса Абонент, но часть из них в данный момент играет роль вызываемых, часть - вызывающих, а остальные свободны. Таким образом у этого класса мы выделили три роли.

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

Фактически, объект-роль - это некоторый промежуточный уровень абстракции между объектами и классами. Например, рассмотрим класс "человек": экземпляром этого класса является конкретный человек с именем и фамилией (его уникальным идентификатором) - Иванов Иван Петрович. У этого экземпляра могут быть состояния, например, "болен", "здоров", "спит" и т. п. В качестве объекта-роли можно привести роли: "сын", "жена", "муж". Таким образом, объект-экземпляр класса может исполнять разные роли, например роли "мужа" и "сына".

У объекта и объекта-роли есть уникальный идентификатор и строго определенные значения атрибутов.

На диаграмме объект и объект-роль представляется как прямоугольник с двумя отделениями. Верхнее отделение содержит имя объекта и имя его класса, по следующему синтаксису:

<Имя объекта>: <имя класса>

<Имя класса> есть полное имя класса, представителем которого он является. Стереотип класса может быть показан текстуально (в кавычках, строчкой выше) или иконкой в верхнем правом углу, но стереотип объекта должен совпадать со стереотипом его класса.

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

На рис. 19 показаны различные способы изображения объекта:

    А) развернутое изображение; Б) анонимный объект; В) сокращенное изображение.

Можно также показать, что объект может принимать некоторые состояния:

< Имя объекта> : <имя класса> '['<список состояний>']'

<список состояний> - список состояний объекта, в которых он может находиться во время своей "жизни" в системе. Состояния объекта формируются на этапе анализа проектируемой системы, то есть выделяются некоторые основные фазы, в которых может находиться объект. Далее при проектировании системы эти состояния могут корректироваться.

Второе отделение в прямоугольнике объекта содержит атрибуты объекта и их конкретные значения:

<Имя атрибута> : <тип> = <значение>

Объекты могут быть простыми и составными.

Составной объект

Составной объект представляет собой экземпляр составного класса, то есть класса, имеющего отношение композиции с другими классами. Таким образом, составной объект состоит из других (возможно, также составных) объектов.

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

Похожие статьи




Утилиты, Объект - Объектно-ориентированный подход и диаграммы классов в UML

Предыдущая | Следующая