Пожалуйста , решите этот вопрос, который относится к объектно - ориентированному программированию
Определите абстрактный класс прибыли с текстовым описанием, именем работодателя, методом, обеспечивающим количество доступных прибылей, и чисто виртуальным методом getGain, вычисляющим реальную прибыль от прибыли.
Определите следующие классы, унаследованные от прибыли:
• ChargedProfit представляет собой прибыль с единым значением дохода и стоимостью результатов (прибыль от прибыли представляет собой вычитание двух значений),
• Налогооблагаемая прибыль, представляющая собой прибыль с единым значением дохода и процентом налогов (прирост прибыли-это доход, уменьшенный на процент),
• Мультиприбыль, представляющая собой прибыль с одним значением дохода, полученным многократно (прирост прибыли-это умножение значения дохода).
Переопределите, для каждого из вышеперечисленных классов, виртуальный метод getGain, заставив его возвращать реальную прибыль от прибыли данного класса. Реализуйте все конструкторы, деструкторы, геттеры, сеттеры и исключения, которые делают функциональность классов полной, а также все другие методы и исключения, необходимые для запуска класса.
код приведен ниже.
Определите доход класса с указанием номера года, максимальной прибыли и динамического списка полученной прибыли.
Реализуйте следующие открытые методы класса:
• тот, который позволяет добавить новую прибыль произвольного типа в список доходов на первой позиции списка (при контроле максимальной прибыли должен быть выброшен OverflowError, если максимальная прибыль может быть превышена),
• тот, который позволяет добавить новую прибыль произвольного типа в список доходов на последней позиции списка (с контролем также максимальной прибыли),
• один, позволяющий удалить последнюю прибыль из выручки (выбрасывая исключение EmptyError, если список пуст),
• один, позволяющий удалить всю прибыль из списка,
• метод, возвращающий суммарную прибыль от всех прибылей в выручке.
Перегрузите оператор индексирования ([]), чтобы доход имел прямой доступ к задаче на определенной позиции в списке (вызывая исключение IndexError, если оно не существует). Перегрузите оператор shift-left (<<) печатью данных о выручке и подробностях всех прибылей. Добавьте все остальные члены, которые являются
необходимо сделать функциональность класса полной или требуется выполнить приведенный ниже код.
Напишите программу, которая тестирует все возможности класса, в частности должен быть включен следующий код:
Revenue calc(2014, 10000); //max=10000 cout << Profit::count(); //0 try { calc.addFirst(new ChargeProfit("sale", "Allegro", 8000, 6000)); //8000-6000 calc.addFirst(new TaxedProfit("wages", "Boss", 9000, 18)); //18% of taxes calc.addLast(new MultiProfit("tutoring", "Johny", 100, 6)); //6x100 calc.addLast(new TaxedProfit("project", "UE", 3000, 30)); //30% of taxes } catch(Revenue::OverflowError &e) { cout << e.what(); //gain for 'project' is too large } cout << calc; //Revenue 2014, maximal gain: 10000.00, total gain: 9980.00: //1. wages (Boss), gain: 7380.00 //2. sale (Allegro), gain: 2000.00 //3. tutoring (Johny), gain: 600.00 cout << Profit::count(); //3 cout << calc.summaryGain() << endl; //9980.00 calc.removeLast(); cout << Profit::count(); //2 cout << calc.summaryGain() << endl; //9380.00 try { cout << calc[1].getGain() << endl; //7380.00 cout << calc[4].getGain() << endl; //IndexError exception } catch(Revenue::IndexError &e) { cout << e.what(); //item no. 4 not found } calc.clear(); cout << Profit::count(); //0
Что я уже пробовал:
я попробовал это сделать. он принадлежит к наследуемому классу. в котором мне нужно соединить заголовочный файл и файл .cpp с проектом.
там было бы два заголовочных файла и два файла .cpp, подключенных к peoject, которые содержат main.cpp
Rick York
Я не вижу причин, по которым требуются два заголовочных файла и два исходных файла. Класс Profit и его производные могут быть все в одном заголовке, а реализация всех классов может быть в одном файле .cpp, если вы хотите сделать это таким образом.
Тебе нужно постараться немного сильнее. Это очень простой материал C++, который задается, и вы должны быть в состоянии сделать все это, если вы вообще надеетесь прогрессировать. Если вы не надеетесь на прогресс, зачем кому - то еще тратить свое время?