Читайте также:
|
|
Класс – тип данных для создания объектов.
Объект – экземпляр класса.
Классы объектов определяются в секции type глобального блока. Описание класса начинается с ключевого слова class и заканчивается ключевым словом end. По форме похоже на обычные записи, но помимо полей данных классы могут содержать объявления пользовательских процедур и функций.
Type
TDelimitedReader = class
// поля
FileVar: TextFile;
Items: array of string;
//заголовки методов
procedure PutItem(Index: Integer; constItem: string);
function GetEndOfFile: Boolean;
procedure SetActive(const _Active: Boolean);
end;
Класс содержит поля и методы. Заголовки методов, следующие за списком полей, играют роль упреждающих (forward) описаний.
Класс обычно описывает сущность, моделируемую в программе.
Объявление ссылки на объект класса:
var Reader: TDelimitedReader;
Объекты в Delphi – динамические данные, т.е. распределяются в динамической памяти. Поэтому переменная Reader — это просто ссылка на экземпляр (объект в памяти), которого физически еще не существует.
Объекты могут выступать в программе не только в качестве переменных, но также элементов массивов, полей записей, параметров процедур и функций. Кроме того, они могут служить полями других объектов. Во всех этих случаях программист фактически оперирует указателями на экземпляры объектов в динамической памяти. Следовательно, объекты изначально приспособлены для создания сложных динамических структур данных, таких как списки и деревья. Указатели на объекты для этого не нужны.
В некоторых случаях требуется, чтобы объекты разных классов содержали ссылки друг на друга. Возникает проблема: объявление первого класса будет содержать ссылку на еще не определенный класс. Она решается с помощью упреждающего объявления:
type
TReadersList = class; // упреждающее объявление классаTReadersList
TDelimitedReader = class
Owner: TReadersList;
...
end;
TReadersList = class
Readers: array of TDelimitedReader;
...
end;
Классы удобно помещать в модули: описание помещается в секцию interface, а код методов — в секцию implementation. Создавая модули классов, нужно придерживаться следующих правил:
– все классы, предназначенные для использования за пределами модуля, следует определять в секции interface;
– описание классов, предназначенных для употребления внутри модуля, следует располагать в секции implementation;
– если модуль B использует модуль A, то в модуле B можно определять классы, порожденные от классов модуля A.
Дата добавления: 2015-11-16; просмотров: 58 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Модульное программирования | | | Когда начинается работа с объектом, то он размещается в памяти. |