Файл: Отчет за практическое занятие 6 Тема Проектирование классов с наследованием.docx
Добавлен: 04.12.2023
Просмотров: 36
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
_____________________________________________________________________________
Факультет Информационных систем и технологий
Кафедра Безопасности информационных систем
Дисциплина «Алгоритмизация и программирование»
ОТЧЕТ
За практическое занятие №6
Тема: Проектирование классов с наследованием
Вариант: _7_
Выполнил
Студент 2 курса, гр. ИБ-02з
_____________ Винокуров А.Ф.
Принял
Доцент кафедры БИС
_____________ Медведев В.А.
Санкт-Петербург
2022
Тема: Проектирование классов с наследованием
Цель: получение практических навыков проектирования классов и исследование механизмов открытого и закрытого наследования в С++.
Вариант 1.
А. Спроектировать структуру классов в соответствии с индивидуальным заданием (см. Приложение). Наследование осуществляется по типу public.
Б. Создать несколько объектов производных классов, задавая случайным образом их свойства.
В. Для определения Вычисляемого показателя использовать дружественную функцию.
№ п/п | Базовый класс | Производные классы | Вычисляемый показатель |
7 | Периферийное устройство компьютера | Клавиатура, мышь | Минимальная цена устройства |
Текст программы:
#include
using namespace std;
class Peripheral {
int id;
double price;
public: Peripheral() { id = 0; price = 0;
} Peripheral(int _id, double _price) { id = _id; price = _price;
}
double GetPrice() {
return price;
}
int GetID() {
return id;
}
Peripheral() {};
friend double MinValuePrice(Peripheral[], int count);
};
class Mouse : public Peripheral {
int dpi;
int mouseKey;
public: Mouse(int _dpi, int _mousekey) : Peripheral(rand() % 100, rand() % 200 + 20) { dpi = _dpi; mouseKey = _mousekey;
}
int GetDPI() {
return dpi;
}
int GetMouseKey() {
return mouseKey;
}
};
class Keyboard : public Peripheral {
int keyboardKey;
bool mechanical;
public: Keyboard(int _keyboardKey, bool _mechanical) : Peripheral(rand() % 100, rand() % 200 + 20) { keyboardKey = _keyboardKey; mechanical =_mechanical;
}
int GetKeyboardKey() {
return keyboardKey;
}
bool GetMechanical() {
return mechanical;
}
};
int main()
{ Mouse spaceX(30 + rand() % 100, 2 + rand() % 5); Mouse Virgin(30 + rand() % 100, 2 + rand() % 7); Keyboard BladeZ(21 + rand() % 146, 0 + rand() % 2); Keyboard Quality(13 + rand() % 146, 0 + rand() % 2); Peripheral arr[4] = {spaceX,Virgin,BladeZ,Quality};
cout << endl << "Mouse\t\t" <
cout << "Space X: "<< "\t\t " << spaceX.GetDPI() << "\t\t " << spaceX.GetMouseKey() << "\t\t" << spaceX.GetPrice() << "\t" << spaceX.GetID() << endl;
cout << "Virgin: " << "\t\t " << Virgin.GetDPI() << "\t\t " << Virgin.GetMouseKey() << "\t\t" << Virgin.GetPrice() << "\t" << Virgin.GetID() << endl;
cout << "\n\n" <<"Keyboard\t\t" << "\n\n" << "Name\t\t" << "\tKey count " << "\tmechanical keys \t" << "Price\t" << "ID\t" << endl;
cout << "BladeZ:" << "\t\t\t " <
cout << "Quality:" << "\t\t " << Quality.GetKeyboardKey() << "\t\t\t" << Quality.GetMechanical() << "\t\t" << Quality.GetPrice() << "\t" << Quality.GetID() << endl;
cout << endl << "min value of price: " << MinValuePrice(arr, 4) << endl;
return 0;
}
double MinValuePrice(Peripheral mass[], int count) {
double min = 0;
min = mass[0].GetPrice();
for (int i = 1; i < count - 1; i++)
{
if (min > mass[i].GetPrice())
{
min = mass[i].GetPrice();
}
}
return min;
}
Результат работы программы:
Рисунок 1Результат работы программы по нахождению минимальной цены при помощи дружественной функции
Вывод: в результате выполнения практической работы были получены навыки проектирования классов и исследованы механизмы открытого и закрытого наследования в C++.