Описать класс «комната», содержащий сведения о метраже, высоте потолков и количестве окон
Описать класс «комната», содержащий сведения о метраже, высоте потолков и количестве окон. Предусмотреть инициализацию с проверкой допустимости значений полей. В случае недопустимых значений полей выбрасываются исключения. Описать методы вычисления площади и объема комнаты и свойства для получения состояния объекта. Написать программу, демонстрирующую все разработанные элементы класса. Создать дочерний класс «комната». Предусмотреть метод для расчета необходимого количества обоев при ремонте.
Класс "комната" я вроде бы создал. Никак не могу понять, что должно быть в дочернем классе.
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 шт):
В дочернем классе должен быть:
метод для расчета необходимого количества обоев при ремонте.
Дизайн класса на тройбан. Потому что поля надо спрятать в private и / или сделать константными (у пользователя класса не должно быть возможности изменить поля напрямую, не вызывая методы класса - иначе вы не выполните требования проверки размеров комнаты на корректность).
Решений тут два:
- Сделать поля константами и настраивать их единственный раз при создании экземпляра класса, используя конструктор. В этом случае, их можно оставить в паблике.
- Спрятать поля в прайват, но при этом инициализировать их через конструктор (класс никогда не должен находиться в невалидном состоянии), а менять через методы - сеттеры.