Диаграммы классовДиаграммы классов
Цель работы:
1. Диаграммы классов (class diagrams)
Диаграммы классов являются центральным звеном методологии объектно-ориентированных анализа и проектирования. Диаграмма классов показывает классы и их отношения, тем самым представляя логический аспект проекта. Отдельная диаграмма классов представляет определенный ракурс структуры классов. На стадии анализа диаграммы классов используются, чтобы выделить общие роли и обязанности сущностей, обеспечивающих требуемое поведение системы. На стадии проектирования диаграммы классов используются, чтобы передать структуру классов, формирующих архитектуру системы. Каждый класс должен иметь имя; если имя слишком длинно, его можно сократить или увеличить сам значок на диаграмме. Имя каждого класса должно быть уникально в содержащем его проекте. Диаграмма классов определяет типы объектов системы и различного рода статические связи, которые существуют между ними. Имеется два основных вида статических связей:
На диаграммах классов изображаются также атрибуты классов, операции и ограничения, которые накладываются на связи между объектами. На рис. 11.1 изображена типичная диаграмма классов. Далее будут рассмотрены различные фрагменты диаграммы.
Ассоциации представляют собой связи между экземплярами классов (личность работает в компании, компания имеет ряд офисов).
Рис. 11.1. Типичная диаграмма классов
Любая ассоциация обладает двумя ролями; каждая роль представляет собой направление ассоциации. Таким образом, ассоциация между «Исполнителем» и «Отчетом» содержит две роли: одна от «Исполнителя» к «Отчету»; другая - от «Отчета» к «Исполнителю». Роль может быть явно поименована с помощью метки. Если такая метка отсутствует, роли присваивается имя класса-цели; таким образом, роль ассоциации от «Исполнителя» к «Отчету» может быть названа «Отчетом». Роль также обладает множественностью, которая показывает, сколько объектов может участвовать в данной связи. На рис. 11.1 символ «0..*» над ассоциацией между «Менеджером» и «Контрактом» показывает, что с одним «Менеджером» может быть связано много «Контрактов»; символ «1» показывает, что любой «Контракт» управляется одним «Менеджером». В общем случае множественность показывает нижнюю и верхнюю границы количества объектов, которые могут участвовать в связи. Для этого могут использоваться единственное число, диапазон или дискретная комбинация из чисел и диапазонов. Для ассоциации может быть указано направление навигации. Если навигация указана только в одном направлении, то такая ассоциация называется однонаправленной (ассоциация между «Менеджером» и «Отчетом» на рис. 11.1). У двунаправленной ассоциации навигация указана в обоих направлениях. В языке UML отсутствие стрелок у ассоциации трактуется следующим образом: направление навигации неизвестно или ассоциация является двунаправленной.
Атрибуты во многом подобны ассоциациям. Разница между ними заключается в том, что атрибуты предполагают единственное направление навигации - от типа к атрибуту. На рис. 11.1 атрибуты указаны для классов «Контракт» и «Отчет». В зависимости от степени детализации диаграммы, обозначение атрибута может включать имя атрибута, тип и значение, присваиваемое по умолчанию. В синтаксисе UML это выглядит следующим образом: <признак видимости> <имя> : <тип> = <значение по умолчанию>, где признак видимости может принимать одно из следующих четырех значений:
и друзей класса, рамляющего пакета.
Операции представляют собой процессы, реализуемые классом. Наиболее очевидное соответствие существует между операциями и методами над классом. Полный синтаксис UML для операций выглядит следующим образом: <признак видимости> <имя> (<список-параметров>): <тип-выражения-возвращающего-значение> = <строка-свойств>, где
Обобщение Типичный пример обобщения включает «Команду проекта» и «Субподрядчика» (см. рис. 11.1). Они обладают некоторыми различиями, однако у них также много общего. Одинаковые характеристики можно поместить в обобщенный класс «Исполнитель» (супертип), при этом «Команда проекта» и «Субподрядчик» будут выступать в качестве подтипов. Смысл обобщения заключается в том, что интерфейс подтипа должен включать все элементы интерфейса супертипа. Другая сторона обобщения связана с принципом подстановочности. Субподрядчика можно подставить в любой код, где требуется «Исполнитель», и при этом все должно нормально работать. Это означает, что, разработав код, предполагающий использование «Исполнителя», можно свободно употреблять экземпляр любого подтипа «Исполнителя». Субподрядчик может реагировать на некоторые команды отличным от другого «Исполнителя образом» (в соответствии с принципом полиморфизма), но это отличие не должно беспокоить вызывающий объект. Обобщение с точки зрения реализации связано с понятием наследования в языках программирования. Подкласс наследует все методы и поля суперкласса и может переопределять наследуемые методы. Подтип можно также реализовать, используя механизм делегирования.
При постройке диаграмм классов основным занятием является отображение различных ограничений. На рис. 11.1 показано, что «Контракт» может управляться только одним «Менеджером». С помощью конструкций ассоциации, атрибута и обобщения можно специфицировать наиболее важные ограничения, но невозможно выразить их все. В UML отсутствует строгий синтаксис описания ограничений, за исключением помещения их в фигурные скобки {}.
Таблица 11.1. Описание кнопок панели инструментов диаграмм классов Rational Rose
Упражнение 1. Создание структуры модели и классов анализа в соответствии с требованиями архитектурного анализа Создание пакетов и диаграммы Traceabilities:
Рис. 11.2 Создание классов анализа и соответствующей диаграммы Key Abstractions: 1. Щелкните правой кнопкой мыши по пакету Design Model. Рис 11.3 Диаграмма классов
Идентификация классов, участвующих в реализации потоков событий варианта использования. В потоках событий варианта использования выявляются классы трех типов: • граничные классы (Boundary) - служат посредниками при взаимодействии внешних объектов с системой. Как правило, для каждой пары «действующее лицо - вариант использования» определяется один граничный класс. Типы граничных классов: пользовательский интерфейс (обмен информацией с пользователем, без деталей интерфейса - кнопок, списков, окон), системный интерфейс и аппаратный интерфейс (используемые протоколы, без деталей их реализации); • классы-сущности (Entity) - представляют собой ключевые абстракции (понятия) разрабатываемой системы. Источники выявления классов-сущностей: ключевые абстракции, созданные в процессе архитектурного анализа, глоссарий, описание потоков событий вариантов использования; • управляющие классы (Control) - обеспечивают координацию поведения объектов в системе. Могут отсутствовать в некоторых вариантах использования, ограничивающихся простыми манипуляциями с хранимыми данными. Как правило, для каждого варианта использования определяется один управляющий класс. Примеры управляющих классов: менеджер транзакций, координатор ресурсов, обработчик ошибок. Пример набора классов, участвующих в реализации варианта использования Register for Courses, приведен на рис. 11.4. Упражнение 2. Создание классов, участвующих в реализации варианта использования Register for Courses, и диаграммы классов «View Of Participating Classes» (VOPC) 1. Щелкните правой кнопкой мыши по пакету Design Model. Рис. 11.4 Классы, участвующие в реализации варианта использования Register for Courses 7. Создайте аналогичным образом классы CourseCatalogSystem со стереотипом Boundary и RegistrationControIler со стереотипом Control. Распределение поведения, реализуемого вариантом использования, между классами. Реализуется с помощью диаграмм взаимодействия (диаграмм последовательности и кооперативных диаграмм). В первую очередь строится диаграмма (одна или более), описывающая основной поток событий и его подчиненные потоки. Для каждого альтернативного потока событий строится отдельная диаграмма. Примеры: • обработка ошибок Нецелесообразно описывать тривиальные потоки событий (например, в потоке участвует только один объект). 1. В меню модели выберите пункт Tools > Options.
Рис. 11.5 Диаграмма Entity Classes (классы-сущности)
Рис. 11.6. Диаграмма CourseOfferinglnfo Рис. 11.7. Полная диаграмма классов VOPC (без атрибутов и операций)
Читайте также:
|









