Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Делегирование методов

Читайте также:
  1. Взаимодействие наук и методов
  2. Влияние ошибок синхронизации на помехоустойчивость методов приема
  3. Во-первых, необходимо максимально гласное разъяснение сущности этой битвы, стратегии и методов Дана, который выступает здесь как агрессор физический, политический и духовный.
  4. Воздействие на легкие с помощью дыхания — один из самых эффективных методов их очищения.
  5. Вопрос №33 Метод и методология. Классификация методов научного познания
  6. Делегирование руководства

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

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

Следует различать статическое и динамическое делегирование. При статическом делегировании соответствующий указатель инициализируется в процессе компиляции программы и при выполнении программы не меняется. При динамическом делегировании значение указателю присваивается в процессе выполнения программы и может изменяться в зависимости от ситуации.

Статическое делегирование используется в двух случаях:

1) если требуемое поведение объекта уже описывалось для объектов
другого класса - в этом случае делегирование позволяет избавиться от повторов
в программе;

Примечание. В C++ в аналогичных случаях возможно использование множественного наследования, но оно может оказаться неэффективным, поскольку вместе с желаемым поведением придется унаследовать и все остальные элементы класса.

2) если класс объявлен с не полностью определенным поведением объектов (обычно так описываются некоторые библиотечные классы) и его поведение уточняется для конкретных экземпляров объектов.

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

Пример

Делегирование методов (класс «Фигура»). Рассматривается объектная декомпозиция простейшего текстового редактора, позволяющего рисовать окружности и квадраты с изменяющимися размером, цветом и положением. В результате этой декомпозиции получены три объекта: «Монитор», «Круг» и «Квадрат» (рис.).

Те же действия будет выполнять программа, при разработке которой использован объект с динамическим поведением. Объектная декомпозиция текстового редактора в этом случае будет включать два объекта – «Монитор» и «Фигура» (рис.).

Вариант 1. Класс Фигура описан без указания конкретного варианта выводимой фигуры.

Класс «Фигура 1»:


Дата добавления: 2015-09-06; просмотров: 202 | Нарушение авторских прав


Читайте в этой же книге: Объектная декомпозиция | Объекты и сообщения | Т: Классы | Конец описания. | Простой полиморфизм | Конец описания. | Композиция при разработке классов | Цикл-пока <очередной элемент> определен | Исключения при разработке классов |
<== предыдущая страница | следующая страница ==>
Наполнение при разработке классов| Контейнерные классы

mybiblioteka.su - 2015-2024 год. (0.006 сек.)