
- •Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза
- •Критерии оценок:
- •Вариант №1
- •2. Выберите правильный ответ.
- •3. Дайте определение класса. Класс - множество объектов, связанных общностью структуры и поведением. Класс — это множество объектов, имеющих одинаковую структуру.
- •4. Опишите принцип полиморфизма
- •Вариант №2
- •Вариант №3
- •Вариант №4
- •Вариант №5
- •Опишите процесс создания классов
Вариант №1
Выберите правильные утверждения.
Технология ООП по сравнению с традиционной позволяет создавать:
более простые по структуре программы;
более быстродействующие программы;
программы, допускающие более простую модификацию;
более короткие программы.
2. Выберите правильный ответ.
При использовании new в виде функции ее первым параметром является:
указатель на экземпляр объекта;
тип объекта;
экземпляр объекта;
тип указателя на объект.
3. Дайте определение класса. Класс - множество объектов, связанных общностью структуры и поведением. Класс — это множество объектов, имеющих одинаковую структуру.
4. Опишите принцип полиморфизма
• Полиморфизм:
Полиморфизм, наряду с наследованием, является фундаментальной концепцией объектной модели программирования. Суть полиморфизма в том, что с объектами раз-личных классов, имеющих один и тот же базовый класс, можно при определенных усло-виях обращаться, как с объектами базового класса; однако объект, являющийся объек-том базового класса, будет вести себя по-разному в зависимости от того, что он такое на самом деле, т. е. представитель какого из производных классов.
Вариант №2
1.. Выберите правильные утверждения.
Преимуществами ООП являются:
возможность использования в новых программах ранее созданных объектов;
увеличение быстродействия программы;
простота использования;
легкость внесения изменений в программу.
Выберите правильный ответ
Какая процедура применяется для освобождения памяти из-под объектов?
Dispose;
Delete;
Done;
Free;
Close.
3. Дайте определение объекта. Объект представляет собой особый опознаваемый предмет или сущность, имеющий четко определенное функциональное назначение в данной предметной области.
4. Опишите принцип наследования. Наследование - это такая иерархичность абстракций, в которой подклассы насле-дуют строение от одного или нескольких классов. В подклассе, кроме того, мо¬гут быть определены дополнительные атрибуты и методы. Классы отражают наи¬более общие, а подклассы более специализированные абстракции. Различают слу¬чаи простого и мно-жественного наследования. производный класс наследует всю структуру характеристик и поведение базового, однако может дополнять или модифицировать их. Механизм, позволяющий объектам класса наследовать характеристики (данные и мето-ды ) более простых и общих типов (классов). - средство получения новых классов из суще-ствующих
Вариант №3
1. Выберите правильные утверждения.
Инкапсуляция приводит к:
упрощению структуры программы;
уменьшению степени абстракции программы;
упрощению поиска ошибок;
упрощению внесения изменений в программу.
2. Выберите правильный ответ
Деструктор обязательно описывать:
для любых объектов;
для объектов, имеющих конструктор;
3) для динамических объектов;
4) для динамических полиморфных объектов.
3. Дайте определение метода Методы: Процедуры и функции, связанные с классом. Они определяют действия, ко-торые можно выполнять над объектом такого типа, и которые сам объект может выпол-нять.
4. Опишите порядок создания динамического объекта
Динамическое создание объектов
Для работы с динамическими объектами используется расширенный синтаксис процедур New и Dispose. Обе процедуры в этом случае содержат в качестве второ¬го параметра имя конструктора или деструктора объекта:
New(P, Construct) или
Dispose(P, Destruct).
где Р — указатель на переменную объектного типа, a Construct и Destruct — конст¬руктор и деструктор этого типа.
Действие процедуры New в случае расширенного синтаксиса равносильно дей¬ствию операторов
New(P);
Р^.Construct;
а вызов процедуры Dispose эквивалентен последовательности
Р^.Destruct; Dispose(P);
Динамические объекты. Деструкторы
Для выделения памяти под объекты используются процедура и функция new.
На¬пример, если определены указатели:
type
pmonstr = *monstr:
pdaemon = ^daemon; var pm : pmonstr; pd : pdaemon;
можно создать объекты с помощью вызовов:
new(pm); { или pm := new(pmonstr); } new(pd); { или pd := new(pdaemon); }
Обратите внимание, что при использовании new в форме процедуры параметром является указатель, а в функцию передается его тип. Так как после выделения памяти объект обычно инициализируют, в Паскале для удобства определены расширенные формы new с двумя параметрами. На месте второго параметра зада¬ется вызов конструктора объекта:
new(pm, initd, 1, 1, 1);
{ или
pm := new(pmonstr, initCl. 1, 1, 1));
} '
new(pd, initd, 1, 1, 1, 1):
{или
pd := new(pdaemon. initd, 1, 1, 1, D);
}
Для освобождения памяти, занятой объектом, применяется процедура Dispose:
Dispose(pm); При выполнении этой процедуры освобождается количество байтов, равное раз¬меру объекта, соответствующего типу указателя. Следовательно, если на самом деле в указателе хранится ссылка на объект производного класса, который, как известно, может быть больше своего предка, часть памяти не будет помечена как свободная, но доступ к ней будет невозможен, то есть появится мусор. Второй случай появления мусора возникает при применении процедуры Dispose к объекту, поля которого являются указателями.
Для корректного освобождения памяти из-под полиморфных объектов следует использовать вместе с процедурой Dispose специальный метод — деструктор. Ему рекомендуется давать имя done, например:
destructor monstr.done:
begin
end:
Для правильного освобождения памяти деструктор записывается вторым пара¬метром процедуры Dispose:
Dispose(pm, done);
Это верно только для виртуальных методов.
Для простых объектов деструктор может быть пустым, а для объектов, содержа¬щих динамические поля, в нем записываются операторы освобождения памяти для этих полей. В деструкторе можно описывать любые действия, необходимые для конкретного объекта, например закрытие файлов. Исполняемый код деструк¬тора никогда не бывает пустым, потому что компилятор по служебному слову destructor вставляет в конец тела метода операторы получения размера объекта из VMT. Деструктор передает этот размер процедуре Dispose, и она освобождает количество памяти, соответствующее фактическому типу объекта. (Вызов деструктора вне процедуры Dispose память из-под объекта не освобождает)
Деструкторы рекомендуется делать виртуальными, чтобы при вызове всегда вы¬полнялся деструктор, соответствующий типу объекта. Деструкторы обязательно использовать только для динамических полиморфных объектов, однако можно их применять и для статических объектов. В объекте можно определить несколько деструкторов (естественно, в этом случае они должны иметь разные имена).