Delphi. Учимся на примерах - [44]

Шрифт
Интервал

>type имя_типа = (элемент1, ... , элементN);

По умолчанию, первому элементу соответствует число 0, второму — 1 и т.д. Для того чтобы сопоставить с каким-либо элементом другое значение, следует использовать запись вида элемент = число.

Для извлечения числа, соответствующего некоторому элементу, используется функция Ord.

Пример:

>type

> TDigits = (Zero, One, Two, Three, Four, Five, Six, Seven Eight, Nine, Ten);

> TConstants = (a = 10, b = 3);

>var

> x: TDigits;

> k: TConstants;

> MyResult: integer;

> …

>k:= b; //k присваиваем значении 3

>if x = Zero then k:= a //если x=0, то к присваиваем 10

> MyResult:= Ord(k); //MyResult = 3 или 10

> …

Подтипы

Подтип определяет некоторый диапазон целочисленных или символьных значений. Для его объявления используют запись вида:

>type имя_типа = начало..конец;

Переменные этого типа не могут принимать значений вне указанного диапазона. Пример:

>type

> TDigits = (Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten); //перечислимый тип

> T123 = One..Three; //подтип

> TABC = 'A'..'C'; //еще один подтип

>var

> i: T123; //переменная I может принимать значения от 1 до 3

> с: TABC; // переменная с может содержать 'A', 'B' или 'C'

Записи

Запись  – это структурированный набор разнотипных элементов. Отдельные элементы записи называются полями. Для объявления записи используется следующая конструкция:

>record

полe1: тип;

> …

полeN: тип;

>end;

Запись можно объявлять как в разделе type, так и в разделе var:

>type TCD = record //запись для хранения данных о музыкальном CD

> Group String; //поле, хранящее название исполнителя

> Year: Integer; //поле, хранящее год альбома

> Title: String; //поле, хранящее название альбома

>end;

>var MyCD: TCD;

или непосредственно

>var MyCD: record

> Group: String;

> Year: Integer;

> Title: String;

>end;

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

>MyCD.Group:= 'Название группы';

>MyCD.Year:= 2005;

>MyCD.Title:= 'Название альбома';

Классы

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

Класс может быть создан на основе другого класса — в этом случае он называется производным, а базовый класс — родительским. Производный класс наследует все свойства и методы родительского класса, а также может содержать собственные уникальные свойства и методы. Для объявления класса используют конструкцию вида:

>type имя_класса = class(имя_родительского_класса)

>published

> {объявление опубликованных членов класса}

>private

> {объявление закрытых членов класса}

>public

> {объявление открытых членов класса}

>protected

> {объявление защищенных членов класса}

>end;

Определение членов класса

Все члены класса по характеру доступа к ним делятся на четыре категории: закрытые (private), защищенные (protected), открытые (public) и опубликованные (published).

Элементы класса, определенные в разделе public, без каких-либо ограничений открыты для доступа извне программного модуля. Без ограничений доступны также и элементы, определенные в разделе published, однако они отличаются тем, что для них генерируется информация о типах времени выполнения (RTTI — Run Time Type Information). Информация RTTI используется для различных целей: например, для организации отображения значений свойств в инспекторе объектов.

Элементы, определенные в разделе private, недоступны за пределами программного модуля, в котором объявлен класс. Другими словами, закрытые члены класса нельзя вызвать из другого модуля.

Элементы, определенные в разделе protected, доступны в модуле, в котором объявлен класс, а также доступны всем членам классов, производных от данного класса.

По умолчанию при создании программных модулей Object Pascal раздел protected не создается, а раздел published не указывается явно. Все члены класса, которые не определены в разделах private и public, по умолчанию относятся к категории published.

Рассмотрим, к примеру, фрагмент объявления класса TForm (модуль Forms.pas), базового для форм в приложениях Delphi:

>TForm = class(TCustomForm) public

>procedure ArrangeIcons;

> procedure Cascade;

> …

>published

> property Action;

> property ActiveControl;

> …

>end;

В данном случае видно, что класс TForm является производным от класса TCustomForm (реализован в том же модуле Forms.pas) и содержит открытые методы ArrangeIcons, Cascade и т.д., а также опубликованные свойства Action, ActiveControl и т.д.

Примечание

Объявление класса и его членов осуществляется в разделе interface программного модуля, а непосредственная реализация свойств и методов — в разделе implementation (структура программного модуля Object Pascal рассматривается ниже).

Во всех модулях форм, автоматически создаваемых Delphi, можно увидеть исходный код следующего вида:

>type TForm1 = class(TForm)

>private

> { Private declarations }

>public

> { Public declarations }

>end;

>var Form1: TForm1;

Это означает, что в модуле приложения объявлен класс TForm1, производный от класса TForm, а затем объявлена переменная типа TForm1. Такие переменные — экземпляры класса — называют объектами.Все компоненты Delphi — это объекты, экземпляры того или иного класса.


Рекомендуем почитать
Графика DirectX в Delphi

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


Вторая жизнь старых компьютеров

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


DirectX 8. Начинаем работу с DirectX Graphics

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.