Написать программу на С++ с подробным объяснением.
Спроектировать класс, реализующий предметной области согласно варианту, и
разработать программу-драйвер (main-функцию), которая демонстрирует работу класса, а именно: возможные способы создания объектов классов и корректность функционирования
разработанных методов класса (запустить каждый метод класса хотя бы 2 раза).
Класс CTV (Телевизор). Класс хранит список каналов,
текущий канал, громкость, ресурс телевизора, состояние
включения. Конструктор имеет инициализировать эти
свойства. Методы позволяют модифицировать и
читать свойства, включать или выключать телевизор,
переключать канал, увеличивать / уменьшать громкость,
уменьшать ресурс телевизора при просмотре
телепередач, выводить на экран информацию о
текущее состояние телевизора.
Answers & Comments
Verified answer
Ответ:
#include <string>
#include <iostream>
#include <vector>
using namespace std;
class Channel { // класс канал
int num; // номер канала
string name; // название канала
public:
Channel(int n, string nm) { // конструктор с 2 параметрами
num = n;
name = nm;
}
int getNum() { // функция возвращает номер канала
return num;
}
string getName() {// функция возвращает имя канала
return name;
}
};
class TV {// класс телевизор
bool on; // Состояние включения
char currentChannel; // Текущий канал
int volume; // Громкость
int resource; // Ресурс телевизора
vector<Channel> channels; // Список каналов
public:
TV(bool o, char cc, int v, vector<Channel> c, int rc) {// конструкторы
on = o;
currentChannel = cc;
volume = v;
channels = c;
resource = rc;
}
void Turn() { //функция вкл/выкл
if (on) on = false;
else on = true;
}
void UseTv() { // Смотреть телепередачи какое-то время
if (on)
{
if (resource > 0) resource--;
else this->Turn();
}
}
void isOn() { // возвращает значение включен телевизор или нет
if (on) cout << "Телевизор включен"<< endl;
else cout << "Телевизор выключен" << endl;
}
void switchChannel(bool up) {// функция переключения каналов
if (!on) Turn();
if (up) { // если нажата клавиша вверх
if (currentChannel < channels.size() - 1) // если канал не последний
currentChannel++; // то переходим на следующий канал
else
currentChannel = 0; // иначе возвращаемся на следующий канал
}
else { // нажали вниз
if (currentChannel > 0)
currentChannel--;
else
currentChannel = channels.size() - 1;
}
}
void switchVolume(bool up) { //функция изменения громкости
if (on) {
if (up) {
if (volume < 100)
volume++;
}
else {
if (volume > 0)
volume--;
}
}
}
void getCurrentChannel() { //получаем текущий канал
cout << "Текущий канал: " << channels[currentChannel].getNum() << " - "
<< channels[currentChannel].getName() << endl;
}
void getVolume() { //получаем текущую громкость
cout << "Громкость телевизора: " << volume << endl;
}
void getResource() { //получаем текущий ресурс
cout << "Ресурс телевизора: " << resource << endl;
}
};
int main() {
setlocale(LC_ALL, "Russian");
vector <Channel> channels = { {1,"ch1"},{2,"ch2"},{3,"ch3"} };
TV tv(false, 1, 50, channels, 100); //создаем телевизор с заданными параметрами
// Демонстрация работы и проверка функционирования ТВ
// (запускаем каждый метод хотя бы 2 раза)
tv.Turn();
tv.isOn();
tv.getVolume();
tv.getCurrentChannel();
tv.getResource();
tv.UseTv();
tv.switchVolume(true);
tv.switchChannel(true);
tv.getVolume();
tv.getCurrentChannel();
tv.getResource();
tv.UseTv();
tv.switchVolume(false);
tv.switchChannel(false);
tv.getCurrentChannel();
tv.getVolume();
tv.getResource();
tv.Turn();
tv.isOn();
}