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

5 Единичное и множественное наследование

При единичном наследовании класс содержит единственный набор потом ков, то есть одну цепочку суперклассов (например, легковая машина - это автомобиль, а автомобиль - средство передвижения). Множественное наследование включает более одной цепочки суперклассов (машина-амфибия - это автомобиль, автомобиль - средство передвижения, в то же время машина-амфибия - это лодка, а лодка - средство передвижения). При множественном наследовании возникает ряд проблем, в частности конфликт имен и несколько копий унаследованных свойств. Способ решения таких проблем выбирается в зависимости от языка программирования: виртуальные базовые классы в C++ или отсутствие поддержки множественного наследования в PowerBuilder Множественное наследование может стать причиной запутанного и трудно сопровождаемого кода - чем больше суперклассов, тем труднее определить что откуда взялось и что произойдет при внесении изменений

6 Наследование и агрегация

Наследование часто используется не по назначению. В действительности неправильное применение наследования может привести к проблемам. Например, студент может учиться очно или заочно. Создадим суперкласс студент (Student) и два подкласса - студент очного отделения (FulltimeStudent) и студент заочного отделения (ParttimeStudent) Во время работы такой структуры наверняка возникнут определенные проблемы. Что случится, если

  • студент очного отделения решит перейти на заочное? Это значит, что объекту придется сменить класс,

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

Наследование должно служить для отделения общности от специфики Агрегация - для отражения комбинированных отношений. Часто оба типа отношений используются вместе. Класс студент имеет классификацию (агрегацию), которая, в свою очередь, делится на классы студент-очник и студент-заочник (наследование) - см рис 6.4.

Рис.6.4

РЕЗЮМЕ

Наследование позволяет создавать иерархию классов, когда общая структура и поведение разделяются между ними. Термин "суперкласс" характеризует класс, содержащий общую информацию. Классы-потомки называются подклассами. Подкласс наследует все атрибуты, операции и отношения, определенные во всех его суперклассах.

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

Часть 7. Диаграмма состояний.

1 Диаграмма состояний

Варианты использования и сценарии применяются для описания поведения системы, то есть взаимодействия объектов в ней. Иногда требуется рассмотреть поведение внутри самого объекта. Диаграмма состояний (statechart diagram) показывает положение одиночного объекта, события или сообщения, которые вызывают переход из одного состояния в другое, и действия, являющиеся результатом смены состояния.

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

Следует внимательно подойти к вопросам анализа и сосредоточиться на том Что представляет собой проблема, а не на том, как она будет решаться

Для создания диаграммы состояний в программе Rational Rose.

  1. Щелкните правой кнопкой мыши по классу в списке браузера.

  2. В появившемся контекстно-зависимом меню выберите команду New => Statechart Diagram (Создать => Диаграмма состояний) В список браузера будет добавлена диаграмма New Diagram

  3. Введите ее название

  4. Чтобы открыть диаграмму, щелкните по значку "+" слева от имени подкласса в окне браузера, потом по значку "+" слева от пункта State/Activity Model (Модель состояний и действий), а затем дважды по диаграмме состояний