Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по тех прог / 5_Парадигмы программирования_ООП.ppt
Скачиваний:
105
Добавлен:
21.03.2016
Размер:
1.59 Mб
Скачать

Обобщение в диаграммах классов в UML

В UML наследование

называют

обобщением, так как базовый класс это более общая форма его

производных классов.

Многоуровневая иерархия. Пример

Модель включения/делегации

Реализует отношение “имеет” (“has-а”) или агрегация.

Эта форма повторного использования не применяется для установки отношений “родительский-дочерний”.

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

Агрегация (aggregation)

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

Класс-контейнер

 

Класс-часть

 

 

 

 

Пример отношения агрегации

Персональный

компьютер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Системный

 

Монитор

 

 

Клавиатура

 

Мышь

блок

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Композиция (composition)

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

Класс-композит

 

 

Класс-часть

 

 

 

 

 

 

Пример отношения композиции

Окно программы

1 1 1 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

1

 

1

 

Заголовок

 

Полоса

 

 

Рабочая

 

Главное

 

прокрутки

 

 

область

 

меню

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример Car_Radio.

Автомобиль “имеет” радиоприемник.

Было бы нелогично пытаться наследовать класс Car от Radio или наоборот (ведь Car не “является” Radio).

Взамен имеются два независимых класса, работающих совместно, причем класс Car создает и представляет функциональность Radio:

class Radio

{public void Power(bool turnOn)

} Console.WriteLine("Radio on: {0}", turnOn); class Car

//{Car 'имеет' Radio.

private Radio myRadio = new Radio(); public void TurnOnRadio(bool onOff)

// Делегированный вызов внутреннего объекта }myRadio.Power(onOff);

Полиморфизм

Полиморфизм - множественность форм, которые может принимать правило с одним и тем же именем

мощный метод обобщения однотипных задач для многих разных объектов

повышает степень абстрагирования при создании ПО

возможен благодаря позднему связыванию

в случае раннего связывания адреса всех функций и процедур известны в момент компиляции и компоновки программы

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

Доступ к виртуальным методам

Ключевое слово virtual перед объявлением метода в базовом классе.

Соседние файлы в папке лекции по тех прог