Классы и объекты
Объекты
Компилятор 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 | Работа с нитями. |
Для классов поддерживаются:
- Инкапсуляция. Скрытие данных и методов. Для данных используются именно их методы обработки.
- Наследование. Потомок наследует все данные предка.
Полиморфизм. Под одним и тем же именем могут определяться функционально сходные методы разных объектов.