Наиболее общим понятием здесь является
transform (f: FIGURE) is
-- Применить специфическое преобразование к f.
do
f.rotate (...)
f.translate (...)
end
с соответствующими значениями опущенных аргументов. Тогда все следующие вызовы корректны:
transform (r) -- для r: RECTANGLE
transform (c) -- для c: CIRCLE
transform (figarray.item (i)) -- для массива фигур: ARRAY [POLYGON]
Иными словами, требуется применить преобразования
Это действительно работает и является типичным примером элегантного стиля, ставшего возможным благодаря полиморфизму и динамическому связыванию, стиля, основанного на принципе Единственного выбора. Требуется только переопределить
Но переопределять-то нечего! Класс
Таким образом, мы имеем ситуацию, в которой процедура
Можно, конечно, ввести на уровне класса
Отложенный компонент
Таким образом, нужен способ спецификации компонентов
rotate (center: POINT; angle: REAL) is
-- Повернуть на угол angle вокруг точки center.
deferred
end
и аналогично будет объявлен компонент
Объявленный таким образом компонент называется отложенным
компонентом. Компонент, не являющийся отложенным, - имеющий реализацию (например, любой из ранее встретившихся нам компонентов), называется эффективным.Эффективизация компонента
В некоторых собственных потомках класса
class POLYGON inherit
CLOSED_FIGURE
feature
rotate (center: POINT; angle: REAL) is
-- Повернуть на угол angle вокруг точки center.
do
... Команды для поворота всех вершин ...
end
...
end
Заметим, что
Этот процесс обеспечения реализацией отложенного компонента называется эффективизацией (effecting)
. (Эффективный компонент - это компонент, снабженный реализацией.)Не нужно в предложении redefine
некоторого класса описывать отложенные компоненты, получающие реализацию, поскольку у них не было настоящего определения в месте объявления. В этом классе просто помещаются определения таких компонентов, совместимые по типам с их первоначальными объявлениями как, например, в случае компонентаЗадание реализации компонента, конечно, близко к его переопределению и, за исключением включения в предложении redefine
, подчиняется тем же правилам. Поэтому нужен общий термин.Определение: повторное объявление
Повторное объявление компонента - означает определение или переопределение его реализации.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии