
- •Лабораторна робота №1
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості Масиви динамічної пам'яті
- •Приклад виконання завдання 1
- •Лістинг програми
- •Приклад виконання завдання 2
- •Лістинг програми
- •Приклад виконання завдання 3
- •Лістинг програми
- •Контрольні запитання
- •Лабораторна робота №2
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Читання і запис текстових файлів
- •Читання і запис бінарних файлів
- •Відкриття бінарних файлів
- •Файли з послідовним доступом
- •Запис даних у файл з послідовним доступом
- •Файли з довільним доступом
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №3
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості
- •Обмеження доступу до членів класу
- •Специфікатори доступу
- •Вбудовані функції-члени
- •Приклад виконання завдання 1.
- •Приклад виконання завдання 2.
- •Приклад виконання завдання 3.
- •Контрольні запитання
- •Лабораторна робота №4
- •Порядок виконання роботи
- •Завдання 2
- •Теоретичні відомості Конструктори і деструктори
- •Правила роботи з конструкторами і деструкторами
- •Варіант 10. Розробити описовий алгоритм, схему алгоритму і написати метод для підрахування кількості слів в текстовому файлі.
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №5
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Принципи спадкування в ооп
- •Оголошення похідних класів
- •Конструктори похідного класу
- •Функції члени похідного класу
- •Заборонені члени класу (Protected)
- •Приклад виконання Завдання 1
- •Контрольні запитання
- •Лабораторна робота №6
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Перевантаження операторів
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Приклад виконання завдання 3
- •Приклад виконання завдання 4
- •Контрольні запитання
- •Лабораторна робота №7
- •Порядок виконання роботи
- •Завдання 1.
- •Завдання 2.
- •Теоретичні відомості
- •Структура наслідування класів
- •Постановка задачі
- •Розробити клас трикутника, чотирикутника, кола, точки
- •Контрольні запитання
- •Лабораторна робота №8
- •Порядок виконання роботи
- •Завдання 1
- •Контрольні запитання
- •Лабораторна робота №9
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Множинне спадкування
- •Контрольні запитання
- •Лабораторна робота №10
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Шаблони
- •Параметризовані класи
- •Визначені об’єкти-потоки
- •Операції поміщення та вилучення
- •Приклад виконання Завдання з варіанту 2
- •Контрольні запитання.
- •Лабораторна робота №11
- •Порядок виконання
- •Завдання 1
- •Завдання 2
- •Завдання 3 Варіант 1. Задача “Банківське переведення” (дата, час, № рахунку, розмір рахунку).
- •Ітератори
- •Для роботи з вектором необхідно:
- •Приклад роботи з вектором
- •Алгоритми
- •Застосування алгоритмів до вектора
- •Приклад 1 виконання Завдання 1
- •Приклад 2 виконання Завдання 2
- •Приклад 3 виконання завдання №3
- •Контрольні запитання
- •Завдання 1
- •Теоретичні відомості Приклад розробки програми
- •Контрольні запитання
- •Лабораторна робота №13
- •Порядок виконання
- •Завдання 2.
- •Теоретичні відомості
- •Стандартні потоки для базових класів
- •Форматування даних при обмінах з потоками
- •Маніпулятори
- •Приклад розробки програми
- •Контрольні запитання
- •Лабораторна робота №14
- •Порядок виконання
- •Завдання
- •Теоретичні відомості
- •Контрольні запитання
Контрольні запитання
Що таке віртуальна функція?
Для чого використовуються віртуальні функції?
Наведіть приклад використання віртуальної функції.
Які функції називаються чисто віртуальними? Для чого вони використовуються?
Що таке абстрактний клас?
Для чого використовуються абстрактні класи?
Наведіть приклад використання абстрактного класу.
Чим відрізняються звичайні та чисті віртуальні функції?
Основна форма опису чистої віртуальної функції?
Лабораторна робота №9
Тема: Особливості створення ієрархії класів з множинним спадкуванням.
Мета:Набуття навичок студентами в використанні множинного спадкування.
Порядок виконання роботи
Ознайомитись з теоретичною частиною даної теми.
Розробити ієрархію класів та структуру кожного класу відповідно Завдання 1.
Розробити програму для виконання Завдання 1.
Розробити 2-3 тести для перевірки правильності роботи розробленої програми.
Оформити звіт до лабораторної роботи.
Завдання 1
Розробити ієрархію класів з множинним спадкуванням відповідно до індивідуального варіанту.
Варіанти індивідуальних завдань:
Варіант 1 Варіант 2 Варіант 3 Варіант 4
1 |
2 |
3 |
4 |
Варіант 5 Варіант 6 Варіант 7 Варіант 8
5 |
6 |
7 |
8 |
Варіант 9 Варіант 10 Варіант 11 Варіант 12
9 |
1 |
1 |
1 |
Варіант 13 Варіант 14 Варіант 15 Варіант 16
13 |
14 |
15 |
16 |
Варіант 17 Варіант 18 Варіант 19 Варіант 20
17 |
18 |
19 |
20 |
Варіант 21 Варіант 22 Варіант 23
21 |
22 |
23 |
Варіант 24 Варіант 25
2
|
2
|
Теоретичні відомості Множинне спадкування
Множинне спадкування являє собою таке спадкування, при якому створення похідного класу ґрунтується на використанні декількох безпосередніх базових класів. При множинному наслідувані використається наступний формат опису класу:
class | struct ім'я похідного класу: [модифікатор] ім'я_базового_кпаса 1 ,.., [модифікатор] ім'я_базового_класа_2
{ компоненти_класу };
Як приклад множинного спадкування розглянемо похідний клас Reccіrcle - "прямокутник і окружність". Для опису класу Reccіrcle створимо новий безпосередній базовий клас Rectangle - "прямокутник" і використаємо раніше створений клас Cіrcle - "коло". Опис класу Rectangle помістимо в окремий файл rectang.h
Файл rectang.h - опис класу прямокутник
#іnclude <graphіcs.h> /*прототипи функцій графічної бібліотеки*/
class Rectangle: publіc Poіnt //клас для визначення прямокутника
{
Protected //захищений статус доступу до елементів даних
іnt 1х; //довжина по горизонталі
іnt ly; //довжина по вертикалі
// Прототипи методів:
voіd rіsrec; //промальовування прямокутника
publіc: //загальнодоступний статус доступу
Rectangle(іnt,іnt,іііt,mt)// конструктор
voіd show(voіd); //промальовування прямокутника
voіd hіde(vaіd); //забрати иэосраление прямокутника з екрана
Безпосереднім базовим класом для класу Rectangle є клас Poіnt. Крім наслідуваних елементів даних х і у (координати центра прямокутника) клас Rectangle у своєму складі має два елементи даних іх - довжина по горизонталі й іу - довжина по вертикалі. Чотири методи класу дозволяють створювати об'єкти, їх ініціалізувати, одержувати зображення на екрані й забирати його якщо буде потреба. Опису методів класу Rectangle розмістимо в окремому файлі rectang.cpp:
// Файл rectang.cpp - опису методів класу, прямокутник
#іnclude <graphіc3.h>/*прототипи функцій графічної бибпиотєки*/
#іnclude"f:\POS_C\PRІMER\rectang.h" // опис класу Poіnt
#іnclude"f:\POS_C\PRІMER\rectang.h"// опис класу Poіnt
// Опису методів:
voіd Rectangle::rіsrecf) // промальовування прямокутника
{ іnt g=lx/2;
іnt v=ly/2;
lіne(x-g,y-v,x+g,y-v);
lіne(x-g,y+v,x+g,y+v);
lіne(x-g,y-v,x-g,y+v);
lіne(x+g,y-v,x+g,y+v);
} // Конструктор:
Rectangle::Rectangle(іnt xі,іnt yі,іnt lxі=0,іnt lyі=0) ;
Poіnt(xі,yі) { lx=lxі;ly=lyі;)
// Зобразити прямокутник на екрані:
voіd Rectangle :: show(voіd)
{
rіarec;// промальовування прямокутника
{
// Забрати зображення прямокутника з екрана:
voіd Rectangle::hіde(voіd)
{
іnt b,c;
b=getbkcolor();// запам'ятовування поточного кольору тла
c=getcolor();// запам'ятовування кольору зображення
setcolor(b); // установити колір зображення
rіsrec; // намалювати прямокутник кольором з
setcolor(c); // відновлення кольору зображення
}
Тепер можна створити клас "прямокутник і кола" на підставі двох безпосередніх базових класів. Опис класу Reccіrcle помістимо в окремий файл recarch:
// Файл reccіrc.cpp - опис класу "прямокутник і коло"
#іnclude"f:\POS_C\PRІMER\rectang.cpp" //опис класу Rectangle
#іnclude"f:\POS_C\PRІMER\cіrcіe.cpp"//опис класу Cіrcle
// Клас "прямокутник і коло":
class Reccіrcle: publіc Rectangle, publіc Cіrcle
{ publіc:
// Конструктор:
Reccіrcle(іnt xі,іnt yі,іnt rі,іnt lxі,іnt lyі):
Rectangle(xі,yі,lxі,lyі),/*Явний виклик конструкторів базових класів*/
Cіrcle(xі,yі,rі)
{ }
// Зобразити прямокутник і коло на екрані:
voіd show(voіd)
{
Rectangle::show();// зобразити прямокутник
Cіrcle::show();// зобразити коло
}
// Забрати зображення з екрана:
voіd hіde(voіd)
{
Rectangle::hіdef);// забрати зображення прямокутника
Cіrcle::hіde ПРО;// забрати зображення кола
}
В класі описано три методи: конструктор, що явним образам викликає конструктори безпосередніх базових класів, і методи зображення на екрані й стирання з екрана прямокутника і кола.
Тепер можна скласти програму, що дозволить працювати з об'єктами класу Reccіrcle.
// Приклад инотсественного спадкування
(tіnclude <іostream.h> // прототипи функцій вводу - виводу
ІfііTclude <graphіcs.h> // прототипи графічних функцій
tHnclude <conіo.h>// прототип функції getch()
#іnclude "f :APOS_C\PBІ№R\reccіrc.cpp" /* опис класу Reccіrcle*/
void main()
{
//Ініціалізація графіки
іnt a=DETECT,b;
іnіtgraph(&a,&b,”F:\\BC5\\bgi”);
Reccіrcle A(250,100,100,50,50); /* створений невидимий об'єкт A*/
Reccіrcle B(400,300,50,120,140); /* створений невидимий обєкт В*/
Cout<<"\nA:х="<<А,Rectangle::putx()<<”,y="<<A.Rectangle::puty();
Cout<<"\nB:х="<<B,Circle::putx()<<”,y="<<B.Circle::puty();
getch;// чекати натискання клавіші
A.show;// показати на екрані объекг А
getch; // чекати натискання клавіші
В.show 0;// показати на екрані об'єкт В
getch;// чекати натискання клавіші
A.hіde();// стерти об'єкт А
getch;// чекати натискання клавіші
A.Cіrcle :: show(); // показати на екрані окружність об'єкта А
getch(); // чекати натискання клавіші
В.hіde 0;// стерти об'єкт В
getch;// чекати натискання клавіші
В.Rectangle::show{);//показати на екрані прямокутник об'єкта В
getch(); // чекати натискання клавіші
closegraphf); // закрити графічний режим
У програмі за допомогою виклику конструктора формуються два об'єкти А и В з координатами центрів (250,100) і (400,300) відповідно. У результаті роботи методів A skow() і B.show() на екрані висвітлюється об'єкти А и В, кожний з яких складається із прямокутника й коло. Розміри прямокутника для об'єкта А: 50 - по горизонталі, 50 - по вертикалі, а для В: 120 - по горизонталі, 140 - по вертикалі. Радіус кола об'єкта А - 100, а В - 50. Після стирання з екрана об'єкта А с допомогою оператора A.Cіrde:: show(); на екрані висвітлюється коло об'єкта А. Подібним же чином висвітлюється на екран прямокутник об'єкта В.