Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.раб.8 ПОСТРОЕНИЕ И ОБСУЖДЕНИЕ UML-ДИАГРАММ.doc
Скачиваний:
5
Добавлен:
04.05.2019
Размер:
23.83 Mб
Скачать

Ассоциативные классы

Отношение (связь классов) может также иметь структуру и поведение. Это происходит в том случае, когда информация обращена к связи между объектами, а не к самому объекту.

Рассмотрим такой пример. Студент может посещать до четырех учебных курсов, а учебный курс может читаться нескольким студентам - от трех до десяти. Каждый студент получает оценку (grade) за учебный курс. Где должна храниться оценка? Она не принадлежит студенту, так как он наверняка получит различные оценки по разным предметам. Оценка не принадлежит и курсу, потому что студенты получат разные оценки за данный курс. Сведения об оценке принадлежат связи между студентом и учебным курсом. Они моделируются с помощью ассоциативного класса (association class), который ведет себя, как и любой другой класс, и также может иметь отношения (назовем его "оценка"). В конце каждого семестра зачетная книжка заполняется полученными оценками и представляется в системе в виде объекта соответствующего "вспомогательного" класса "зачетная книжка".

Для создания ассоциативных классов в программе Rational Rose:

  1. Щелкните по кнопке Class (Класс) на панели инструментов.

  2. Щелкните по диаграмме, чтобы поместить на нее класс.

  3. Введите имя класса.

  4. Добавьте необходимые атрибуты и операции для класса.

  5. Щелкните по кнопке Association Class (Ассоциативный класс) на панели инструментов.

  6. Щелкните по ассоциативному классу и проведите черту к линии связи между классами, соединяемыми ассоциативным классом.

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

Ассоциативный класс оценка показан на рис. 5.4.

Рис.5.4

РЕЗЮМЕ

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

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

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

Многие атрибуты класса выявляются при анализе предметной области, системных требований и описании потоков событий, а также при составлении описания класса. Кроме того, хорошим источником для определения атрибутов является сама предметная область.

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

Часть 6. Понятие наследования.

Наследованием (inheritance) называется такое отношение между классами, когда один класс использует часть структуры и/или поведения другого или нескольких классов. При наследовании создается иерархия абстракций, в которой подкласс (subclass) наследуется от одного или нескольких суперклассов (superclass). Наследование также называют иерархией типа "такой же, как" (is-a) или "такого вида, как" (kind-of). Подкласс наследует все атрибуты, операции и отношения, определенные в каждом его суперклассе. Значит, все атрибуты и операции, определенные на верхнем уровне иерархии, будут унаследованы классами на более низких ее уровнях. В подкласс могут быть добавлены дополнительные атрибуты и операции, применяемые только на данном уровне иерархии. Подкласс может содержать собственную реализацию унаследованной операции. Так как отношение наследования не является отношением между различными объектами, оно не имеет названия, не использует названия ролей и к нему не применяется понятие мощности.

На количество классов в иерархии наследования ограничений не существует. Однако на практике в программах, созданных с помощью C++, обычно используется от трех до пяти уровней, тогда как в приложениях, написанных на языке Smalltalk, - немного больше.

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

Существует два способа определения наследования - обобщение и специализация. В любых разрабатываемых системах обычно используются оба метода.