Описать класс «комната», содержащий сведения о метраже, высоте потолков и количестве окон

Описать класс «комната», содержащий сведения о метраже, высоте потолков и количестве окон. Предусмотреть инициализацию с проверкой допустимости значений полей. В случае недопустимых значений полей выбрасываются исключения. Описать методы вычисления площади и объема комнаты и свойства для получения состояния объекта. Написать программу, демонстрирующую все разработанные элементы класса. Создать дочерний класс «комната». Предусмотреть метод для расчета необходимого количества обоев при ремонте.

Класс "комната" я вроде бы создал. Никак не могу понять, что должно быть в дочернем классе.

class Room { //Класс, описывающий комнату
public:
    double x; // длина комнаты
    double y; // ширина 
    double z; // высота
    int kolvo; // кол-во окон
 
    double square(double x, double y) { // площадь комнаты
        return x * y;
    }
 
    double volume(double x, double y, double z) {  // объем
        return x * y * z;
    }
 
};

Ответы (1 шт):

Автор решения: gbg

В дочернем классе должен быть:

метод для расчета необходимого количества обоев при ремонте.

Дизайн класса на тройбан. Потому что поля надо спрятать в private и / или сделать константными (у пользователя класса не должно быть возможности изменить поля напрямую, не вызывая методы класса - иначе вы не выполните требования проверки размеров комнаты на корректность).

Решений тут два:

  1. Сделать поля константами и настраивать их единственный раз при создании экземпляра класса, используя конструктор. В этом случае, их можно оставить в паблике.
  2. Спрятать поля в прайват, но при этом инициализировать их через конструктор (класс никогда не должен находиться в невалидном состоянии), а менять через методы - сеттеры.
→ Ссылка