Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Термины и определения_Дополнено_200902.doc
Скачиваний:
3
Добавлен:
21.11.2019
Размер:
525.82 Кб
Скачать

В.1. Диаграмма классов

На рисунке B.la представлена нотация ОМТ для абстрактных и конкретных классов. Класс обозначается прямоугольником, в верхней части которого жирным шрифтом напечатано имя класса. Основные операции класса перечисляются под именем класса. Все переменные экземпляра находятся ниже операций. Информация о типе необязательна; мы пользуемся синтаксисом C++, ставя имя типа перед

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

При использовании некоторых паттернов проектирования полезно видеть, где классы клиентов ссылаются на классы-участники. Если паттерн включает класс клиента в качестве одного из участников (это означает, что на клиента возлагаются определенные функции), то клиент изображается как обычный класс. Так, например, обстоит дело в паттерне приспособленец. Если же клиент не входит в состав участников паттерна (то есть не несет никаких обязанностей), то его изображение все равно полезно, поскольку проясняет способ взаимодействия участников с клиентами. В этом случае классы клиентов изображаются бледным шрифтом, как показано на рисунке B.lb. Примером может служить паттерн заместитель.

Бледный шрифт клиента напоминает также о том, что мы специально не включили клиента в состав участников.

На рисунке В. 1с показаны отношения между классами. В нотации ОМТ для обозначения наследования классов используется треугольник, направленный от подкласса (на рисунке - LineShape) к родительскому классу (Shape). Ссылка на объект, представляющая отношение агрегирования «является частью», обозначается линией со стрелкой с ромбиком на конце. Стрелка указывает на агрегируемый класс (например, Shape). Линия со стрелкой без ромбика обозначает отношение осведомленности (так, LineShape содержит ссылку на объект Color, который может использоваться также и другими фигурами).

Рядом с началом стрелки может находиться еще и имя ссылки, позволяющее отличить ее от других ссылок.1

Еще одно полезное свойство, которое следует визуализировать, - то, какие классы создают экземпляры других классов. Для этого используется пунктирная

линия, поскольку ОМТ такого отношения не поддерживает. Мы называем такое отношение «создает». Стрелка направлена в сторону класса, экземпляр которого инстанцируется. На рисунке В. 1с класс GreationTool создает объекты класса LineShape.

В ОМТ определен также символ залитого круга, обозначающий «более одного». Если такой кружок появляется рядом со стрелкой, то он говорит о том, что она ссылается на несколько объектов или что несколько объектов агрегируются.

На рисунке В. 1с показано, что класс Drawing агрегирует несколько объектов типа Shape.

Наконец, мы дополнили ОМТ аннотациями на псевдокоде, которые позволяют коротко описать реализацию операций. На рисунке В. Id приведена такая аннотация для операции Draw в классе Drawing.

В.2. Диаграмма объектов

На диаграмме объектов представлены только экземпляры. На ней показан мгновенный снимок объектов в паттерне проектирования. Объекты именуются «aSomething», где Something - это класс объекта. Для обозначения объекта используется прямоугольник с закругленными углами (что несколько отличается от стандарта ОМТ), в которомимя объекта отделено от ссылок на другие объекты горизонтальной линией. Стрелки ведут к объектам, на которые ссылается данный.

На рисунке В.2 приведен соответствующий пример.

Рис. В.2. Нотация диаграмм объектов

В.З. Диаграмма взаимодействий

Порядок исполнения запросов, которые объекты посылают друг другу, показан на диаграмме взаимодействий. Так, на рисунке В.З представлено, как фигура добавляется к рисунку.

Рис. В.З. Нотация диаграмм взаимодействия

На диаграмме взаимодействий время откладывается сверху вниз. Сплошная вертикальная линия обозначает время жизни объекта. Соглашение об именовании объектов такое же, как на диаграммах объектов: имени класса предшествует буква «а» (например, aShape). Если объект еще не создан к начальному моменту времени, представленному на диаграмме, то его вертикальная линия идет пунктиром вплоть до момента создания.

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

Имя запроса показывается над стрелкой. Запрос на создание объекта представлен пунктирной линией со стрелкой. Запрос объекта-отправителя самому себе изображается стрелкой, указывающей на сам этот объект.

На рисунке В.З видно, что первый запрос, исходящий от aCreationTool,преследует целью создание объекта aLineShape. Затем aLineShape добавляется к объекту aDrawing с помощью операции Add, после чего aDrawing посылает самому себе запрос на обновление Refresh. Отметим, что частью операции Refresh является посылка объектом aDrawing запроса к aLineShape.