DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Лабораторна робота 6

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКНІ
Факультет:
ІСМ
Кафедра:
Інформаційних систем та мереж (ІСМ)

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

Рік:
2019
Тип роботи:
Лабораторна робота
Предмет:
ООП
Група:
ІТ 11
Варіант:
25

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” ІКНІ Кафедра ІСМ Звіт Про виконання лабораторної роботи №6 «Множинне успадкування класів» з дисципліни «Об’єктно-орієнтоване програмування» 25 варіант Львів 2019 Мета роботи: здобуття практичних навичок використання множинного успадкування класів. Завдання: / Код програми: #include <iostream> using namespace std; class E1 { protected: int x, px; public: E1()//конструктор ініціалізації { this->x = 0; this->px = 0; } E1(E1& object)//конструктор копіювання { this->x = object.x; this->px = object.px; } int GetX()//метод читання { return this->x; } int GetPX()//метод читання { return this->px; } void SetX(int x)//метод встановлення { this->x = x; } void SetPX(int PX) //метод встановлення { this->px = PX; } ~E1() {}//деструктор friend ostream& operator <<(ostream& out, E1& object)//перевантаження операції виведення { out << "E1:\t\t[" << object.x << ";" << object.px << "]" << endl; return out; } friend istream& operator >>(istream& in, E1& object)//перевантаження операції вводу { cout << "Введiть x E1\t"; in >> object.x; object.SetX(object.x);//виклик сеттеру cout << "Введiть px E1\t"; in >> object.px; object.SetPX(object.px);//виклик сеттеру return in; } }; class D2 : public E1 { public: D2() :E1() {} //конструктор ініціалізації D2(D2& object) :E1(object) {}//конструктор копіювання void SetX(E1& object)//метод встановлення { this->x = object.GetX(); } void SetPX(E1& object)//метод встановлення { this->px = object.GetPX(); } int GetX()//метод читання { return this->x; } int GetPX()//метод читання { return this->px; } ~D2() {}//дестурктор friend ostream& operator <<(ostream& out, D2& object)//перевантажена операція виводу { out << " D2:\t\t[" << object.x << ";" << object.px << "]" << endl; return out; } friend istream& operator >>(istream& in, D2& object)//перевантажена операція вводу { cout << "Введiть x точки D2\t"; in >> object.x; cout << "Введiть px точки D2\t"; in >> object.px; return in; } }; class C2 : protected virtual D2//успадкування класу { public: C2() :D2() {}//конструктор ініціалізації C2(C2& object) :D2(object) {}//конструктор копіювання void SetX(C2& object)//метод встановлення { this->x = object.GetX(); } void SetPX(C2& object)//метод встановлення { this->px = object.GetPX(); } int GetX()//метод читання { return this->x; } int GetPX()//метод читання { return this->px; } ~C2() {}//деструктор friend ostream& operator <<(ostream& out, C2& object)//перевантажена операція виводу { out << " C2:\t\t[" << object.x << ";" << object.px << "]" << endl; return out; } friend istream& operator >>(istream& in, C2& object)//перевантажена операція вводу { cout << "Введiть x точки C2\t"; in >> object.x; cout << "Введiть xp точки C2\t"; in >> object.px; return in; } }; class C3 :public virtual D2//успадкування класу { public: C3() :D2() {}//конструктор ініціалізації C3(C3& object) :D2(object) {}//конструктор копіювання void SetX(C3& object)//метод встановлення { this->x = object.GetX(); } void SetPX(C3& object)//метод встановлення { this->px = object.GetPX(); } int GetX()//метод читання { return this->x; } int GetPX()//метод читання { return this->px; } ~C3() {}//деструктор friend ostream& operator <<(ostream& out, C3& object)//перевантажена операція виводу { out << " C3:\t[" << object.x << ";" << object.px << "]" << endl; return out; } friend istream& operator >>(istream& in, C3& object)//перевантажена операція вводу { cout << "Введiть x точки C3\t"; in >> object.x; cout << "Введiть xp точки C3\t"; in >> object.px; return in; } }; class C1//успадкування класу { protected://ініціалізація захищених даних для успадкування int xc1; int pxc1; public: C1() { //коструктор ініціалізації this->xc1 = 0; this->pxc1 = 0; } C1(C1& object)//конструктор копіювання { this->xc1 = object.xc1; this->pxc1 = object.pxc1; } void SetX(C1& object)//метод встановлення { this->xc1 = object.GetX(); } void SetPX(C1& object)//метод встановлення { this->pxc1 = object.GetPX(); } int GetX()//метод читання { return this->xc1; } int GetPX()//метод читання { return this->pxc1; } ~C1() {}//деструктор friend ostream& operator <<(ostream& out, C1& object)//перевантаження операції виводу { out << "C1:\t\t[" << object.xc1 << ";" << object.pxc1 << "]" << endl; return out; } friend istream& operator >>(istream& in, C1& object)//перевантаження операції вводу { cout << "Введiть x точки C1\t"; in >> object.xc1; cout << "Введiть px точки C1\t"; in >> object.pxc1; return in; } }; class B1: protected virtual C1, private virtual C2 //успадкування класiв { public: B1() //конструктор ініціалізації { x = 0; px = 0; xc1 = 0; pxc1 = 0; } B1(B1& object) //конструктор копіювання { this->x = object.x; this->px = object.px; this->xc1 = object.xc1; this->pxc1 = object.pxc1; } void SetX(C1& objectc1,C2& objectc2) //метод встановлення { this->x = objectc2.GetX(); this->xc1 = objectc1.GetX(); } void SetPX(C1& objectc1, C2& objectc2)//метод встановлення { this->px = objectc2.GetPX(); this->pxc1 = objectc1.GetPX(); } int GetX()//метод читання { return this->x; return this->xc1; } int GetPX()//метод читання { return this->px; return this->pxc1; } ~B1() {}//деструктор friend ostream& operator <<(ostream& out, B1& object) //перевантажена операція виводу { out << " B1:\t\t[" << object.x << ";" << object.px << "]" << endl; out << " B1 (c1):\t\t[" << object.xc1 << ";" << object.pxc1 << "]" << endl; return out; } friend istream& operator >>(istream& in, B1& object) //перевантажена операція вводу { cout << "Введiть x точки B1\t"; in >> object.x; cout << "Введiть xc1 точки B1\t"; in >> object.xc1; cout << "Введiть px точки B1\t"; in >> object.px; cout << "Введiть pxc1 точки B1\t"; in >> object.pxc1; return in; } }; class B2 : public virtual C1, public virtual C2 , protected virtual C3 //успадкування класiв { public: B2() //конструктор ініціалізації { x = 0; px = 0; xc1 = 0; pxc1 = 0; } B2(B2& object) //конструктор копіювання { this->x = object.x; this->px = object.px; this->xc1 = object.xc1; this->pxc1 = object.pxc1; } void SetX(C1& objectc1, C2& objectc2) //метод встановлення { this->x = objectc2.GetX(); this->xc1 = objectc1.GetX(); } void SetPX(C1& objectc1, C2& objectc2)//метод встановлення { this->px = objectc2.GetPX(); this->pxc1 = objectc1.GetPX(); } int GetX()//метод читання { return this->x; return this->xc1; } int GetPX()//метод читання { return this->px; return this->pxc1; } ~B2() {}//деструктор friend ostream& operator <<(ostream& out, B2& object) //перевантажена операція виводу { out << " B2:\t\t[" << object.x << ";" << object.px << "]" << endl; out << " B2 (c1):\t[" << object.xc1 << ";" << object.pxc1 << "]" << endl; return out; } friend istream& operator >>(istream& in, B2& object) //перевантажена операція вводу { cout << "Введiть x точки B2\t"; in >> object.x; cout << "Введiть xc1 точки B2\t"; in >> object.xc1; cout << "Введiть px точки B2\t"; in >> object.px; cout << "Введiть pxc1 точки B2\t"; in >> object.pxc1; return in; } }; class B3 : protected virtual C2, private virtual C3 //успадкування класу { public: B3() :C3() {}//конструктор ініціалізації B3(B3& object) :C3(object) {}//конструктор копіювання void SetX(B3& object)//метод встановлення { this->x = object.GetX(); } void SetPX(B3& object)//метод встановлення { this->px = object.GetPX(); } int GetX()//метод читання { return this->x; } int GetPX()//метод читання { return this->px; } ~B3() {}//деструктор friend ostream& operator <<(ostream& out, B3& object)//перевантажена операція виводу { out << " B3:\t\t[" << object.x << ";" << object.px << "]" << endl; return out; } friend istream& operator >>(istream& in, B3& object)//перевантажена операція вводу { cout << "Введiть x точки B3\t"; in >> object.x; cout << "Введiть xp точки B3\t"; in >> object.px; return in; } }; class A2 : public B1, private B2, public B3//успадкування класу { public: A2() : B1() {}//конструктор ініціалізації A2(A2& object)//констурктор копіювання { this->x = object.x; this->xc1 = object.xc1; this->px = object.px; this->pxc1 = object.pxc1; } void SetX(B2& objectB2, B3& objectB3)//метод встановлення { this->x = objectB2.GetX(); this->xc1 = objectB3.GetX(); } void SetY(B2& objectB2, B3& objectB3)//метод встановлення { this->px = objectB2.GetPX(); this->pxc1 = objectB3.GetPX(); } int GetX()//метод читання { return this->x; return this->xc1; } int GetY()//метод читання { return this->px; return this->pxc1; } ~A2() {}//деструктор friend ostream& operator <<(ostream& out, A2& object) //перевантажена операція виводу { out << " A2:\t\t[" << object.x << ";" << object.px << "]" << endl; out << " A2 (b1):\t[" << object.xc1 << ";" << object.pxc1 << "]" << endl; return out; } friend istream& operator >>(istream& in, A2& object)//перевантажена операція вводу { cout << "Введiть x точки A2\t"; in >> object.x; cout << "Введiть xc1 точки A2\t"; in >> object.xc1; cout << "Введiть px точки A2\t"; in >> object.px; cout << "Введiть pxc1 точки A2\t"; in >> object.pxc1; return in; } }; class A3 : public B2, protected B3//успадкування класу { public: A3() : B2() {}//конструктор ініціалізації A3(A3& object)//констурктор копіювання { this->x = object.x; this->xc1 = object.xc1; this->px = object.px; this->pxc1 = object.pxc1; } void SetX(B2& objectB2)//метод встановлення { this->x = objectB2.GetX(); this->xc1 = objectB2.GetX(); } void SetPX(B2& objectB2)//метод встановлення { this->px = objectB2.GetPX(); this->pxc1 = objectB2.GetPX(); } int GetX()//метод читання { return this->x; return this->xc1; } int GetPX()//метод читання { return this->px; return this->pxc1; } ~A3() {}//деструктор friend ostream& operator <<(ostream& out, A3& object) //перевантажена операція виводу { out << " A3:\t\t[" << object.x << ";" << object.px << "]" << endl; out << " A3 (b1):\t[" << object.xc1 << ";" << object.pxc1 << "]" << endl; return out; } friend istream& operator >>(istream& in, A3& object)//перевантажена операція вводу { cout << "Введiть x точки A3\t"; in >> object.x; cout << "Введiть xc1 точки A3\t"; in >> object.xc1; cout << "Введiть px точки A3\t"; in >> object.px; cout << "Введiть pxc1 точки A3\t"; in >> object.pxc1; return in; } }; int main() { setlocale(LC_ALL, "ukr"); E1 e1; cin >> e1; cout << e1; D2 d2; cin >> d2; cout << d2; C1 c1; cin >> c1; cout << c1; C2 c2; cin >> c2; cout << c2; C3 c3; cin >> c3; cout << c3; B1 b1; cin >> b1; cout << b1; B2 b2; cin >> b2; cout << b2; B3 b3; cin >> b3; cout << b3; A2 a2; cin >> a2; cout << a2; A3 a3; cin >> a3; cout << a3; cout << endl << endl << "Iнформацiя успадкувань" << endl << endl; cout << e1 << endl << d2 << endl << c1 << endl << c2 << endl; cout << c3 << endl << a2 << endl << a3; system("pause"); return 0;} Результати виконання програми: Ініціалізація об’єктів класів Вивід інформації про об’єкти Висновок: на цій лабораторній роботі я здобув практичні навички використання множинного успадкування класів.
Антиботан аватар за замовчуванням

29.10.2019 17:43

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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