Вы хозяин небольшого кафе быстрого питания. Ваше меню состоит из следующих позиций:
- маленький (+50 тугриков, +20 калорий)
- большой (+100 тугриков, +40 калорий)
Гамбургер может быть с одним из нескольких видов начинок (обязательно):
- сыром (+10 тугриков, +20 калорий)
- салатом (+20 тугриков, +5 калорий)
- картофелем (+15 тугриков, +10 калорий)
- Цезарь (+100 тугриков, +20 калорий)
- Оливье (+50 тугриков, +80 калорий)
- Кола (+50 тугриков, +40 калорий)
- Кофе (+80 тугриков, +20 калорий)
Необходимо написать программу, для расчета стоимости и/или каллорийности заказа посетителя. В заказе могут быть как одна, так и несколько позиций разных видов. (Например заказ может состоять из 2х гамбургеров(один большой, другой маленький), салата Оливье(150г) и кофе). В заказ можно как добавлять позиции, так и удалять из него лишнее (при условии, что оно там есть). После оплаты заказа он должен стать не редактируемым - ничего добавить или удалить из него больше нельзя.
Комментарии
Задачу необходимо решить используя ООП и ES5/ES6. Крайне желательно использование наследования и композиции. Типы начинок, размеры надо сделать константами. Никаких магических строк не должно быть.
/**
* Класс, объекты которого описывают параметры гамбургера.
*
* @constructor
* @param size Размер
* @param stuffing Начинка
*/
function Hamburger(size, stuffing) { ... }
/* Размеры, виды начинок и добавок */
Hamburger.SIZE_SMALL = ...
Hamburger.SIZE_LARGE = ...
Hamburger.STUFFING_CHEESE = ...
Hamburger.STUFFING_SALAD = ...
Hamburger.STUFFING_POTATO = ...
/**
* Узнать размер гамбургера
*/
Hamburger.prototype.getSize = function () ...
/**
* Узнать начинку гамбургера
*/
Hamburger.prototype.getStuffing = function () ...
/**
* Узнать цену гамбургера
* @return {Number} Цена в тугриках
*/
Hamburger.prototype.calculatePrice = function () ...
/**
* Узнать калорийность
* @return {Number} Калорийность в калориях
*/
Hamburger.prototype.calculateCalories = function () ...