Теория и методика изучения основ объектно-ориентированного программирования в школьном курсе информатики

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

Для обращения к свойству необязательно использовать методы.

Вместо имен методов после слов read и write в объявлении свойства можно указать просто имя поля.

Для записи предпочтительнее использовать метод, так как это позволит контролировать корректность изменения значения свойства (например, попадание величины в допустимый диапазон).

Если в объявлении свойства указан только метод (или поле), обеспечивающий чтение, то данное свойство предназначено только для чтения (read only). Поэтому изменить его значение в процессе выполнения программы нельзя. Аналогично, если указан только метод, обеспечивающий запись, то значение свойства при выполнении программы нельзя считывать; данное свойство является свойством только для записи (write only).

Методы

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

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

Статические методы

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

Виртуальные и динамические методы

При обращении к виртуальным и динамическим методам вызываемая процедура или функция определяется только в момент обращения. Такой механизм называется поздним связыванием. Именно виртуальные и динамические методы позволяют в полной мере реализовать концепцию полиморфизма. При объявлении виртуальных и динамических методов используются директивы virtual и dynamic, соответственно. Остановимся на основных возможностях этих методов.

При вызове виртуальных и динамических методов выполняемая процедура или функция определяется по типу фактического параметра. Для этого используется таблица виртуальных методов (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.

Страница:  1  2  3  4  5  6  7  8  9  10 


Другие рефераты на тему «Педагогика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы