Отчеты по лабам / Лабораторная №3 Акименко
.docxДисциплина: Объектно-ориентированное программирование
Группа: ИКПИ-02
Акименко Полина
Вариант 2
ЛАБОРАТОРНАЯ РАБОТА N 3
ОТНОШЕНИЕ НАСЛЕДОВАНИЯ
1. Постановка задачи
Дополнить систему, состоящую из двух классов COne и CTwo, которые были разработаны в лабораторной работе 2, новым классом CThree. Новый класс должен быть связан public наследованием с классом CTwo. Класс CThree должен имеет одно поле, которое я сделала булиевым. Для разрабатываемого класса написать конструкторы умолчания, с параметрами и конструктор копирования, деструктор, методы доступа и метод print(). Написать тестовую программу для проверки работоспособности разработанных классов.
2. Исходный код
Файл COne.h:
#pragma once
#include <string>
class COne {
public:
int n;
std::string s;
COne();
COne(int arg1, std::string arg2);
COne(const COne& arg);
COne& operator=(const COne& arg);
int get_n();
std::string get_s();
void set_n(int arg);
void set_s(std::string arg);
void print();
};
Файл COne.cpp:
#include <stdio.h>
#include <string>
#include "COne.h"
COne::COne() : n(0), s("default init") {}
COne::COne(int arg1, std::string arg2) : n(arg1), s(arg2) {}
COne::COne(const COne& arg) {
n = arg.n;
s = arg.s;
}
COne& COne:: operator=(const COne& arg) {
n = arg.n;
s = arg.s;
return *this;
}
int COne::get_n()
{
return n;
}
std::string COne::get_s()
{
return s;
}
void COne::set_n(int arg)
{
n = arg;
}
void COne::set_s(std::string arg)
{
s = arg;
}
void COne::print()
{
printf("n = %d; s = %s\n", n, s.c_str());
}
Файл CTwo.h:
#pragma once
#include "COne.h"
#include <stdlib.h>
class CTwo {
public:
long long int l;
COne obj;
CTwo();
CTwo(long long int arg1, COne arg2);
CTwo(const CTwo& arg);
CTwo& operator=(const CTwo& arg);
long long int get_l();
COne get_obj();
void set_l(long long int arg);
void set_obj(COne arg);
void print();
};
Файл CTwo.cpp:
#include "CTwo.h"
CTwo::CTwo() : l(0) {}
CTwo::CTwo(long long int arg1, COne arg2) : l(arg1), obj(arg2) {}
CTwo::CTwo(const CTwo& arg) {
l = arg.l;
obj = arg.obj;
}
CTwo& CTwo::operator=(const CTwo& arg)
{
l = arg.l;
obj = arg.obj;
return *this;
}
long long int CTwo::get_l()
{
return l;
}
COne CTwo::get_obj()
{
return obj;
}
void CTwo::set_l(long long int arg)
{
l = arg;
}
void CTwo::set_obj(COne arg)
{
obj = arg;
}
void CTwo::print()
{
printf("l = %d; obj: ", l);
obj.print();
}
Файл CThree.h:
#pragma once
#include "COne.h"
#include "CTwo.h"
class CThree : public CTwo {
private:
bool f;
public:
CThree();
CThree(bool arg1, long long int arg2, COne arg3);
CThree(const CThree& arg);
bool get_f();
void set_f(bool arg);
void print();
};
Файл CThree.cpp:
#include <stdio.h>
#include <string>
#include "COne.h"
#include "CTwo.h"
#include "CThree.h"
CThree::CThree() : f(true) {}
CThree::CThree(bool arg1, long long int arg2, COne arg3)
{
f = arg1;
l = arg2;
obj = arg3;
}
CThree::CThree(const CThree& arg)
{
f = arg.f;
l = arg.l;
obj = arg.obj;
}
bool CThree::get_f() {
return f;
}
void CThree::set_f(bool arg)
{
f = arg;
}
void CThree::print()
{
f ? printf("f = true; ") : printf("f = false; ");
printf("l = %d; obj: ", l);
obj.print();
}
Файл main.cpp:
#include <stdio.h>
#include <string>
#include "COne.h"
#include "CTwo.h"
#include "CThree.h"
int main()
{
{
COne object1;
object1.print();
COne object2(6, "test");
COne object3(object2);
object3.print();
object3 = object1;
object3.print();
object2.set_n(object2.get_n() + 4);
object2.set_s(object2.get_s() + " number 2");
object2.print();
}
printf("\n");
{
CTwo object1;
object1.print();
COne arg(26, "arg test");
CTwo object2(16, arg);
CTwo object3(object2);
object3.print();
object3 = object1;
object3.print();
object2.set_l(object2.get_l() + 4);
COne arg2(object2.get_obj().get_n() + 4, "arg2 test");
object2.set_obj(arg2);
object2.print();
}
printf("\n");
{
CThree object1;
object1.print();
COne arg(6, "test");
CThree object2(false, 46, arg);
CThree object3(object2);
object3.print();
object3.set_f(!object3.get_f());
object3.print();
}
system("pause");
}
3. Скриншоты работы программы
Рисунок 1 - Результат работы программы