Віртуальні функції та поліморфізм

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КН-21

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Кафедра АСУ Лабораторна робота №4 з дисципліни ООП “ Віртуальні функції та поліморфізм” Мета: Ознайомитись з поняттям поліморфізму, його застосуванням та вивчити механізм його реалізації за допомогою віртуальних функцій. Послідовність роботи: Ознайомитись з правилами оголошення та використання віртуальних функцій. Визначити, які віртуальні функції будуть викликані в результаті виконання наведеної програми. Проаналізувати результат роботи наведеної програми. Для заданого варіанту завдання написати програму з використанням віртуальних функцій та продемонструвати дію механізму пізнього зв’язування. Оформити звіт про роботу за такою структурою: назва роботи; мета роботи; послідовність роботи; індивідуальне завдання; текст програми; контрольний приклад та результати роботи програми; висновки. Індивідуальне завдання: створити клас ТРІЙКА ЦІЛИХ ЧИСЕЛ. Визначити віртуальну фунцію обчислення різниці між трійками. Створити похідні класи ЧАС (з полями: година, хвилина і секунда), ДАТА (з полями: рік, місяць і день) зі своїми функціями обчислення різниці між моментами часу (датами). Для перевірки використати масив вказівників на об’єкти базового класу, яким присвоїти адреси об’єктів похідних класів. Лістинг програми #include <iostream> #include <conio.h> using namespace std; class three{ public: double t1; double t2; double t3; public: three(){ } ~three(){ } void set_t1_t2_t3(double a, double b, double c){ t1=a; t2=b; t3=c; } double get_t1(){ return t1; } double get_t2(){ return t2; } double get_t3(){ return t3; } virtual double riznucia(three *pr){ double rez; rez=(t1+t2+t3)-(pr->t1)-(pr->t2)-(pr->t3); return rez; } }; class clock:public three{ public: virtual double riznucia(three *pr){ double rez1, rez2, rez; rez1=t1*3600+t2*60+t3; rez2=(pr->t1*3600)+(pr->t2*60)+pr->t3; if(rez1<rez2) return -1; else return rez=rez1-rez2; } }; class data:public three{ public: virtual double riznucia(three *pr){ double rez,rez1,rez2; rez1=(t1*365.3)+(t2*30.3)+t3; rez2=(pr->t1*365.3)+(pr->t2*30.3)+pr->t3; if(rez1<rez2) return -1; else return rez=rez1-rez2; } }; int main(){ double x,y,z; three *p[6]; p[0]=new three; p[1]=new three; cout<<"Enter dani 1 thriyku: "; cin>>x>>y>>z; p[0]->set_t1_t2_t3(x,y,z); cout<<"Enter dani 2 thriyku: "; cin>>x>>y>>z; p[1]->set_t1_t2_t3(x,y,z); cout<<"Riznucia: "<<p[0]->riznucia(p[1]); delete p[0]; delete p[1]; cout<<"\n\n"; p[2]=new clock; p[3]=new clock; cout<<"Enter hours, minutes, seconds: "; cin>>x>>y>>z; p[2]->set_t1_t2_t3(x,y,z); cout<<"Enter hours, minutes, seconds: "; cin>>x>>y>>z; p[3]->set_t1_t2_t3(x,y,z); if(p[2]->riznucia(p[3])==-1) cout<<"Error clock1 < clock2: videmnuy result!"<<endl; else cout<<"Riznucia: "<<p[2]->riznucia(p[3])<<" seconds"; delete p[2]; delete p[3]; cout<<"\n\n"; p[4]=new data; p[5]=new data; cout<<"Enter year, month, day: "; cin>>x>>y>>z; p[4]->set_t1_t2_t3(x,y,z); cout<<"Enter year, month, day: "; cin>>x>>y>>z; p[5]->set_t1_t2_t3(x,y,z); if(p[4]->riznucia(p[5])==-1) cout<<"Error data1 < data2: videmnuy result!"<<endl; else cout<<"Riznucia: "<<p[4]->riznucia(p[5])<<" days"; delete p[4]; delete p[5]; getch(); return 0; } /Скріншот виконання програми Висновок: виконуючи дану лабораторну роботу, я ознайомився з поняттям поліморфізму, його застосуванням та вивчив механізм його реалізації за допомогою віртуальних функцій.
Антиботан аватар за замовчуванням

29.11.2012 17:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!