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

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

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

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

Рік:
2018
Тип роботи:
Лабораторна робота
Предмет:
ООП
Група:
ІТ 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:10-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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