|
Технологии программирования практика 8. тп практика. Проектирование классов с наследованием
Тема: Проектирование классов с наследованием.
Цель: получение практических навыков проектирования классов и исследование механизмов открытого наследования в С++.
Задание 1. В соответствии с индивидуальным заданием (см. приложение) разработать базовый класс и производные классы, которые наследуют базовый по типу public. Базовый класс и классы-наследники должны иметь собственные свойства и методы. Создать несколько объектов для каждого производного класса. Для инициализации объектов использовать конструкторы. Разработать меню, обеспечивающее:
отображение свойств объектов на экране; изменение какого-либо свойства объектов; определение Вычисляемого показателя; выход из программы.
Вариант 10 – строительные материалы.
Текст программы:
set.h
#include using namespace std; class Object {
public:
string name;
int st, cost;
Object() : name(""), st(0), cost(0) {}
Object();
void allCost();
}; class Material : public Object {
public:
string name;
int mass, value;
Material() :name(""), mass(0), value(0) { };
Material();
void density();
}; class Instrument : public Object {
public:
string scope_of_application;
Instrument(): scope_of_application("") { }
Instrument();
void numbersWrench();
};
set.cpp:
#include
#include "set.h" using namespace std; Object::Object()
{
name = "";
} void Object::allCost()
{
cout << "Общая стоимость: " << st * cost << endl;
} Material::Material()
{
} void Material::density()
{
cout << "Плотность сыпучего материала: " << mass / value << endl;
} Instrument::Instrument()
{
} void Instrument::numbersWrench()
{
int res;
res = name.compare("инструменты");
if (res == 0) {
cout << "номера для покупки ";
for (int i = 1; i < 16; i++) {
cout << i << " ";
}
cout << endl;
}
}
main.cpp:
#include
#include
#include
#include "set.h" using namespace std; int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(LC_ALL, "Russian");
int key;
string s;
Material mat1;
Instrument inst1; do {
cout << "Вы можете продолжить работу со следующими строительными материалами:"<< endl;
cout << "1)Сыпучие материалы" << endl;
cout << "2)Инструменты:" << endl;
cout << "3)Выход:" << endl;
cin >> key;
if (key == 1)
{
cout << "Введите название сыпучего материала: ";
cin >> mat1.name;
cout << "Введите количество и цену сыпучего материала: ";
cin >> mat1.st >> mat1.cost;
cout << "Введите объём(м3) и массу сыпучего материала(кг): ";
cin >> mat1.value >> mat1.mass;
mat1.allCost();
mat1.density();
}
else if (key == 2)
{
cout << "Введите название инструмента: ";
cin >> inst1.name;
cout << "Введите количество и цену инcтрумента: ";
cin >> inst1.st >> inst1.cost;
inst1.allCost();
inst1.numbersWrench();
}
else {
cout << ("Выход из программы");
break;
}
cout << "Для выхода введите 0, для продолжение введите 1" << endl;
cin >> key;
} while (key != 0);
return 0;
}
Результат работы программы:
Задание 1:
Вывод:
В ходе выполнения данной практической работы мне удалось поработать с классами и понять принцип работы наследования классов.
В первой программе пользователь может ввести данные об строительных материалах и выполнить с ними определённые действия.
В set.h описаны классы, в set.cpp реализация методов к ним, а в main.cpp – реализовано меню, с помощью которого пользователь может управлять программой.
В результате были получены практические навыки по разработке классов с наследованием. |
|
|