Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_раб12_трпо.doc
Скачиваний:
23
Добавлен:
16.07.2019
Размер:
247.81 Кб
Скачать

Обобщение

Типичный пример обобщения включает «Команду проекта» и «Субподрядчика » (см. рис. 11.1). Они обладают некоторыми различиями, однако у них также много общего. Одинаковые характеристики можно поместить в обобщенный класс «Исполнитель» (супертип), при этом «Команда проекта » и «Субподрядчик» будут выступать в качестве подтипов. Смысл обобщения заключается в том, что интерфейс подтипа должен

включать все элементы интерфейса супертипа. Другая сторона обобщения связана с принципом подстановочности. Субподрядчика можно подставить в любой код, где требуется «Исполнитель», и при этом все должно нормально работать. Это означает, что, разработав код, предполагающий использование

«Исполнителя», можно свободно употреблять экземпляр любого подтипа «Исполнителя». Субподрядчик может реагировать на некоторые команды отличным от другого «Исполнителя образом» (в соответствии с

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

Ограничения

При постройке диаграмм классов основным занятием является отображение различных ограничений. На рис. 11.1 показано, что «Контракт» может управляться только одним «Менеджером». С помощью конструкций ассоциации, атрибута и обобщения можно специфицировать наиболее важные ограничения, но невозможно выразить их все.

В UML отсутствует строгий синтаксис описания ограничений, за исключением помещения их в фигурные скобки {}.

Таблица 11.1. Описание кнопок панели инструментов

диаграмм классов Rational Rose

Таблица 11.1. Описание кнопок панели инструментов

диаграмм классов Rational Rose

2. Пример

Ha рис. 11.2 и 11.3 приведены две диаграммы классов, реализуюгцие

один и тот же фрагмент подсистемы «Служба занятости в рамках вуза»:

взаимодействие пользователя с БД, содержащей персональные сведения.

Рис. 11.2. Диаграмма 1

Проведем расчет оценки для каждой из диаграмм.

Диаграмма 1

Атрибуты и операции на диаграмме не указаны, поэтому сразу рассчитаем

полное значение для диаграммы:

Диаграмма 2

Рис. 11.3. Диаграмма 2

1. На диаграмме 1 отобралсен класс «Преподаватель», который хотя и

является потомком класса «Пользователь системы», но не участвует

во взаимодействии с БД. Соответственно он усложняет модель, не

внося при этом полезной информации.

2. На диаграмме 1 интерфейс «Личные данные» изображен в развернутой

форме (как класс, помеченный стереотипом), а на диаграмме 2 он

показан значком интерфейса. Последняя форма отображения более

предпочтительна, когда не указываются операции интерфейса.

Разработка диаграммы классов в среде Rational Rose

Диаграмма классов является основным логическим представлением модели и содержит самую подробную информацию о внутреннем устройстве объектно-ориентированной программной системы. Активизировать диаграмму классов в окне диаграммы можно также несколькими способами:

  • Эта диаграмма появляется по умолчанию в окне диаграммы после создания нового проекта.

  • Щелкнуть на кнопке с изображением диаграммы классов на стандартной панели инструментов.

  • Раскрыть логическое представление в браузере (Logical View) и дважды щелкнуть на пиктограмме Main (Главная).

  • Через пункт меню Browse->CIass Diagram (Браузер->Диаграмма классов).

После активизации диаграммы классов специальная панель инструментов приобретет вид, показанный на рис. 12.5. Добавление и удаление элементов происходит аналогично, однако у каждого класса имеется обширная спецификация, содержащая информацию о его атрибутах и операциях. При этом видимость атрибутов и операций изображается в форме специальных пиктограмм или украшений (рис. 12.11).

Используемые пиктограммы для видимости изображаются перед именем соответствующего атрибута или операции и имеют следующий смысл:

  • Общий, открытый (Public) - устанавливается по умолчанию. Пример - атрибут 1 в классе 1. В этом случае атрибут виден всем остальным классам модели. Любой класс может просмотреть и изменить значение этого атрибута. В нотации языка UML такому атрибуту соответствует знак "+".

  • Защищенный (Protected). Пример - атрибут 2 в классе 1. В этом случае атрибут можно просмотреть и изменить из самого класса 1 или из его потомков. В нотации языка UML такому атрибуту соответствует знак "#".

  • Закрытый (Private). Пример - атрибут 3 в классе 1. В этом случае атрибут не виден никакому другому классу, кроме того, в котором он определен. В нотации языка UML такому атрибуту соответствует знак "-".

  • Пакетный (Implemented). Пример - атрибут 4 в классе 1. Такой атрибут является общим только в пределах своего пакета. В нотации языка UML для такого атрибута пиктограмма отсутствует.

Рис. 12.11. Пример графического изображения диаграммы классов в среде Rational Rose

Аналогичные пиктограммы применяются для обозначения видимости операций класса. Так, операция_1() класса 1 является защищенной и поэтому доступ к ней разрешен только из самого класса 1 или из его потомков. Опе-рация_2() этого же класса является закрытой и поэтому, кроме класса 1, она никакому другому классу не доступна.

Для отдельных атрибутов выделенного класса можно задать тип данных и начальные значения атрибута, а также назначить стереотип через пункт контекстного меню Open Specification (Открыть спецификацию). При этом предлагается выбор соответствующих значений из раскрывающегося списка. Для отдельных операций выбранного класса можно задать тип возвращаемого результата (возвращаемого класса), добавить аргументы к операции, назначить для нее стереотип, а также определить протокол и размер, задать исключительные ситуации и целый ряд дополнительных свойств. Эти свойства операции доступны через пункт контекстного меню Open Specification (Открыть спецификацию) и вкладку Operations (Операции). При двойном щелчке на выбранной операции открывается дополнительное окно с вкладками, соответствующими отдельным из указанных ранее свойств.

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

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

Задания

1. Выделить основные классы объектов в проектируемой системе.

2. Построить диаграмму классов, в общем виде демонстрирующую архитектуру

системы.

3. Построить одну-две диаграммы классов, детализирующие отдельные

подсистемы. Указать для классов основные атрибуты и операции,

указать вид и направление ассоциаций.

4. построить диаграмму классов объектов базы данных.

Контрольные вопросы:

1. Каково назначение диаграмм классов?

2. Для чего используется диаграмма классов на стадии анализа?

3. Для чего используется диаграмма классов на стадии проектирования?

4. Назовите основные компоненты диаграмм классов.

5. Назовите основные типы статических связей между классами.

6. Что представляет собой ассоциация?

7. В чем смысл множественности ассоциаций?

8. В чем отличие атрибутов от ассоциаций?

9. Что такое признак видимости?

10. Что представляет собой операция класса?

11. В чем смысл обобщения?

12. Каково назначение ограничений на диаграммах классов?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]