Свойства

Поля

Классы и объекты

Основные концепции ООП

К основным концепциям ООП относятся следующие:

1. Инкапсуляция представляет собой объединение данных и обрабатывающих их методов (подпрограмм) внутри класса (объекта). Это означает, что в классе инкапсулируются (объединяются и помешаются внутрь) поля, свойства и методы. При этом класс получает определенную функциональность, например, обеспе­чивая полный набор средств для создания программы поддержки некоторого элемента интерфейса (окна Windows, редактора и т. п.) или прикладной обра­ботки.

2. Наследование – это процесс порождения новых объектов-потомков от сущест­вующих объектов-родителей, при этом потомок наследует от родителя все его поля, свойства и методы. В дальнейшем наследуемые поля, свойства и методы можно использовать в неизменном виде или переопределять (модифицировать).

Просто наследование большого смысла не имеет, поэтому в объект-потомок добавляются новые элементы, определяющие его особенность и функциональность. Удалить какие-либо элементы родителя в потомке нельзя. В свою очередь, от нового объекта можно породить следующий объект, в результате образуется дерево объектов (называемое также иерархией классов).

В корне этого дерева находится базовый класс TObject, который реализует наи­более общие для всех классов элементы, например, действия по созданию и удалению объекта. Чем дальше тот или иной класс отстоит в дереве от базового класса, тем большей специфичностью он обладает.

3. Сущность полиморфизма заключается в том, что методы различных классов могут иметь одинаковые имена, но различное содержание. Это достигается пере­определением родительского метода в классе-потомке. В результате родитель и потомок ведут себя по-разному. При этом обращение к одноименным методам различных объектов выполняется аналогично.

Классы – это специальные типы данных, используемые для описания объектов. Соответственно объект, имеющий тип какого-либо класса, является экземпляром (instance) этого класса или переменной этого типа.

Класс представляет собой особый тип записи, имеющий в своем составе такие элементы (члены, member), как поля, свойства и методы. Поля класса аналогич­ны полям записи и служат дня хранения информации об объекте. Методами называются процедуры и функции, предназначенные для обработки полей. Свойства занимают промежуточное положение между полями и методами. С одной стороны: свойства можно использовать как поля, например, присваивая им значения с помощью инструкции присваивания; с другой стороны, внут­ри класса доступ к значениям свойств выполняют методы класса.

Описание класса имеет следующую структуру:

Туре <Имя класса> = class (<Имя класса-родителя>)

private

<Частные описания>;

protected

<3ащищеные описания>;

public

<Общедоступные описания>;

published

<Опубликованные описания>;

end;

В приведенной структуре описаниями являются объявления свойств, методов и событий.

Пример описания класса:

Type TColorCircle = class (TCircle);

FLeft, FTop, FRight, FBottom: Integer;

Color: TColor;

end;

Здесь класс TColorCircle создается на основе родительского класса TCircle. По сравнению с родительским, новый класс дополнительно содержит четыре поля типа Integer и одно поле типа TColor.

Если в качестве родительского используется класс TObject, который является базовым классом для всех классов, то его имя после слова class можно не ука­зывать. Тогда первая строка описания будет выглвдеть так:

type TNewCIass = class

Для различных элементов класса можно устанавливать разные права доступа (видимости), для чего в описании класса используются отдельные разделы, обозначенные специальными спецификаторами видимости.

Разделы private и protected содержат защищенные описания, которые доступны внутри модуля, в котором они находятся. Описания из раздела protected, кроме того, доступны для порожденных классов за пределами названного модуля.

Раздел public содержит общедоступные описания, которые видимы в любом месте программы, где доступен сам класс.

Раздел published содержит опубликованные описания, которые в дополнение к общедоступным описаниям порождают динамическую (т. е. во время выполне­ния программы) информацию о типе (Run-Time Type Information, RTTI). По этой информации при выполнении приложения производится проверка на принадлежность элементов объекта тому или иному классу. Одним из назначений раздела published является обеспечение доступа к свойствам объектов при кон­струировании приложений. В Инспекторе объектов видны те свойства, которые являются опубликованными. Если спецификатор published не указан, то он подразумевается по умолчанию, поэтому любые описания, расположенные за строкой с указанием имени класса, считаются опубликованными.

Объекты как экземпляры класса объявляются в программе в разделе var как обычные переменные. Как и в случае записей, для обращения к конкретному элементу объекта (полю, свойству или методу) указывается имя объекта и имя элемента, разделенные точкой, т. е. имя элемента является составным.

var

CCircle1: TColorCircle;

CircleA: TCircle;

begin

CCircle1.FLeft:=5; CCirclel.FTop: =1;

end;

Поле класса представляет собой данные, содержащиеся в классе. Поле описывается как обычная переменная и может принадлежать к любому типу.

Пример описания полей:

type TNewClass = class(TObject)

private

FCode: integer;

FSign: char;

FNote: string;

end;

Здесь новый класс TNewclass создается на основе базового класса TObject и получает в дополнение три новых поля FCode, FSign и FNote, имеющих, соот­ветственно, целочисленный, символьный и строковый типы. Согласно приня­тому соглашению имена полей должны начинаться с префикса F (от англ. Field – поле).

При создании новых классов класс-потомок наследует все поля родителя, при этом, удалить или переопределить эти поля нельзя, но можно добавить новые. Таким образом, чем дальше по иерархии какой-либо класс находится от родительского класса, тем больше полей он имеет.

Изменение значений полей обычно выполняется с помощью методов и свойств объекта.

Свойства (property) реализуют механизм доступа к полям. Каждому свойству соот­ветствуют поле, содержащее значение свойства, и два метода, обеспечивающих доступ к этому полю. Описание свойства начинается со слова property, при этом типы свойства и соответствующего поля должны совпадать. Ключевые слова read и write являются зарезервированными внутри объявления свойства и служат для указания методов класса, с помощью которых выполняется чтение значения поля, связанного со свойством, или запись нового значения в это поле.

Пример описания свойств:

type TNewClass = class(TObject)

private

FCode: integer;

FSign: char;

FNote: string;

published

property Code: integer read FCode write FCode;

property Sign: char read FSign write FSign;

property Note: string read FNote write FNote;

end;

Для доступа к полям FCode, FSign и FNote, которые описаны в защищенном разделе и недоступны для других классов, используются свойства Code, Sign и Note соответственно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: