Технологии программирования
Шрифт:
Как
10. ФУНКЦИИ КЛАССА
В Object Pascal имеется возможность определения полей процедурного типа. Очевидно, что в теле функций, привязываемых к этим полям, разработчику необходим доступ к другим полям объекта, методам и т. п. Возможность такого доступа базируется на передаче в эти функции неявного, но доступного в их коде параметра, автоматически принимающего значение поля объекта Self. Такие функции называются функциями классов. Для объявления функций классов необходимо использовать специальную конструкцию function … of object.
11. ПРИВЕДЕНИЕ ТИПОВ
На операции с переменной определенного типа компилятор обычно налагает ограничения, разрешая выполнение только тех операций, которые характерны для указанного типа данных. Иногда компилятор осуществляет автоматическое приведение типа, например, при присвоении целого значения действительной переменной.
В языке Pascal имеется механизм явного приведения типов.
В операции is определяется, принадлежит ли данный объект указанному типу или одному из его потомков.
Выражение, представленное в следующем примере, возвращает True, если переменная AnObject ссылается на образец объектного типа TMyClass или одного из его потомков.
Сама по себе операция is не является операцией задания типа. В ней лишь проверяется совместимость объектных типов. Для корректного приведения типа объекта применяется операция as:
Возможен и такой способ приведения типа без явного указания as.
В
Таким образом, в конструкции as операция явного приведения типа оказывается заключенной в безопасную оболочку:
12. ОБЪЕКТНАЯ ССЫЛКА
Delphi позволяет создать специальный описатель объектного типа (именно на тип, а не на экземпляр!), известный как object reference — объектная ссылка.
Объектные ссылки используются в следующих случаях:
— тип создаваемого объекта не известен на этапе компиляции;
— необходим вызов метода класса, чей тип не известен на этапе компиляции;
— в качестве правого операнда в операциях проверки и приведения типов с использованием is и as.
Объектная ссылка определяется с использованием конструкции class of… Приведем пример объявления и использования class reference:
Таким образом, в Delphi определена специальная ссылка TClass, совместимая по присваиванию с любым наследником TObject. Аналогично объявлены классы: TPersistentClass и ТСотроnentClass.
13. СТРУКТУРНАЯ ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ
Под исключительной ситуацией (raise) здесь понимается ситуация, которая не позволяет без особых дополнительных мер продолжить выполнение программы, например деления на ноль, переполнения разрядной сетки, извлечения квадратного корня из отрицательного числа и т. д.