- •1. Основные понятия объектно-ориентированного программирования
- •2. Определение класса. Инкапсуляция. Синтаксис и программирование свойств
- •2.1. Поля
- •2.2. Свойства
- •3. Методы
- •4. Наследование
- •5. Полиморфизм
- •6. Создание и уничтожение объектов. Конструкторы. Деструкторы
- •7. Области видимости
- •8. Динамическая информация о типе. Оператор Is и оператор As
7. Области видимости
Object Pascal имеет несколько ключевых слов - директив, которые определяют видимость элементов, объявленных в интерфейсе (объявлениях) класса. Объявление класса может быть разделено на разделы, каждый из которых начинается с одного из ключевых слов - стандартных директив класса. Они определяют области видимости его элементов. Разделы могут быть: основной (общий), private (частный, личный), protected (защищенный), public (публичный, общий) и published (опубликованный). Каждый раздел объявления может включать поля, свойства и методы.
Структура объявления класса:
Туре
имя-класса = class ( имя-родителя)
объявление (published) полей и методов;
private объявление полей и методов;
protected объявление полей и методов;
public объявление полей и методов;
published объявление полей и методов;
end;
Поля, свойства и методы секции public не имеют ограничений на видимость. Они доступны из других методов как в данном модуле, так и из всех других модулей, ссылающихся (uses) на данный модуль.
Поля, свойства и методы секции private доступны только в методах класса того же модуля, что и описываемый класс. Это позволяет скрыть от всех остальных модулей детали реализации данного класса.
Поля, свойства и методы секции protected доступны только из методов данного модуля и из модулей классов - потомков данного класса. Такие элементы необходимы для разработчиков новых компонентов - потомков существующих.
В секции published должны быть собраны те свойства объекта, которые будут видны не только во время исполнения приложения, но и из среды разработки. Все свойства компонентов, доступные через Инспектор объектов Delphi, являются их опубликованными свойствами. Во время выполнения программы такие свойства общедоступны, как и свойства секции public.
Первый (общий) раздел (до объявления, разделов, сразу после строки со словом class) определения класса по умолчанию является published - разделом.
8. Динамическая информация о типе. Оператор Is и оператор As
Объекты содержат информацию о типе и наследовании, которую можно использовать во время выполнения приложения, например, для проверки принадлежности объекта к определенному типу.
Большинству методов при вызове передается параметр Sender типа TObject. Для выполнения операций над свойствами объекта, вызвавшего метод, в ряде случаев надо привести его к типу объекта, над которым выполняются операции. Приведение (преобразование) типа может быть явное и неявное.
Для операций с типами в Object Pascal используются операция is и оператор AS (как). Операция is (есть) используется в логическом выражении для определения принадлежности параметра к заданному классу. Формат выражения с этой операцией:
<0бъект> is <Класс>
Оператор AS предназначен для приведения одного типа к другому (заданному) и используется в выражении вида:
<0бъект> As <Класс>
Пример приведения типа:
Procedure TForm1.Button1CHck(Sender: TObject);
begin
If (Sender is TButton) // - проверка принадлежности к типу TButton
then (Sender As TButton).Caption := TimeToStr(Now);
End;
При нажатии на кнопку Button 1 в качестве надписи на ней отображается текущее время. Используется неявное преобразование типа (Sender as TButton).
Использование параметра Sender и приведение типа целесообразно, если метод обработки события используется для нескольких компонентов разного типа.
Явное приведение типа производится с помощью конструкции:
<Тип> (<0бъект>)
Пример явного преобразования типа:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
TButton (Sender).Caption := 'Кнопка';
end;
где TButton (Sender) - явное преобразование к типу TButton.