
- •Объектно-ориентированное программирование
- •1 Вопрос
- •1.2 Достоинства и недостатки ооп
- •1.3 Пример описания объектного типа
- •2 Вопрос
- •2.1 Основные понятия ооп
- •2.2 Примеры программного описания
- •2.3 Соотношение основных понятий ооп
- •3 Вопрос
- •4 Вопрос
- •4.1 Правила наследования
- •5 Вопрос
- •5.1 Пример использования директив
- •6 Вопрос
- •6.1 Пример описания виртуального метода
- •7 Вопрос
- •7.1 Пример использования
- •8 Вопрос
- •8.2 Пример объявления
- •9 Вопрос
- •9.1 Глобальная обработка исключений
- •9.2 Локальная обработка исключений
- •9.3 Пример использования операторов
- •10 Вопрос
- •1.4 Закрытие файла
- •1.5 Ввод из файла
- •1.6 Определение конца файла
6.1 Пример описания виртуального метода
Заголовки всех реализаций одного и того же виртуального метода должны быть идентичными, включая число параметров и их типы.
Пример описания типа, в котором объявлен виртуальный метод:
type
TPerson=class
fname:string;{ имя }
constructor Create (name:string) ;
function info: string; virtual;
end;
TStud=class(TPerson)
fgr:integer; { номер группы}
constructor Create(name:string;gr:integer);
function info:string; override;
end;
В каждом из этих классов определен метод info. В базовом классе при помощи директивы virtual метод info объявлен виртуальным. Объявление метода виртуальным дает возможность дочернему классу произвести замену виртуального метода своим собственным. В каждом дочернем классе определен свой метод info, который замещает соответствующий метод родительского класса (метод порожденного класса, замещающий виртуальный метод родительского класса, помечается директивой override).
7 Вопрос
Динамическая память. Выделение и освобождение памяти для динамической переменной, используя операции new и dispose соответственно. Привести пример динамического распределения памяти.
Память для хранения данных может выделяться как статически, так и динамически. В первом случае выделение памяти выполняет компилятор, встретивший при компиляции объявление объекта. В соответствии с типом встретившегося объекта вычисляется объем памяти, требуемый для его размещения. Класс памяти задает место, где эти объекты (данные) будут располагаться. Это может быть сегмент данных либо стек.
Часто возникают ситуации, когда заранее не известно, сколько объектов – чисел, строк текста и прочих данных будет хранить программа. В этом случае используется динамическое выделение памяти, когда память занимается и освобождается в процессе исполнения программы. При использовании динамической памяти (ДП) отпадает необходимость заранее распределять память для хранения данных, используемых программой. Управление динамической памятью – это способность определять размер объекта и выделять для его хранения соответствующую область памяти в процессе исполнения программы.
Выделение памяти для динамической переменной осуществляется вызовом процедуры new. У процедуры new один параметр — указатель на переменную того типа, память для которой надо выделить. Например, если р является указателем на тип real, то в результате выполнения процедуры new(p); будет выделена память для переменной типа real (создана переменная типа real), и переменная-указатель р будет содержать адрес памяти, выделенной для этой переменной.
У динамической переменной нет имени, поэтому обратиться к ней можно только при помощи указателя.
Процедура, использующая динамические переменные, перед завершением своей работы должна освободить занимаемую этими переменными память или, как говорят программисты, уничтожить динамические переменные". Для освобождения памяти, занимаемой динамической переменной, используется процедура Dispose, которая имеет один параметр — указатель на динамическую переменную.
Например, если р — указатель на динамическую переменную, память для которой выделена инструкцией new(p), то инструкция dispose (р) освобождает занимаемую динамической переменной память.