Объявление родового класса
Объявление родового класса
По соглашению родовой параметр обычно, использует имя G (от Generic). Это неформальное правило. Если нужны еще родовые параметры, они будут названы H, I и т.д.
Согласно синтаксису, формальные родовые параметры заключаются в квадратные скобки, следующие за именем класса, подобно синтаксису параметризованного АТД в предыдущей лекции. Например:
indexing
description: "Стек элементов произвольного класса G"
class STACK [G] feature
count: INTEGER
-- Количество элементов в стеке
empty: BOOLEAN is
-- Есть ли элементы?
do ... end
full: BOOLEAN is
-- Стек заполнен?
do ... end
item: G is
-- Вершина стека
do ... end
put (x: G) is
-- Втолкнуть x в стек.
do ... end
remove is
-- Вытолкнуть элемент из стека.
do ... end
end -- class STACK
Формальный родовой параметр G можно использовать в объявлениях класса не только для результата функций (как в item) и формальных аргументов подпрограмм (как в put), но и для атрибутов и локальных сущностей класса.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Объявление переменных
Объявление переменных Как уже говорилось в главе 6, объявление - это VBA-оператор, с помощью которого вы сообщаете компилятору о своих намерениях использовать именованный объект и явно описываете тип этого объекта. Операторы объявлений чаще всего используются для
Объявление констант
Объявление констант Для объявления констант используется ключевое слово Const: Const cstrPetsName As String = "Пушок" Const cDateTarget Date As Date = #5/26/2000# Const cboolUp As Boolean = True Все вполне аналогично объявлению переменных, за исключением того, что при объявлении константы необходимо указать ее значение.
Объявление переменных класса
Объявление переменных класса Для объявления переменных, которые понадобятся в нескольких свойствах или методах, используйте раздел Declarations в самом начале модуля класса. Всегда объявляйте эти переменные как локальные ( Private ), ведь объекты в основном предназначены для
5.2.9.1. Объявление курсоров
5.2.9.1. Объявление курсоров DECLARE cursor_name CURSOR FOR select_statementЭта инструкция объявляет курсор. Много курсоров может быть объявлено в подпрограмме, но каждый курсор в данном блоке должен иметь уникальное имя.Инструкция SELECT не может иметь предложение
Объявление тега
Объявление тега Объявление типа структуры, объединения или перечислимого типа имеет такую же синтаксическую форму, как и объявление переменной этих типов, однако в объявлении типа идентификатор переменной (а в общем случае описатель) опущен. Именем типа структуры,
Объявление typedef
Объявление typedef Синтаксис:typedef <спецификация типа> <описатель> {,<описатель>…];Объявление typedef синтаксически аналогично объявлению переменной или функции, за исключением того, что вместо спецификации класса памяти записывается ключевое слово typedef и отсутствует
Объявление функции
Объявление функции Объявление функции определяет ее имя, тип возвращаемого значения, класс памяти и может также задавать тип некоторых или всех аргументов функции. Детальное описание синтаксиса объявлений функции дано в разделе 3.5. В разделе 3.6 рассмотрена зависимость
Объявление данных
Объявление данных Если непосредственно за ключевым словом near, far или huge следует идентификатор, то это значит, что соответствующий элемент данных будет размещен в стандартном сегменте (для near) или может быть размещен в другом сегменте данных (для far или huge). Например,
Объявление функций
Объявление функций Правила применения модификаторов near и far в объявлениях функций аналогичны правилам применения их в объявлениях данных. Если непосредственно за модификатором следует имя функции, то данное ключевое слово определяет, в каком сегменте будет размещена
13.1.5. Объявление и определение класса
13.1.5. Объявление и определение класса О классе говорят, что он определен, как только встретилась скобка, закрывающая его тело. После этого становятся известными все члены класса, а следовательно, и его размер.Можно объявить класс, не определяя его. Например:class Screen; //
18.5.1. Объявление виртуального базового класса
18.5.1. Объявление виртуального базового класса Для указания виртуального наследования в объявление базового класса вставляется модификатор virtual. Так, в данном примере ZooAnimal становится виртуальным базовым для Bear и Raccoon:// взаимное расположение ключевых слов public и virtual//
Использование родового класса
Использование родового класса Клиент может использовать родовой класс для объявления собственных сущностей, задающих стек. В этом случае в момент объявления следует задать фактический тип элементов стека - фактический родовой параметр, например:sp: STACK [POINT]Если у класса
Операции над сущностями родового типа
Операции над сущностями родового типа В родовом классе C [G, H, ...] рассмотрим сущность, чей тип - один из формальных родовых параметров, например x типа G. Когда класс используется клиентом для объявления сущностей, G, разумеется, может представлять любой тип. Поэтому любая
У10.3 Использование своего формального родового параметра фактически как чужого
У10.3 Использование своего формального родового параметра фактически как чужого Сконструируйте пример, в котором подпрограмма родового класса C [G] вызывает подпрограмму, объявленную в другом родовом классе D [G], имеющую формальный параметр типа
Ограничение родового параметра
Ограничение родового параметра Эти наблюдения дают решение. Мы должны оперировать исключительно терминами классов и типов.Потребуем, чтобы любой фактический параметр, используемый классом VECTOR (в других примерах по аналогии), был типом, поставляемым с множеством