У меня есть класс мебели с:Как создать несколько элементов с одним классом на C++?
Furniture.h:
#include <iostream>
#include <string>
using namespace std;
class Furniture {
public:
Furniture();
~Furniture();
void setname(string name);
void setprice(double price);
double getprice();
string getname();
virtual void printSpecs();
private:
string name;
double price;
protected:
static int NumberOfItems;
int Id;
};
furniture.cpp:
#include "furniture.h"
Furniture::Furniture() {
}
Furniture::~Furniture() {
}
void Furniture::setname(string name) {
this->name = name;
}
string Furniture::getname()
{
return this->name;
}
void Furniture::setprice(double price) {
this->price = price;
}
double Furniture::getprice() {
return this->price;
}
void Furniture::printSpecs() {
cout<<"Price: "<<this->price<<endl;
cout<<"Name: "<<this->name<<endl;
}
int main() {
Furniture *model = new Furniture();
model->setname("FinalDestiny");
model->setprice(149.99);
model->printSpecs();
delete model;
}
Все работает отлично, но я хочу добавить несколько предметов мебели, с тем же классом и просто обновите NumberOfItems. Есть ли способ сделать это?
Кроме того, мой код в порядке? Я имею в виду, как я могу его улучшить? Я совершенно новичок в ООП, и я хотел бы изучить некоторые хорошие практики.
Спасибо.
Значит, использование сеттеров/геттеров не является хорошим? – FinalDestiny
@FinalDestiny Это не так. Среди экспертов C++ существует консенсус в отношении того, что getters/seters используются в большинстве кодов. У них есть свое использование в некоторых кодах (например, трудно реализовать DAO без них), но большинство кода им не нужны. Они не подходят с объектно-ориентированным кодом, где каждый класс имеет одну конкретную цель. –
Особенно «геттеры». Никакие геттеры не являются хорошими. Скажите объекту, что вы хотите. Сотрудничайте с другими объектами для выполнения работы. Например. 'printSpecs' может использовать объект' std :: ostream' для использования. Это упрощает тестирование, так как в настоящий момент вы неявно связаны с объектом 'cout'. –