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

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

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

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

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

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

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: