Создать иерархическую систему классов:
•базовым классом должен быть абстрактный класс «Жидкость» (СLiquid);
•производными классами должны стать классы «Спирт» (CAlcohol) и «Бензин» (CPetrol).
При этом:
•в базовом классе СLiquid должны быть заданы поля для названия и плотности.
•в производном классе CAlcohol должно быть задано поля для хранения крепости (основная характеристика жидкости);
•в производном классе CPetrol должно быть задано поля для хранения октанового числа (основная характеристика жидкости);
•все классы иерархии должны иметь следующие методы: методы получения значения и задания основной характеристики жидкости (два последних метода должны быть чисто виртуальными в базовом классе), а также метод для выведения на экран основных характеристик (данный метод должен быть чисто виртуальным).
C/C++
Как Создать иерархическую систему классов, на примере этого задания? Второй день уже туплю, помогите пожалуйста... С++
10 минут всей работы)
#include <iostream>
#include <string>
using namespace std;
class СLiquid {
public:
virtual double characteristic()const = 0;
virtual void characteristic(double value) = 0;
virtual void show()const = 0;
protected:
string title;
double density;
};
class CAlcohol : virtual public СLiquid {
public:
CAlcohol(const string& title, const double density) {
this->title = title;
this->density = density;
}
double characteristic()const override { return volume; }
void characteristic(double value) override { volume = value; }
void show()const override {
cout << "Название: " << title << "\n - Плотность: " << density << " кг/л\n - Крепость: " << volume << "%\n";
}
private:
double volume;
};
class CPetrol : virtual public СLiquid {
public:
CPetrol(const string& title, const double density) {
this->title = title;
this->density = density;
}
double characteristic()const override { return rating; }
void characteristic(double value) override { rating = value; }
void show()const override {
cout << "Название: " << title << "\n - Плотность: " << density << " кг/л\n - Октанове число: " << rating << '\n';
}
private:
double rating;
};
int main() {
system("chcp 1251 > nul");
CAlcohol vodka("водка Русская", 0.953);
vodka.characteristic(40.0);
CPetrol petrol("бензин высокооктановый", 0.745);
petrol.characteristic(95);
vodka.show();
puts("");
petrol.show();
system("pause > nul");
}
#include <iostream>
#include <string>
using namespace std;
class СLiquid {
public:
virtual double characteristic()const = 0;
virtual void characteristic(double value) = 0;
virtual void show()const = 0;
protected:
string title;
double density;
};
class CAlcohol : virtual public СLiquid {
public:
CAlcohol(const string& title, const double density) {
this->title = title;
this->density = density;
}
double characteristic()const override { return volume; }
void characteristic(double value) override { volume = value; }
void show()const override {
cout << "Название: " << title << "\n - Плотность: " << density << " кг/л\n - Крепость: " << volume << "%\n";
}
private:
double volume;
};
class CPetrol : virtual public СLiquid {
public:
CPetrol(const string& title, const double density) {
this->title = title;
this->density = density;
}
double characteristic()const override { return rating; }
void characteristic(double value) override { rating = value; }
void show()const override {
cout << "Название: " << title << "\n - Плотность: " << density << " кг/л\n - Октанове число: " << rating << '\n';
}
private:
double rating;
};
int main() {
system("chcp 1251 > nul");
CAlcohol vodka("водка Русская", 0.953);
vodka.characteristic(40.0);
CPetrol petrol("бензин высокооктановый", 0.745);
petrol.characteristic(95);
vodka.show();
puts("");
petrol.show();
system("pause > nul");
}
Azamat Abikenov
Спасибо большое, пойду разбираться
Как в любом туториале по наследованию:
https://www.tutorialspoint.com/cplusplus/cpp_inheritance.htm
Если я правильно понял про чисто виртуальные методы...
class СLiquid{
СLiquid():m_density(0){}
virtual ~СLiquid(){}
virtual void SetName(const char* name){
m_name = name;
};
virtual const char* GetName(){
return m_name.c_str();
};
virtual void SetDensity(int v){
m_density = v;
}
virtual int GetDensity(){
return m_density;
}
virtual void SetStrength(int) = 0;
virtual int GetStrength() = 0;
virtual void PrintInfo() = 0;
protected:
std::string m_name;
int m_density;
};
class CAlcohol : public СLiquid{
int m_strength;
public:
CAlcohol():m_strength(0){}
virtual ~CAlcohol(){}
virtual void SetStrength(int v){
m_strength = v;
}
virtual int GetStrength(){
return m_strength;
}
virtual void PrintInfo(){
printf("Name:%s Density:%i Strength%i", m_name.c_srt(), m_density, m_strength);
}
};
другой класс сам напиши
https://www.tutorialspoint.com/cplusplus/cpp_inheritance.htm
Если я правильно понял про чисто виртуальные методы...
class СLiquid{
СLiquid():m_density(0){}
virtual ~СLiquid(){}
virtual void SetName(const char* name){
m_name = name;
};
virtual const char* GetName(){
return m_name.c_str();
};
virtual void SetDensity(int v){
m_density = v;
}
virtual int GetDensity(){
return m_density;
}
virtual void SetStrength(int) = 0;
virtual int GetStrength() = 0;
virtual void PrintInfo() = 0;
protected:
std::string m_name;
int m_density;
};
class CAlcohol : public СLiquid{
int m_strength;
public:
CAlcohol():m_strength(0){}
virtual ~CAlcohol(){}
virtual void SetStrength(int v){
m_strength = v;
}
virtual int GetStrength(){
return m_strength;
}
virtual void PrintInfo(){
printf("Name:%s Density:%i Strength%i", m_name.c_srt(), m_density, m_strength);
}
};
другой класс сам напиши
Azamat Abikenov
уже смотрел это, сложно по этому примеру делать
Женя Филин
Просто надо заменить имена. Функции\методы так-же надо подправить. Всё то-же самое.
class СLiquid{
СLiquid(){}
};
class СLiquid{
СLiquid(){}
};
Похожие вопросы
- Создать простой класс, конструктор, и несколько функций. Не могу решить задачу, плохо понял тему, помогите пожалуйста.
- Помогите пожалуйста - создать 4 массива на c++
- Задание с использование библиотечных функций С++. Нужен код. Помогите, пожалуйста.
- Помогите пожалуйста зделать єто задание!
- Помогите, пожалуйста, с заданием по программированию.
- Помогите, пожалуйста, решить задание. Работа с двумерными массивами.
- Помогите пожалуйста с остальными заданиями в языке С.
- Помогите пожалуйста с остальными заданиями в языке С
- Помогите пожалуйста с заданиями.В языке С.
- Создать алгоритм. Помогите пожалуйста