На учёбе выдали вот такое задание:
Разработать программу, для обработки информации о строительных материалах: поступление, учет и отгрузка. Для этого требуется разработать классы. Базовый класс должен быть абстрактным. Первый производный класс определяет количество стройматериалов каждого типа, например 50 перекрытий. Другой класс хранит данные о каждом виде стройматериалов, например площадь и стоимость за квадратный метр. Далее следует класс, хранящий описание каждого вида стройматериалов, которое включает название и сорт материала.
Помогите разобраться, как эта иерархия вообще должна выглядеть?
• Почему один класс хранит информацию обо всех видах стройматериалов?
• Базовый класс должен быть абстракцией чего?
• Да вообще куча вопросов, не понимаю само задание.
Буду рад любой помощи: перефразируйте, сделайте рисунок, ну или что-то подобное.
Каждая задача имеет многие способы решения. Перед вами стоит задача и конкретный способ решения.
Почему один класс хранит информацию обо всех видах стройматериалов?
ответ на подобные вопросы однозначен: Потому что предлагается именно такой способ решения.
Для этого нужно просто взять ручку с бумагой и записывать точно так же, как требуется(если опыта не хватает для решения сходу): Нужно обработать информации о строительных материалах:
Как обработать, вы пока не решили(не знаете), но вы точно знаете, что для каждого из этих пунктов вы должны выполнять какие_то действия, а значит их можно написать в виде функций, которые и станут методами абстрактного класса Складское_помещение
, или, вернее, информация о поступлении строительных материалов
, поскольку вы еще не знаете что и как должно выполниться. Записывая, таким образом, информацию о том, что нужно делать, мы можем написать первоначальный вид наших классов. Например так:
class Info {
protected:
using Record = std::map<std::string, size_t>;
Record map; //записывается название и количество
public:
//поступление материалов
virtual size_t contains(const size_t);
//учет материалов
virtual Record& registration() = 0;
//отправка
virtual void dispatch() = 0;
};
//класс, определяющий количество материалов каждого типа
class Identify : public Info {
public:
Record& registration() final {/*...*/ }
void dispatch() final {/*...*/ }
};
//описание
class Dep : public Info {
//информацию получать из map
enum Kind { I, II, III }; // какого сорта
public:
Record& registration() final;
void dispatch() final;
//количество поступившего материал
size_t contains(const size_t) final;
//тут функция, для выдачи(вывода) названия и сорта
//каким то образом(способ выбирайте сами)
};
Следующим делом является обнаружение недостатков, написанного. Лично я, пока не стал разбираться в каком классе какие методы стоит определять, и, следовательно, какие методы (не) нужно представлять как чисто виртуальными...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как сделать так, чтобы камера не флипалась (поворачивалась) вместе с персонажем, но перемещалась за с ним?
Есть 3 UserControl, вложенных друг в другаДля старшего UserControl прописаны DependencyProperty - цвет элементов, которые будут задаваться в разметке и привязываться...
Делаю скрипт для перемещения персонажа по урокам в интернетеЗастрял на моменте прыжка