Professional Documents
Culture Documents
Звіт
Звіт
ЗВІТ
з лабораторної роботи № 9 – 10
з дисципліни
“Об’єктно-орієнтоване програмування”
Виконав:
студент групи 306 -ІПЗ
Сопіженко Денис
Перевірив викладач:
Наталія РЯБЧУК
м. Київ 2023
17
Тема роботи: реалізація множинного успадкування
Мета роботи:
● вивчити принципи та правила реалізації множинного успадкування В
мові С++;
● закріпити на практиці знання протоколу успадкування;
● набути вміння використовувати успадкування для побудови
ієрархічних класових структур для розв’язання різних класів задач.
Завдання
Створення, компіляція, відладка та виконання програми, в якій реалізується і
тестується певна ієрархія кспадкування класів. Результатом виконання
лабораторної роботи має бути демонстрація коректної логіки функціонування
методів похідного класу в програмі.
#include <iostream>
#include <string>
Class Country {
Protected:
Std::string name;
Int population;
Double area;
Public:
// Default constructor
Country() : name(«Ukraine»), population(45000000), area(603500) {}
27
// Copy constructor
Country(const Country& other) : name(other.name),
population(other.population), area(other.area) {}
37
// Method to check if the country exists based on user input
Void checkExistence(int inputPopulation, double inputArea) {
If (inputPopulation == population && inputArea == area) {
Std::cout << «The country exists\n»;
} else {
Std::cout << «Does not exist\n»;
}
}
// Destructor
Virtual ~Country() {
Std::cout << «Destructor executed for the country « << name <<
std::endl;
}
};
Public:
// Default constructor
Capital() : capitalName(«Kyiv») {}
47
Void displayCapitalInfo() const {
Std::cout << «The capital of « << name << « is « << capitalName <<
std::endl;
}
};
Public:
// Default constructor
President() : presidentName(«Yanukovych») {}
57
Void displayAllInfo() const {
displayCapitalInfo();
displayPresidentInfo();
}
};
Class User {
Public:
Void enterPassword() {
Std::string password;
Std::cout << «Enter password: «;
Std::cin >> password;
If (password == «admin123») {
Int created;
Std::cout << «Enter the 'created' number (1991): «;
Std::cin >> created;
If (created == 1991) {
Std::cout << «Access granted as Admin.\n»;
// Perform Admin-specific actions here
} else {
Std::cout << «Access denied.\n»;
}
} else {
Std::cout << «Access granted as User.\n»;
// Perform User-specific actions here
}
}
};
Int main() {
67
User user;
User.enterPassword();
Std::string customName;
Int customPopulation;
Double customArea;
std::cout << «For the country '» << customName << «': «;
77
customCountry.checkExistence(customPopulation, customArea);
// Overloaded operators
Country negatedCountry = -defaultCountry; // Unary operator «-«
Country combinedCountry = defaultCountry + customCountry; // Binary
operator «+»
Country subtractedCountry = defaultCountry – customCountry; // Binary
operator «-«
Bool isEqual = defaultCountry == copiedCountry; // Binary operator «==»
return 0;
}
Тут було реалізовно
87
Контрольні запитання
1)Множинне успадкування – це змога классу успадковувати властивості
від декількох класів водночас. Його використовують для задання класу
успадкування властивостей з множини інших класі для скорочення
манаіпуляцій над кодом
2)Існує три кваліфікатори: public, protected та privat
Public – при передачі зберігає усі права доступу
Protected – залишає приватні елементи похідного класу приватними, а
відкриті обертає на захищені
Privat – Перетворює усі елементи на приватні
3)Конструктори викликаються послідовно, від Базового до
Наслідуючого, кожен ланцюг реалізує лише власні данні. При реалізації класів
базовий клас може викликати наступний клас явно або не явно, активація
деструктора запускає процес зчитування класів в зворотньому порядку.
4)Проблема реалізації множинного класу може виникнути в випадку
якщо до одного файла булуть закріплені два інших щ однаковими іменами, для
уникнення цієї проблеми потрібно вказувати кожному файлу власне ім'я, абоє
робити різні нумерації.
Висновки
В ході даної лабораторної роботи ми провели розділення класів методом
множинного успадкування
97