ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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.2-1.5.
Рисунок 1.1 – Блок-схема программы
Рисунок 1.2 – Создание базового класса
Рисунок 1.3 – Создание производного класса
Рисунок 1.4 – Работа с классами
Рисунок 1.5 – Результат выполнения программы
-
Выполнение задачи 7
Реализовать базовый класс Три вещественных числа с полями a, b, c. Реализовать производный класс Два набора чисел с дополнительными полями x, y, z и методом вычисления скалярного произведения двух наборов чисел. Для инициализации полей классов использовать конструктор с параметрами.
Блок-схема программы представлена на рисунке 1.6. Ход выполнения программы представлен на рисунках 1.7-1.10.
Рисунок 1.6 – Блок-схема программы
Рисунок 1.7 – Создание базового класса
Рисунок 1.8 – Создание производного класса
Рисунок 1.9 – Работа с классами
Рисунок 1.10 – Пример работы программы
-
Выполнение задачи 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;
}