Теория и методика изучения основ объектно-ориентированного программирования в школьном курсе информатики
Курсовой проект - Педагогика
Другие курсовые по предмету Педагогика
?иртуальных методов (Virtual Method Table, VMT) в случае виртуальных методов и таблица динамических методов (Dynamic Method Table, DMT) в случае динамических.
Таблица виртуальных методов создается для каждого объектного типа. В ней содержатся адреса виртуальных методов этого объектного типа. Независимо от количества переменных данного объектного типа, для него создается только одна таблица VMT. При вызове виртуального метода каким-либо экземпляром местонахождение кода реализации данного метода определяется по таблице VMT для типа данного экземпляра. Взаимосвязь между VMT и экземпляром класса устанавливается при инициализации объекта. Так как адреса виртуальных методов при их вызове определяются через VMT объекта, то гарантированно будут использоваться методы, соответствующие типу объекта.
В таблице VMT содержатся адреса всех виртуальных методов класса - как унаследованных от предков, так и переопределенных в данном классе. Поэтому виртуальные методы вызываются достаточно быстро, но требуют большого объема памяти. В отличие от виртуальных методов, динамические методы вызываются медленнее, но зато занимают меньше памяти. Это объясняется тем, что в таблице динамических методов класса хранятся адреса только тех динамических методов, которые определены в данном классе. При вызове динамического метода адрес кода его реализации сначала ищется в таблице DMT, относящейся к типу данного экземпляра. Если адрес не найден, производится поиск в таблицах DMT всех классов-предков в порядке иерархии.
Для перекрытия виртуальных и динамических методов используется служебное слово override.
Рассмотрим пример использования виртуального метода для реализации концепции полиморфизма. С этой целью объявим методы класса окружность, которые переопределяются в классе кольцо, как виртуальные (приложение 7).
При таком определении эти классы являются полиморфными.
Виртуальный метод может быть объявлен с модификатором final. Такие методы не могут быть перекрыты в потомках класса.
Также следует упомянуть о понятиях, не изучаемых в школьном курсе. Это абстрактные методы, перекрытие методов, конструкторы и деструкторы и перегружаемые методы. Все они подробно изучаются в средне-специальных и высших учебных заведениях.
Области видимости
В классах языка Object Pascal существует возможность разграничивать области видимости полей и методов. Область видимости задается специальным зарезервированным словом. Различаются пять вариантов областей видимости. Рассмотрим 3 основные. Опубликованную область и область автоматизации оставим без рассмотрения.
Общая область видимости задается директивой public. Она не накладывает никаких ограничений на видимость. Поля и методы категории public доступны для других объектов в любом модуле, который ссылается на модуль, содержащий описание класса.
Личная область видимости задается директивой private. С ее помощью реализуется минимальная область видимости. Вне модуля, в котором определен класс, элементы категории private недоступны. Использование области видимости private позволяет полностью скрыть особенности внутренней реализации класса.
Защищенная область видимости задается директивой protected. Элементы категории protected помимо модуля, в котором определен класс, доступны в классах, являющихся потомками данного, даже если они определяются в других модулях.
Области видимости указываются не для каждого элемента класса - директива задает область видимости для всех следующих за ней элементов, пока не будет указана другая директива.
Обработка исключительных ситуаций
Исключительная ситуация - это событие, прерывающее нормальное выполнение программы. Иначе говоря, исключительная ситуация является ошибкой, возникающей во время выполнения программы. В языке Object Pascal существуют специальные средства для обработки исключительных ситуаций.
Исключительные ситуации, возникающие во время выполнения программы, описываются в языке Object Pascal с помощью специального объектного типа Exception. На базе этого типа определен ряд дочерних классов, соответствующих наиболее типичным исключительным ситуациям. Имена классов-потомков Exception начинаются с буквы Е.
В Object Pascal определены две конструкции для работы с исключительными ситуациями: try...except и try...finally.
Блок try...except
Блок try...except применяется для реакции на конкретную исключительную ситуацию (приложение 8).
Если при выполнении операторов, расположенных в разделе try, не возникает исключительная ситуация, то обращения к разделу except вообще не происходит. Если же в разделе try возникает исключительная ситуация, то управление сразу передается разделу except. Раздел except содержит набор операторов on...do, определяющих реакцию на исключительные ситуации. Между ключевыми словами on и do указывается имя класса исключительной ситуации. Оператор, расположенный после слова do, предназначен для ее обработки (после обработки исключительной ситуации управление не передается назад в раздел try).
Блок try...finally
Блок try...finally используется в тех случаях, когда необходимо выполнить некоторые действия даже в случае возникновения исключительной ситуации (например, освободить занятую память) (приложение 9).
В данной конструкции сначала выполняются операторы, расположенные в разделе try. Если при их выполнении не возникло исключительной ситуации, то выполняются операторы, расположенные в разделе finally. Если же при выполнении операторов в разделе try возникает исключи