Advertisement
Viktor_Profa

Лабораторна робота №7

Oct 27th, 2024
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. // Базовий клас A1
  6. class A1 {
  7. protected:
  8.     int dataA1;
  9. public:
  10.     A1(int value = 0) : dataA1(value) {}
  11.     A1(const A1& other) : dataA1(other.dataA1) {}
  12.     virtual ~A1() {}
  13.     void setDataA1(int value) { dataA1 = value; }
  14.     int getDataA1() const { return dataA1; }
  15.     friend ostream& operator<<(ostream& os, const A1& obj) { os << obj.dataA1; return os; }
  16.     friend istream& operator>>(istream& is, A1& obj) { is >> obj.dataA1; return is; }
  17. };
  18.  
  19. // Клас B1 успадковує A1
  20. class B1 : private A1 {
  21. protected:
  22.     int dataB1;
  23. public:
  24.     B1(int value = 0) : A1(value), dataB1(value) {}
  25.     B1(const B1& other) : A1(other), dataB1(other.dataB1) {}
  26.     ~B1() {}
  27.     void setDataB1(int value) { dataB1 = value; }
  28.     int getDataB1() const { return dataB1; }
  29.     friend ostream& operator<<(ostream& os, const B1& obj) { os << obj.dataB1; return os; }
  30.     friend istream& operator>>(istream& is, B1& obj) { is >> obj.dataB1; return is; }
  31. };
  32.  
  33. // Клас C1 успадковує B1
  34. class C1 : protected B1 {
  35. protected:
  36.     int dataC1;
  37. public:
  38.     C1(int value = 0) : B1(value), dataC1(value) {}
  39.     C1(const C1& other) : B1(other), dataC1(other.dataC1) {}
  40.     ~C1() {}
  41.     void setDataC1(int value) { dataC1 = value; }
  42.     int getDataC1() const { return dataC1; }
  43.     friend ostream& operator<<(ostream& os, const C1& obj) { os << obj.dataC1; return os; }
  44.     friend istream& operator>>(istream& is, C1& obj) { is >> obj.dataC1; return is; }
  45. };
  46.  
  47. // Клас D1 успадковує C1
  48. class D1 : private C1 {
  49. protected:
  50.     int dataD1;
  51. public:
  52.     D1(int value = 0) : C1(value), dataD1(value) {}
  53.     D1(const D1& other) : C1(other), dataD1(other.dataD1) {}
  54.     ~D1() {}
  55.     void setDataD1(int value) { dataD1 = value; }
  56.     int getDataD1() const { return dataD1; }
  57.     friend ostream& operator<<(ostream& os, const D1& obj) { os << obj.dataD1; return os; }
  58.     friend istream& operator>>(istream& is, D1& obj) { is >> obj.dataD1; return is; }
  59. };
  60.  
  61. // Клас E1 успадковує D1
  62. class E1 : public D1 {
  63. protected:
  64.     int dataE1;
  65. public:
  66.     E1(int value = 0) : D1(value), dataE1(value) {}
  67.     E1(const E1& other) : D1(other), dataE1(other.dataE1) {}
  68.     ~E1() {}
  69.     void setDataE1(int value) { dataE1 = value; }
  70.     int getDataE1() const { return dataE1; }
  71.     friend ostream& operator<<(ostream& os, const E1& obj) { os << obj.dataE1; return os; }
  72.     friend istream& operator>>(istream& is, E1& obj) { is >> obj.dataE1; return is; }
  73. };
  74.  
  75. // Аналогічно побудуємо інші класи для A3, B3, C3, D2
  76.  
  77. int main() {
  78.     E1 e1(10);
  79.     cout << "Value in E1: " << e1.getDataE1() << endl;
  80.     D1 d1(5);
  81.     cout << "Value in D1: " << d1.getDataD1() << endl;
  82.  
  83.     // Інші приклади для A3, B3, C3, D2 можуть бути додані аналогічно
  84.  
  85.     return 0;
  86. }
  87.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement