Спецификация отношений между классами
Для установления отношения между классами необходимо выбрать мышью пиктограмму данного отношения на панели инструментов и соединить с помощью мыши классы линией. Двойным щелчком мышью на линии отношения открывается окно свойств отношения. Данное окно можно выбрать и из контекстного меню отношения. Для отношения обобщения окно свойств представлено на рис. 3.11. На вкладке General можно указать имя отношения (Name), видимость (Scope).
Рис. 3.11
Для остальных отношений окно свойств имеет одинаковый вид. На вкладке General (рис. 3.12) можно указать имя отношения (Name).
Рис. 3.12
На вкладке Source Role (рис. 3.13) специфицируется агрегируемый класс для агрегации (композиции) или класс-клиент (для зависимости). На вкладке Target Role (рис. 3.14) специфицируется класс-агрегат для агрегации (композиции) или класс-сервер (для зависимости). На рисунках 3.12–3.14 приведен пример спецификации агрегируемого класса Circle и класса-агрегата Combi, содержащего класс Circle, для отношения композиции. Если в лабораторных работах класс «Две вложенные фигуры» агрегировал два экземпляра класса «Фигура», то при выполнении РГЗ рекомендуется создать на диаграмме отдельные отношения агрегации для каждой вложенной фигуры (см. рис. 3.17 в конце раздела). На данных вкладках указывается роль класса в отношении (…Role). Данное имя для агрегируемого класса в прототипе кода будет именем агрегированного объекта (см. прототип кода в конце раздела). Другие важные свойства: § Multiplicity – кратность ассоциации; § Containment – способ агрегации: Reference – по ссылке, Unspecified – не определено (например, для зависимости), Value – по значению; § Access – видимость; § Aggregation – тип агрегации: none – отсутствует (для зависимости), shared – агрегация, composite – композиция.
Рис. 3.13 Рис. 3.14
После окончания работы с диаграммой классов для помещения в отчет ее можно сохранить в графическом формате, выбрав пункт меню Diagram/Save Image и указав формат, папку и имя файла, либо скопировать изображение в буфер обмена, выбрав пункт меню Diagram/Copy Image, с последующей вставкой в файл с отчетом. 3.3. Создание прототипа кода на языке C++
Для генерации прототипа коде выберите пункт меню Project/Source Code Engineering/Generate Package Source Code. В диалоговом окне Generate Package Source Code выберите классы, для которых необходимо сгенерировать прототип кода, и нажмите кнопку Generate ( рис. 3.15 ). В окне Batch Generation будет отражаться ход генерации ( рис. 3.16 ). По ходу генерации может быть предложено выбрать папку и имя файла для сохранения кода. По окончании генерации нажмите кнопку Close, а в окне Generate Package Source Code – кнопку Cancel. Можно сгенерировать прототип кода для отдельного класса, выбрав в контекстном меню пункт Generate Code. Откройте сгенерированные файлы с расширениями cpp и h для каждого класса, проверьте соответствие диаграммы классов, сгенерированного прототипа кода и программ из лабораторных работ №4, 5.
Рис. 3.15
Рис. 3.16
На рис. 3.17 представлена частично специфицированная диаграмма классов. Ниже приведены фрагменты сгенерированных заголовочных файлов. Рис. 3.17
Фрагмент файла Shape.h
class Shape { protected: Point center; public: Shape(); virtual ~Shape(); virtual void draw() =0; private: };
Фрагмент файла Circle.h
#include "Shape.h" class Circle: public Shape { protected: int radius; public: Circle(); virtual ~Circle(); virtual void draw(); void set_radius(int new_rad); private: };
Фрагмент файла Combi.h
class Combi { private: Circle circle1; Circle circle2; public: Combi(); virtual ~Combi(); };
Фрагмент файла Container.h
template<Class Type> class Container { public: Container(); virtual ~Container(); Type pop(){ return NULL; } void push(Type Elem){ } };
4. Контрольные вопросы
1. Диаграмма классов. а. Как изображается класс? Какая информация указывается на его значке? б. Каков формат спецификации атрибутов класса? Как обозначается на диаграмме видимость и кратность элементов? в. Каков формат спецификации операций класса? г. Как изображаются на диаграмме статические элементы и утилиты? д. Как изображается на диаграмме интерфейс? Как специфицируется на диаграмме отношения между интерфейсом и реализующим его классом? е. Как специфицируется на диаграмме отношение ассоциации между классами? ж. Как специфицируются на диаграмме отношения зависимости, наследования, агрегации, композиции? з. Как специфицируются на диаграмме шаблоны, отношение инстанцирования? и. Что такое вложенный класс и как он специфицируется на диаграмме?
2. Диаграмма объектов. а. Что отражает диаграмма объектов? б. Как изображается объект? Какая информация указывается на его значке? Как изображаются на диаграмме отношения между объектами?
3. Диаграмма последовательностей. а. Как изображаются на диаграмме объекты и вызовы операций? б. Как изображается на диаграмме линия жизни объекта? в. Как изображается на диаграмме фокус управления? г. Как изображаются на диаграмме циклы и ветвления?
4. Диаграмма коммуникации. а. Как изображаются на диаграмме объекты и вызовы операций? б. Как изображаются на диаграмме итерации? в. Как изображаются на диаграмме условия?
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|