Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АИСд шпора2.docx
Скачиваний:
8
Добавлен:
27.09.2019
Размер:
86.39 Кб
Скачать

29.Класс как тип данных.

Класс - это тип данных, определяемый

пользователем. То, что в Delphi имеется множество

предопределенных классов не противоречит этому определению - ведь разработчики Delphi тоже пользователи Object Pascal. Класс должен быть объявлен до того, как будет объявлена хотя бы одна переменная этого класса. Т.е. класс не может объявляться внутри объявления

переменной. Класс должен объявляться с областью видимости программы или модуля.

Синтаксис объявления класса следующий:

Type

<имя класса> = Class (<имя класса - родителя>)

public {доступно всем}

<поля, методы, свойства, события>

published {видны в Инспекторе Объекта и изменяемы}

<поля, свойства>

protected {доступ только потомкам}

<поля, методы, свойства, события>

private {доступ только в модуле}

<поля, методы, свойства, события>

End;

Имя класса может быть любым допустимым

идентификатором. Но принято идентификаторы

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

непосредственным наследником TObject – наиболее общего из предопределенных классов. Класс наследует поля, методы, свойства, события от своих предков и может отменять какие-то из этих элементов класса или вводить новые. Доступ к объявляемым элементам класса определяется тем, в

каком разделе они объявлены.

30.Области видимости классов. • Раздел public (открытый) предназначен для объявлений,которые доступны для внешнего использования. Это открытый интерфейс класса.

• Раздел published (публикуемый) содержит открытые свойства,

которые появляются в процессе проектирования на странице свойств Инспектора Объектов и которые, следовательно,

пользователь может устанавливать в процессе проектирования.

• Раздел private (закрытый), содержит объявления полей,

процедур и функций, используемых только внутри данного

класса.

• Раздел protected (защищенный) содержит объявления,

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

защищенных элементов от конечного пользователя. Однако, в

отличие от закрытых, защищенные элементы остаются доступны для программистов, которые захотят производить от

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

Объявление полей и методов

• Объявление полей выглядят так же, как

объявление переменных или объявление

полей в записях:

<имя поля>: <тип>;

• Объявление методов в простейшем случае

также не отличаются от обычных объявлений процедур и функций.

31. Базовый класс всех объектов – Tobject.

Класс TObject(Модуль System) инкапсулирует (включает) основные функции, свойственные всем объектам Delphi.

Интерфейс TObject обеспечивает:

- Возможность создания, управления и разрушения

экземпляров объектов, включая выделение под них памяти,

инициализацию и освобождение памяти после их

уничтожения

- Поддержку информации об объектах и типах (run-time

type information - RTTI)

- Поддержку обработки сообщений.

• Все классы в Delphi являются прямыми или

косвенными наследниками TObject. Прямое наследование используется только при объявлении простых классов, объекты которых не являются

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

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

считает TObject предком нового класса.

• Большинство методов TObject не используются

непосредственно в компонентах, с которыми имеет дело пользователь. Исходные методы TObject обычно перегружены в классах-наследниках или

заменены другими, построенными на их основе.

• Хотя формально TObject не является абстрактным

классом, но объекты этого класса создавать нельзя.

Основные методы класса TObject.

Create Конструктор. Не осуществляет инициализацию

каких-то данных, так что перегружается в классах-

наследниках.

ClassName Возвращает имя типа объекта

ClassNameIs Возвращает true, если передаваемое в функцию

имя совпадает с именем данного класса

ClassParent Возвращает тип непосредственного предка данного класса

Destroy Вызов деструктора объекта. Вместо Destroy

всегда лучше использовать Free

Free Уничтожает объект и освобождает выделенную под него память. Автоматически вызывает Destroy, если объект существует.

InheritsFrom Определяет, является ли указанный класс

предком данного объекта.