Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчеты по лабам / Лабораторная №3 Акименко

.docx
Скачиваний:
6
Добавлен:
20.12.2021
Размер:
300.57 Кб
Скачать

Дисциплина: Объектно-ориентированное программирование

Группа: ИКПИ-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 - Результат работы программы