DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Лабораторна робота №4: Віртуальні функції та поліморфізм

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра автоматизованих систем управління

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

Рік:
2012
Тип роботи:
Лабораторна робота
Предмет:
Об’єктно-орієнтоване програмування
Група:
КН-21
Коротко про документ

Про що ця робота

Лабораторна робота присвячена вивченню механізму поліморфізму та віртуальних функцій у мові C++. Студент реалізує базовий клас для роботи з трійками чисел та похідні класи для обчислення різниці часу і дат.

У роботі розглядаються

  • Об'єктно-орієнтоване програмування
  • Поліморфізм
  • Віртуальні функції
  • Пізнє зв'язування
  • Мова C++
  • Наслідування класів

Зміст і розділи

  1. Мета роботи
  2. Послідовність роботи
  3. Індивідуальне завдання
  4. Лістинг програми
  5. Контрольний приклад та результати роботи програми
  6. Висновки
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, що вивчають об'єктно-орієнтоване програмування.
Викладачі:Викладач кафедри

Ключові поняття

поліморфізмвіртуальна функціяпізнє зв'язуваннябазовий класпохідний класвказівникнаслідуванняC++

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

Міністерство освіти та науки України Кафедра АСУ Лабораторна робота №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; } /Скріншот виконання програми Висновок: виконуючи дану лабораторну роботу, я ознайомився з поняттям поліморфізму, його застосуванням та вивчив механізм його реалізації за допомогою віртуальних функцій.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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