Книга: Основы объектно-ориентированного программирования
Использование родительской процедуры создания
Использование родительской процедуры создания
Еще один пример иллюстрирует типичный случай переименования процедуры создания класса. Вспомните класс ARRAYED_STACK, полученный порождением от STACK и ARRAY. Процедура создания ARRAY размещает в памяти массив с заданными границами:
make (minb, maxb: INTEGER) is
-- создать массив с границами minb и maxb
-- (пустой если minb > maxb)
do ... end
Для создания стека необходимо создать массив, позволяющий вместить заданное число элементов. Реализация основана на процедуре создания ARRAY:
class ARRAYED_STACK [G] inherit
STACK [G]
redefine change_top end
ARRAY [G]
rename
count as capacity, put as array_put, make as array_make
end
creation
make
feature -- Initialization
make (n: INTEGER) is
-- Создать стек, допускающий размещение n элементов.
require
non_negative_size: n >= 0
do
array_make (1, n)
ensure
capacity_set: capacity = n
empty: count = 0
end
... Другие компоненты ...
invariant
count >= 0; count <= capacity
end
Заметим, что выполнение соглашений об именах - выбор make как стандартного имени базовой процедуры создания - привело бы к конфликту, который, впрочем, не возникает благодаря переименованию, устраняющему заодно двусмысленность в отношении count и put. Оба имени встречаются в каждом классе.
- Восстановление с использованием инструмента gbak
- Типы страниц и их использование
- Использование констант
- Использование переменной окружения ISC_PATH
- Использование сервера Yaffil внутри процесса
- Использование CAST() с типами дата
- Использование типов содержимого и столбцов
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC
- Использование кнопки Автосумма
- 24.7. Использование программы-твикера
- Использование отдельных процессоров XSLT
- 4. Использование подзапросов