
- •Міністерство освіти і науки україни
- •1 Зміст та оформлення лабораторної роботи
- •2 Теми лабораторних робот
- •3 Варіанти завдань до лабораторних робот
- •Лабораторна робота 1
- •Лабораторна робота 2 Побудова класів та їх використання
- •Лабораторна робота 3 Динамічні класові типи
- •Лабораторна робота 4 Перевантаження операцій
- •Лабораторна робота 5 Введення/виведення потоками, робота з файлами, створення нових потокових операцій
- •Лабораторна робота 6 Функції та класи з шаблонами
- •Лабораторна робота 7 Успадкування, атрибути доступу та віртуальні функції
- •Лабораторна робота 8 Обробка надзвичайних ситуацій
- •4 Довідкова інформація
- •4.1 Запис текстів програм. Стандарт знту-2003
- •5 Література
- •Запорізький національний технічний університет
- •Застосування конструкторів і деструкторів у класах
Лабораторна робота 7 Успадкування, атрибути доступу та віртуальні функції
Варіант 1
Створити абстрактний клас для роботи з геометричними фігурами на екрані. Передбачити такі компоненти-властивості класу:
- координати центра фігури;
- кут повороту фігури відносно стандартного положення і відносно геометричного центру (у градусах);
- масштабний фактор;
та такі функції-методи:
- показати фігуру на екрані;
- зробити фігуру невидною (знищити її зображення на екрані);
- повернути фігуру на заданий кут (кут надається у градусах);
- пересунути центр фігури на наданий вектор.
Застосовуючи успадкування і наведений вище абстрактний клас створити похідний клас для роботи з фігурою типу "трикутник". Визначити інтерфейсну частину у класах, застосувати атрибути доступу.
Варіант 2
Застосовуючи успадкування і наведений у завданні 7.1 абстрактний клас створити клас для роботи з фігурою типу "чотирикутник".
Варіант 3
Застосовуючи успадкування і наведений у завданні 7.1 абстрактний клас створити клас для роботи з фігурою типу "правильний n-кутник".
Варіант 4
Застосовуючи успадкування і наведений у завданні 7.1 абстрактний клас створити клас для роботи з фігурою типу "еліпс".
Вказівки
Рівняння еліпсу у параметричній формі має такий вигляд:
x = acos(t) ,
y = bsin(t) ,
де x,y координати точки еліпсу, tпараметр, який пробігає значення від 0 до 2.
Варіант 5
Наданий такий клас:
class Base { public:
virtual void myname() { cout << "This is class Base" << endl; } };
Виконати наступне.
1. Від класу Base створити два похідних класу: DerA і DerB.
2. Від класів DerA і DerB шляхом множинного успадкування створити клас DerAB.
3. Переозначити у кожному з створених класів функцію myname таким чином, щоб вона виводила на екран дійсне ім’я класу об’єкту, для якого вона викликається.
У головній частині програми (функція main):
4. Для кожного з класів створеної ієрархії створити по одному об’єкту і для кожного з них виклати функцію myname.
5. Створити масив із 4 покажчиків на базовий клас ієрархії. Для кожного з них створити динамічний об’єкт, по одному для кожного з класів ієрархії. Записати виклик функції myname для кожного з динамічних об’єктів за допомогою покажчика.
6. Поясніть дію функції myname у всіх випадках.
Варіант 6
У файлах 7_06_a.cpp, 7_06_b.cpp, 7_06_c.cpp (див. електронний додаток до посібника на дискеті або програмну підтримку лабораторного курсу на робочому комп’ютері) розміщені приклади програм, які ілюструють застосування класів для створення ефектів анімації. Розібратися як ці програми діють, виконати їх компіляцію, подивитися, як вони працюють.
Лабораторна робота 8 Обробка надзвичайних ситуацій
Всі класи, що були створені при виконанні попередніх завдань, доробити, передбачивши обробку надзвичайних ситуацій. Надзвичайною ситуацією вважати:
- некоректні значенні операндів при виконанні операцій;
- некоректні значенні параметрів при викликах функцій - членів класів;
- не успішне виконання операції виділення оперативної пам’яті при створенні динамічного об’єкту;
- не успішне завершення операції відкриття файлу;
- інші випадки на розсуд студента.
Для обробки надзвичайної ситуації застосувати:
а) спеціально побудовані функції типу errhalt із модулю syst.h ;
б) макрозасіб типу assert ;
в) засоби throw, try, catch .