Файл: Объектноориентированное программирование.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.12.2023

Просмотров: 43

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра телевидения и управления (ТУ)

НАСЛЕДОВАНИЕ КЛАССОВ

Лабораторная работа

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

Выполнил студент гр. 111

________ Батенко Д.М.

«___» ____________ 2022 г.

Руководитель:

Ассистент кафедры ТУ

_________­­Рылов К.А.

«___» _________ 2022 г.
Томск 2022

Оглавление





Введение 3

1 ПРАКТИЧЕСКОЕ ЗАДАНИЕ 3

1.1Выполнение задачи 1 3

1.2Выполнение задачи 7 7

1.3Выполнение задачи 11 11

Заключение 16

Приложение A Листинг программы для задачи 1 17

Приложение B Листинг программы для задачи 7 18

Приложение C Листинг программы для задачи 11 19


Введение



Цель данной работы: приобретение практических навыков при написании объектно-ориентированных программ с использованием механизма наследования.

1 ПРАКТИЧЕСКОЕ ЗАДАНИЕ

    1. Выполнение задачи 1



Реализовать базовый класс Деньги с полями: номинал купюры и число купюр. Реализовать производный класс Евро с дополнительным полем стоимость одного евро в рублях и методом вычисления стоимости денежной суммы в рублях. Блок-схема программы представлена на рисунке 1.1. Ход выполнения работы представлен на рисунках 1.2-1.5.



Рисунок 1.1 – Блок-схема программы


Рисунок 1.2 – Создание базового класса


Рисунок 1.3 – Создание производного класса



Рисунок 1.4 – Работа с классами


Рисунок 1.5 – Результат выполнения программы

    1. Выполнение задачи 7



Реализовать базовый класс Три вещественных числа с полями a, b, c. Реализовать производный класс Два набора чисел с дополнительными полями x, y, z и методом вычисления скалярного произведения двух наборов чисел. Для инициализации полей классов использовать конструктор с параметрами.

Блок-схема программы представлена на рисунке 1.6. Ход выполнения программы представлен на рисунках 1.7-1.10.



Рисунок 1.6 – Блок-схема программы



Рисунок 1.7 – Создание базового класса


Рисунок 1.8 – Создание производного класса


Рисунок 1.9 – Работа с классами


Рисунок 1.10 – Пример работы программы


    1. Выполнение задачи 11



Реализовать базовые классы:

– Человек с полями: имя, фамилия, отчество и возраст.

– Работник с полями: должность, оклад, рейтинг (в 100 бальной системе) и стаж.

При помощи механизма множественного наследования реализовать производный класс Работник предприятия с дополнительными методами вычисления заработной платы и вывода информации о работнике. Если рейтинг работника от 60 до 75 балов увеличить их оклад работников на 20%, если их рейтинг от 75 до 90 балов на 40%, если их рейтинг от 90 до 100 балов на 60%. Если стаж работы более 20 лет увеличить итоговый оклад еще на 10%. Для инициализации полей классов использовать конструктор с параметрами.



Блок-схема программы представлена на рисунке 1.11. Ход выполнения работы представлен на рисунках 1.12-1.15.



Рисунок 1.11 – Блок-схема программы




Рисунок 1.12 – Создание базовых классов


Рисунок 1.13 – Создание произвольного класса



Рисунок 1.14 – Работа с классами


Рисунок 1.15 – Результат выполнения программы

Заключение



По итогу выполнения задания были получены навыки в работе с наследованием классов на языке C++. Изучен механизм множественного наследования.

Приложение A
Листинг программы для задачи 1



#include

 

using namespace std;

 

class Money

{

public:

int r = 1;

int nom;

int count;

 

};

 

class Euro : public Money

{

public:

int e;

void rashetr(){

cout << r * nom * count << endl;

}

void rashete()

{

cin >> e;

e = e * 60;

cout << e * nom * count << endl;

}

};

 

int main()

{

Euro dengi;

cout << "Enter the denomination of banknotes: " << endl;

cin >> dengi.nom;

cout << "Enter the number of banknotes: " << endl;

cin >> dengi.count;

dengi.rashetr();

cout << "Enter the amount of euro: " << endl;

dengi.rashete();

return 0;

}

 

Приложение B
Листинг программы для задачи 7


#include

using namespace std;

 

class three

{

public:

int a;

int b;

int c;

 

three()

{

}

 

};

class two : public three

{

public:

int x;

int y;

int z;

double v[4];

double m[4];

void scalar()

{

int i;

double res = 0.0;

v[1] = a;

v[2] = b;

v[3] = c;

m[1] = x;

m[2] = y;

m[3] = z;

for(i=0; i < 4; i++)

res = res + (v[i]*m[i]);

cout << "a.b = " << res << endl;

}

};

 

int main()

{

two chislo;

cin >> chislo.a;

cin >> chislo.b;

cin >> chislo.c;

cin >> chislo.x;

cin >> chislo.y;

cin >> chislo.z;

chislo.scalar();

 

 

return 0;

}

Приложение C
Листинг программы для задачи 11



#include

using namespace std;

 

class Man

{

 

public:

string name;

string surname;

string patronymic;

int age;

Man()

{

}

};

 

class Worker

{

public:

string work;

double zp;

int reiting;

int staz;

 

};

 

class Papich : public Man, public Worker

{

public:

void infa(double zp)

{

if (reiting >= 60 && reiting <= 75)

{

if (staz > 20)

zp = zp +((zp/100) * 20) + ((zp/100) * 10) ;

else

zp = zp + ((zp/100) * 20);

}

if (reiting >= 75 && reiting <= 90)

{

if (staz > 20)

zp = ((zp/100) * 40) + ((zp/100) * 40) ;

else

zp = ((zp/100) * 40);

}

if (reiting >= 90 && reiting <= 100)

{

if (staz > 20)

zp = zp + ((zp/100) * 60) + ((zp/100) * 10) ;

else

zp = zp + ((zp/100) * 60);

}

cout << "Final salary = " << zp << endl;

 

}

};

 

int main()

{

Papich vlog;

cout << "Enter name: " << endl;

cin >> vlog.name;

cout << "Enter surname: " << endl;

cin >> vlog.surname;

cout << "Enter patronymic: " << endl;

cin >> vlog.patronymic;

cout << "Enter age: " << endl;

cin >> vlog.age;

cout << "Enter work: " << endl;

cin >> vlog.name;

cout << "Enter salary: " << endl;

cin >> vlog.zp;

cout << "Enter raiting: " << endl;

cin >> vlog.reiting;

cout << "Enter expirience: " << endl;

cin >> vlog.staz;

vlog.infa(vlog.zp);

return 0;

}