Студопедия — ОБЪЯВЛЕНИЕ КЛАССА
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ОБЪЯВЛЕНИЕ КЛАССА






Любой вновь создаваемый класс может содержать секции (разделы), определяемые зарезервированными словами published (опубликованные), private (закрытые), protected (защищенные), public (доступные) и automated (автоматизированные). Внутри каждой секции вначале определяются поля, а затем - методы и свойства.

Секции определяют области видимости элементов описания класса. Секция public не накладывает ограничений на область видимости перечисляемых в ней полей, методов и свойств - их можно вызывать в любом другом модуле программы. Секция published также не ограничивает область видимости, однако в ней перечисляются свойства, которые должны быть доступны не только на этапе исполнения, но и на этапе конструирования программы (т. е. в окне Инспектора объектов). Секция published используется только при разработке нестандартных компонентов. Замечу, что среда Delphi помещает описания компонентов, вставленных в форму, в специальную секцию без названия, которая располагается сразу за заголовком класса и продолжается до первой объявленной секции. Эта секция - published. Программисту не следует помещать в нее собственные элементы описания класса или удалять из нее элементы, вставленные средой. Секция private сужает область видимости до минимума: закрытые элементы описания доступны только внутри методов данного класса и подпрограммах, находящихся в том же модуле, где описан класс. Элемент, объявленный в секции private, становится недоступным даже ближайшим потомкам класса, если они размещаются в других модулях. Секция protected доступна только методам самого класса, а также любым его потомкам, независимо от того, находятся ли они в том же модуле или нет. Наконец, секция automated используется только для объявления свойств и методов, которые будут добавлены к так называемому интерфейсу OLE-объектов Автоматизации; область видимости членов этой секции не ограничена.

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

Следующий фрагмент кода поясняет области видимости.

Unit Unit1;

Interface

Uses Controls, Forms;

Type

TFormI = class (TForm)

Buttoni: TButton; // Эта секция обслуживается Delphi

// Ее элементы доступны всем
// Эта секция доступна в модуле Uniti

private
FIntField: Integers
Procedure SetValue(Value: Integers);
Function GetValue: Integer;
published
// Эта секция доступна в любом модуле

Property IntField: read GetValue write SetValue;

protected // Эта секция доступна классам-потомкам

Procedure Proc1;

public // Эта секция доступна в любом модуле Procedure Proc2;

End;

Var

Formi: TForm1;

Implementation Procedure TFormI.Proc1;

Buttoni.Color:= clBtnFace;1

// Так можно

FIntField:= 0;

// Так можно

IntField:= 0;1

// Так можно Proc1;

// Так можно Proc2;1

// Так можно

End;

Begin

Form1.Button1.Color:= clBtnFace; // Так можно

Form1.FIntField:= 0; // Так можно

Form1.IntField:= 0; // Так можно
Form1.Proc1; // Так нельзя!
Form1.Proc2; // Так можно

End.

Unit Unit2;

Interface

Uses Controls, Unit1;

Type

TForm2 = class(TFormI) Button2: TButton;

Procedure Button2Click(Sender: TObject);

End;

Var

Form2: TForm2;

Implementation

Procedure TForm2.Button2Click(Sender: TObject);

Begin

Buttoni.Color:= clBtnFace; // Так можно

FIn'tField:= 0; // Так нельзя!

IntField:= 0; // Так можно

Proc1; // Так можно

Proc2; // Так можно

End;

Begin

Form1.Buttoni.Color:= clBtnFace; // Так можно

Form1.FIntField:= 0; // Так нельзя!

Form1.IntField:= 0; // Так можно

Form1.Proc1; //Так нельзя!

Form1.Proc2; // Так можно

End.

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

Type

TForm2 = class(Tform1)

Public

Procedure Proc1;

End;

После этого в модуле unit2 возможно такое обращение:

Form2.Proc1;

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

Класс может объявляться только в интерфейсной области модуля или в самом начале области реализации. Нельзя определять классы в разделе описаний подпрограмм.







Дата добавления: 2015-10-18; просмотров: 393. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

Типы конфликтных личностей (Дж. Скотт) Дж. Г. Скотт опирается на типологию Р. М. Брансом, но дополняет её. Они убеждены в своей абсолютной правоте и хотят, чтобы...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия