где вторая форма подразумевает и требует, чтобы базовый класс для типа
Предположим, что у
some_routine (...) is
local
u_temp: U
do
...; create u_temp.make (...); x := u_temp; ...
end
Это работает, но чересчур громоздко, особенно в контексте многозначного выбора, когда захочется присоединить
create {U} x
create {U} x.make (...)
Результат должен быть тот же, что и у конструкторов create, приведенных выше, но создаваемый объект должен являться прямым экземпляром
Типичное применение связано с созданием экземпляра одного из нескольких возможных типов:
f: FIGURE
...
"Вывести значки фигур"
if chosen_icon = rectangle_icon then
create {RECTANGLE} f
elseif chosen_icon = circle_icon then
create {CIRCLE} f
else
...
end
Этот новый вид конструкторов объектов приводит к введению понятия тип при создании, обозначающего тип создаваемого объекта в момент его создания конструктором:
Для формы с неявным типом
Для формы с явным типом
Динамическое связывание
Динамическое связывание дополнит переопределение, полиморфизм и статическую типизацию, создавая базисную тетралогию наследования.
Использование правильного варианта
Операции, определенные для всех вариантов многоугольников, могут реализовываться по-разному. Например,
Во фрагменте
create p.make (...); x := p.perimeter
ясно, что будет использована версия
create r.make (...); x := r.perimeter
будет использована версия
create r.make (...)
p := r
x := p.perimeter
Правило динамического связывания утверждает, что версию применяемой операции определяет динамическая форма объекта. В данном случае это будет
Конечно, более интересный случай возникает, когда из текста программы нельзя заключить, какой динамический тип будет иметь
-- Вычислить периметр фигуры выбранной пользователем
p: POLYGON
...
if chosen_icon = rectangle_icon then
create {RECTANGLE} p.make (...)
elseif chosen_icon = triangle_icon then
create {TRIANGLE} p.make (...)
elseif
...
end
...
x := p.perimeter
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии