- •1. Основные понятия объектно-ориентированного программирования
- •2. Определение класса. Инкапсуляция. Синтаксис и программирование свойств
- •2.1. Поля
- •2.2. Свойства
- •3. Методы
- •4. Наследование
- •5. Полиморфизм
- •6. Создание и уничтожение объектов. Конструкторы. Деструкторы
- •7. Области видимости
- •8. Динамическая информация о типе. Оператор Is и оператор As
Объектно-ориентированное программирование
1. Основные понятия объектно-ориентированного программирования
Pascal фирмы Borland стал объектно-ориентированным в версии 5.5. В Object Pascal модель объектов языка преобразована коренным образом. Модель объектов построена на принципах ООП, которые определяют правила использования объектов. Delphi поддерживает сразу 2 модели: старую (для совместимости со старыми программами, написанными, например, на Turbo Pascal 5.5, 6.0 или 7.0) и новую, ориентированную на среду визуального программирования. Для объявления объектов старой модели используется ключевое слово Object. Вся структура приложений Delphi базируется на иерархии объектов на основе классов. Концепцию ООП характеризует следующее:
-
Оно использует объекты как строительные блоки.
-
Объектный тип - это совокупность элементов данных и методов (для операций над данными), скомпонованных вместе для удобства использования; объединение данных и подпрограмм их обработки называется инкапсуляцией.
-
Каждый объект - переменная - это представитель (экземпляр) определенного класса.
-
Классы связаны друг с другом соотношениями наследования, с помощью которых объекты могут расширяться; при этом описания существующих объектов могут многократно использоваться при описании новых объектов; наследование предоставляет механизм моделирования отношений реального мира.
-
Представителями класса могут быть представители как непосредственного класса, так и любого класса предка.
2. Определение класса. Инкапсуляция. Синтаксис и программирование свойств
Суть ООП составляют 3 принципа: инкапсуляция, наследование и полиморфизм. Инкапсуляция означает объединение данных и действий над ними в одном объектном типе.
Фундаментальным понятием ООП является понятие класса. Class - это ключевое слово для объявления объектного типа. Оно пришло в язык вместе с системой Delphi, которая потребовала создания классов для поддержки визуальных компонентов. В программах на Delphi надо использовать слово class при объявлении собственных объектных типов. Ключевое слово Object - устаревшее и будет удалено в будущих версиях Delphi.
Class - это объектный структурированный тип, который может иметь в своем составе поля, свойства и методы.
Например:
Туре
TMyObject = class (TObject)
MyField : integer; // - поле;
Color: TColor; // - свойство;
Function MyHethod : integer; // - метод;
end; // - конец объявления объекта
Класс инкапсулирует (encapsulate) данные и код, из совокупности которых формируются представители (member - члены) класса. Класс может быть наследником (inherit) другого класса. Например, класс TForml наследник класса TForm, который поддерживает Delphi. Таким образом, класс TForml является потомком (descendant - происходит от) класса TForm.
Тексты на Object Pascal представляются в виде модулей (pas - файлов). Классы могут быть объявлены в секции интерфейса (interface) или в секции реализации (implementation) модуля. Определение классов внутри подпрограмм и других блоков не допускается.
Интерфейс типа class - это совокупность всех элементов описания класса: полей, методов и свойств.
Объект или экземпляр объекта - это конкретный экземпляр, созданный в соответствии с его объявлением с помощью класса (class).
Объект может содержать другой объект. Например, объект формы может содержать объект кнопки. В этом случае объект-владелец ответствен за создание и уничтожение объекта, который он содержит.
Объект может быть ассоциирован с другим объектом, т. е. содержать ссылку на другой объект. Он может вызывать его методы и использовать его поля, но не создавать и уничтожать другой объект. Обычно ссылки на другие экземпляры передаются через параметры.
Для использования переменной нового типа в программе ее надо объявить. Переменная типа класс - это переменная объектного типа и называется экземпляром класса или объектом. Например:
Var AMyObject : TMyObject;
В Object Pascal объекты (экземпляры классов) могут быть только динамическими т. е. в приведенном примере переменная AMyObject является указателем, содержащим адрес объекта. Любая переменная объектного (классового) типа есть указатель. Причем форма обращения к объектам в Object Pascal отличается от формы обращения к динамическим объектам языка Pascal. Для обращения к полям и методам объекта в Object Pascal не надо использовать символ ‘^’. Например, для обращения к полю MyField и методу MyMethod надо писать:
AMyObject.MyField := AMyObject.MyMethod(Data); //- в Object Pascal;
вместо:
AMyObject^.MyField := AMyObject^.MyMethod(Data); // - в Pascal.