Лекция

Лекция 3

Тема: Объектная модель Delphi Pascal. Определение класса. Особенности реализации переопределения методов. Виртуальные методы. Абстрактные методы. Перегрузка методов.

Цель: дать понятие объектной модели, познакомить с определением класса

Объектная модель Delphi Pascal по сравнению с моделью, использованной Borland Pascal 7.0., является более полной. Она включает:

·                    ограничение доступа к полям и методам за счет определения собственного интерфейса к каждому полю класса (5 типов секций при объявлении класса, свойства);

·                             более развитые механизмы реализации полиморфных методов (абстрактные, динамические методы);

·                    средства работы с метаклассами (переменные метаклассов, методы классов, механизм RTTI);

·                    возможность делегирования методов (указатели на методы) и т. д.

Определение класса.

Все классы, используемые в Delphi (уже определенные в библиотеках объектов и создаваемые разработчиком для конкретного приложения), наследуются от класса TObject.
Формат описания нового класса выглядит следующим образом:

Type <имя объявляемого класса> = class(<имя родителя>)
private <скрытые элементы класса>
protected <защищенные элементы класса>
public <общедоступные элементы класса>
published <опубликованные элементы класса>
automated <элементы, реализующие OLE-механизм>
end;

Имя родителя указывать не обязательно, по умолчанию считается, что, если имя родителя не указано, то класс непосредственно наследуется от TObject.
Внутри описания класса выделяется до пяти секций.
Секция private содержит внутренние элементы, обращение к которым возможны только в пределах модуля (а не класса, как в С++), содержащего объявление класса.
Секция protected содержит защищенные элементы, которые доступны в пределах модуля, содержащего объявление класса, и внутри потомков класса.
Секция public содержит общедоступные элементы, к которым возможно обращение из любой части программы.
Секция published содержит опубликованные элементы, которые по ограничению доступа аналогичны public. Для визуальных компонент, вынесенных на панель компонент, информация об элементах, размещенных в этой секции, становится доступной через Инспектор Объектов.
Секция automated содержит элементы, доступ к которым также выполняется аналогично public. Но для элементов, описанных в этой секции генерируется дополнительная информация, используемая OLE. Секцию имеет смысл объявлять для потомков класса TAutoObject.

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

Типы методов

Методы объекта могут быть описаны как статические (static), виртуальные (virtual), динамические (dynamic) или как методы обработки сообщения (message), для чего к ним добавляются соответствующие директивы.

Статические методы. Статические методы работают подобно обычным процедурам или функциям. Этот тип методов устанавливается по умолчанию. Адрес такого метода известен уже на стадии компиляции, и компилятор в коде программы оформляет все вызовы данного метода как статические. Такие методы работают быстрее других, однако не могут быть перегружены в целях полиморфизма объектов.

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

Динамические методы. Динамические методы в целом подобны виртуальным методам, но обслуживаются другой диспетчерской системой. Каждому динамическому методу компилятор назначает уникальное число и использует его вместе с адресом метода для построения таблицы динамических методов (DMT- Dynamic Method Table), В отличие от VMT, DMT содержит методы лишь данного объекта, благодаря чему обеспечивается экономия используемой памяти, но замедляется вызов метода, поскольку для поиска его адреса, скорее всего, будет пересмотрена не одна DMT в иерархии объектов.

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

Контрольные вопросы

1.      От какого класса наследуются все классы, используемые в Delphi

2.      Формат описания нового класса

3.      Сколько и какие секций выделяется внутри описания класса

4.      Что представляют собой методы


Ұқсас жұмыстар

Жоғарғы оқу орнындағы лекция және оқу жұмысын ұйымдастырудың басқа формалары мен әдістері
Жоғарғы оқу орнындағы лекция. Ағымдағы лекция
Сабақ кестесі
Жоо-дағы оқу процесін ұйымдастыру формалары
Тіл білімінің өзекті мәселелері пәнінің оқу -әдістемелік кешені
Информатика пәні бойынша сыртқы бөлімге арналған тапсырмалар жинағы
Тіл философиясы – тілдің философиялық қызметі жөніндегі ғылым
Семинар сабақтарда пәннің мазмұны бойынша проблемалық оқыту принципін іске асыру
Жоғары оқу орындағы тәрбие мен оқытудың теориясы
Бастауыш сыныпта дүниетануды оқыту әдістемесі