32. Классы и объекты Объекты
Компилятор FPC поддерживает объектно-ориентированное программирование (ООП). Объекты могут быть интерпретированы, как специальный тип записи, в которой опеределены поля со ссылками на используемые методы. Запись содержит все поля, которые декларируются при объявлении объектов, и указатели на методы, которые ассоциируются с этим объектным типом.
ООП позволяет:
Сократить объем и трудоемкость подготовки программ, имеющих дело с множеством связанных друг с другом объектов.
Сделать объекты практически независимыми друг от друга.
Защитить внутреннюю реализацию объектов.
Создаваемое приложение состоит из объектов, которые взаимодействуют друг с другом. Каждый объект – экземпляр класса с конкретными данными,создается в динамической памяти.
Для обратной совместимости со старыми версиями компилятора сохранен тип TObject, позволяющий создавать объекты в статической памяти..
Классы
Класс – это обобщение объекта.
Класс – тип, сочетающий в себе абстрактные данные и методы. Экземпляр класса – объект. Он содержит конкретныеданные.
Класс содержит в себе члены. Членом класса может быть:
Поле (Field) с данными. Согласно принятому соглашению имена полей начинают с буквы F.
Свойство (Property) для доступа к полям.
Метод (процедура или функция), определяющее поведение объекта.
Событие (Event), на которые объект реагирует.
Члены класса могут группироваться. Группы регулируют видимость членов класса:
Private – частные. Доступны внутри модуля, где они находятся.
Protected –защищенные. Доступны внутри модуля, где они находятся, и для порожденных классов.
Public – общедоступные. Доступны в любом месте программы, где доступен класс.
Published – опубликованные. Дополнительно к public порождают информацию во время выполнения программы для проверок.
В классе-потомке можно изменять видимость свойств в сторону повышения. Например, свойство из раздела protected можно перенести в public, но не в private. Доступ к члену класса по составному имени: <Класс>.<Член класса>
Классы и объекты могут наследовать поля и методы у своих предков. Это означает, что эти поля и методы могут быть использованы так, будто они были включены в классы или объекты, объявляемые как потомки.
Классы FPC организованы иерархически. Верхушка иерархического дерева – абстрактный класс TObject, определенный в модуле System. В нем определены средства, необходимые всем классам: конструктор, деструктор и др. Основные классы:
Класс |
Описание |
TCollection |
Коллекция именованных объектов. |
TComponent |
Базовый класс для компонент ИСР. |
TStream |
Базовый класс, предок всех потоковых классов. |
TFileStream |
Работа с файлами. Потомок TStream. |
TMemoryStream |
Работа с памятью. Потомок TStream. |
TStringStream |
Работа со строками ANSIString. Потомок TStream. |
TList |
Коллекция указателей. |
TParser |
Синтаксический анализатор. |
TPersistent |
Базовый класс, предок всех потоковых систем. |
TStrings |
Абстрактный класс для массивов строк String. |
TThread |
Работа с нитями. |
Для классов поддерживаются:
Инкапсуляция. Скрытие данных и методов. Для данных используются именно их методы обработки.
Наследование. Потомок наследует все данные предка.
Полиморфизм. Под одним и тем же именем могут определяться функционально сходные методы разных объектов.
