Сделай Сам Свою Работу на 5

Четыре режима доступа к описаниям класса.





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

 

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

Разделы private и protected содержат защищенные описания, которые доступны внутри модуля, в котором они находятся. Описания из раздела protected, кроме того, доступны для порожденных классов за пределами названного модуля.

Раздел public содержит общедоступные описания, которые видимы в любом месте программы, где доступен сам класс.

Раздел published содержит опубликованные описания, которые в дополнение к общедоступным описаниям порождают динамическую (т. е. во время выполнения программы) информацию о типе (Run-Time Type Information, RTTI). По этой информации при выполнении приложения производится проверка на принадлежность элементов объекта тому или иному классу. Одним из назначений раздела published является обеспечение доступа к свойствам объектов при конструировании приложений.

Пример.Обращение к полям объекта.

var

CCirclel: TColorCircle;

begin

CCirclel.FLeft:=5;

CCirclel.FTop:=l;

end;



Здесь приведено непосредственное обращение к полям объекта, обычно это делается с помощью методов и свойств класса.

 

 



Описание полей и свойств класса.

Свойства

Свойства реализуют механизм доступа к полям. Каждому свойству соответствует поле, содержащее значение свойства, и два метода, обеспечивающих доступ к этому полю. Описание свойства начинается со слова property, при этом типы свойства и соответствующего поля должны совпадать. Ключевые слова read и write являются зарезервированными внутри объявления свойства и служат для указания методов класса, с помощью которых выполняется чтение значения поля, связанного со свойством, или запись нового значения в это поле.


Методы класса. Способы их вызова.

Методпредставляет собой подпрограмму (процедуру или функцию), являющуюся элементом класса. Описание метода похоже на описание обычной подпрограммы модуля. Заголовок метода располагается в описании класса, а сам код метода находится в разделе реализации. Имя метода в разделе реализации является составным и включает в себя тип класса.



Например, описание метода Button1c1ick будет выглядеть так:

 

Метод, объявленный в классе, может вызываться различными способами, что зависит от вида этого метода. Вид метода определяется модификатором, который указывается в описании класса после заголовка метода и отделяется от заголовка точкой с запятой. Приведем некоторые модификаторы: virtual — виртуальный метод; dynamic — динамический метод; override — переопределяемый метод; message — обработка сообщения. По умолчанию все методы, объявленные в классе, являются статическими и вызываются как обычные подпрограммы.

Методы, которые предназначены для создания или удаления объектов, называются конструкторами и деструкторами, соответственно. Описания данных методов отличаются от описания обычных процедур только тем, что в их заголовках стоят ключевые слова constructor и destructor. В качестве имен конструкторов и деструкторов в базовом классе Tobject и многих других Классах используются имена Create и Destroy.

Прежде чем обращаться к элементам объекта, его нужно создать с помощью конструктора. Например:

ObjectA := TOwnClass.Create;

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


События и процедуры их обработки.

Сообщения и события



В основе ОС Windows лежит использование механизма сообщений, которые "документируют" все производимые действия, например, нажатие клавиши, передвижение мыши или тиканье таймера. Приложение получает сообщение в виде записи заданного типа. Система Delphi преобразовывает сообщение в свой формат.

Для обработки сообщений, посылаемых ядром Windows и различными приложениями, используются специальные методы, описываемые с помощью модификатора message, после которого указывается идентификатор сообщения.

Метод обработки сообщения обязательно должен быть процедурой, имеющей один параметр, который при вызове метода содержит информацию о поступившем сообщении. Имя метода программист выбирает самостоятельно, для компилятора оно не имеет значения.

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

Пример.Назначение обработчика события.

Application.Onidle:=IdleWork;

В качестве обработчика события onidle, возникающего при простое приложения, объекту приложения назначается процедура idlework. Так какобъект Application доступен только при выполнении приложения, то такое присваивание нельзя выполнить через Инспектор объектов.

События Delphi имеют различные типы, зависящие от вида этого события. Самым простым является тип TNotifyEvent, который характерен для нотификационных (уведомляющих) событий. Этот тип описан так:

type TNotifyEvent = procedure (Sender: TObject) of object;

и содержит один параметр Sender, указывающий объект-источник события. Многие события более сложного типа, наряду с другими параметрами, также имеют параметр Sender.

 


Принцип наследования.

Любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя класса-родителя: TChildClass =class (TParentClass)

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

Все классы Object Pascal порождены от единственного родителя класса TObject. Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов - от их создания до уничтожения. Программист не может создать класс, который не был бы дочерним классом TObject. Следующие два объявления идентичны:

TaClass = class(TObject) TaClass =class

Принцип наследования приводит к созданию ветвящегося дерева классов, постепенно разрастающегося при перемещении от TObject к его потомкам. Каждый потомок дополняет возможности своего родителя новыми и передает их своим потомкам.

 


Принцип полиморфизма

Полиморфизм - это свойство классов решать схожие по смыслу проблемы разными способами. В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющих разную алгоритмическую основу и, следовательно, придающих объектам разные свойства. Это и называется полиморфизмом объектов.

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

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.