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 — это объекты, экземпляры того или иного класса.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.