Есть 2 лампочки. У каждой есть 2 состояния - активная(горит) и пассивная(цвет лампочки - черный). В ООП нуб. Создаю для лампочек класс Lamp и 2 метода, активирована и деактивирована. Как реализовать для разных объектов этого класса разное значение переменной lampColor?
class Lamp {
public:
void activeted(lampColor) {
SetConsoleTextAttribute(hStdOut, lampColor);
std::cout << "LAMP";
}
void deactiveted() {
SetConsoleTextAttribute(hStdOut, blackColor);
std::cout << "LAMP";
}
private:
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
int lampColor;
int blackColor;
};
Я делал так, но мне кажется это как то не правильно.
int redColor = 4;
int greenColor = 2;
Lamp redLamp;
Lamp greenLamp;
redLamp.activeted(redColor);
greenLamp.activeted(greenColor);
Можно же как-то более элегантно задавать параметры объектов, а то тавтология получается?
Я бы сделал следующим образом.
Во-первых, объявил бы перечисление, содержащее допустимые цвета. Потому что такие записи с магическими числами
int redColor = 4;
int greenColor = 2;
мало понятны.
Для класса я бы определил конструктор, который принимает объект данного перечисления, то есть конструктор изначально задает цвет лампочки. Например,
Lamp redLamp( Red );
Lamp greenLamp( Green);
где Red и Green - это определенные в перечислении константы.
Для конструктора можно задать аргумент по умолчанию, который соответствует целому цвету, или каком-нибудь иному цвету. Поэтому если пользователь создаст объект как
Lamp whiteLamp;
то аргумент можно не указывать.
В самом классе я бы определил два члена данных. Первый задает цвет лампочки, а второй задает состояние лампочки, то есть включена она или нет. Соответственно сделал бы открытыми два метода switchOff и switchOn, которые меняли бы состояние лампочки и, соответственно, выводили ее на консоль в соответствии с ее состоянием.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники