Hamburger.SIZE_BIG = "BIG";
Hamburger.SIZE_SMALL = "SMALL";
Hamburger.STUFFING_CHEESE = "CHEESE";
Hamburger.STUFFING_SALAD = "SALAD";
Hamburger.STUFFING_POTATOES = "POTATOES";
Hamburger.TOPPING_SAUCE = "SAUCE";
Hamburger.TOPPING_MAYO = "MAYO";
function Hamburger(size, stuffing) {
this.topping_sause = 0;
this.topping_mayo = 0;
this.calories = 0;
this.price = 0;
if (size != Hamburger.SIZE_BIG && size != Hamburger.SIZE_SMALL) {
throw new HamburgerError( size + " неправильный размер" );
}
if (stuffing != Hamburger.STUFFING_CHEESE && stuffing != Hamburger.STUFFING_SALAD && stuffing != Hamburger.STUFFING_POTATOES) {
throw new HamburgerError( stuffing + " неправильная начинка" );
}
this.addTopping = function (topping) {
if (topping == Hamburger.TOPPING_SAUCE) ++this.topping_sause;
if (topping == Hamburger.TOPPING_MAYO) ++this.topping_mayo;
if (this.topping_sause >= 2) throw new HamburgerError("Приправа добавлена более 1 раза");
if (this.topping_mayo >= 2) throw new HamburgerError("майонезом полито более 1 раза");
if (topping != Hamburger.TOPPING_SAUCE && topping != Hamburger.TOPPING_MAYO) {
throw new HamburgerError( topping + " неизвестная добавка");
}
}
this.calculateCalories = function () {
if (size == Hamburger.SIZE_BIG) this.calories += 40;
if (size == Hamburger.SIZE_SMALL) this.calories += 20;
if (stuffing == Hamburger.STUFFING_CHEESE) this.calories += 20;
if (stuffing == Hamburger.STUFFING_SALAD) this.calories += 5;
if (stuffing == Hamburger.STUFFING_POTATOES) this.calories += 10;
if (this.topping_sause == 1) this.calories += 0; // Я так думаю хоть и 0, все равно стоит добавить,
if (this.topping_mayo == 1) this.calories += 5; //т.к. если в будущем захотим изменить значение, то просто изменим 0
var x = this.calories; //на что-то, а не будем печатать новую строку.
this.calories = 0;
return x;
}
this.calculatePrice = function () {
if (size == Hamburger.SIZE_BIG) this.price += 100;
if (size == Hamburger.SIZE_SMALL) this.price += 50;
if (stuffing == Hamburger.STUFFING_CHEESE) this.price += 10;
if (stuffing == Hamburger.STUFFING_SALAD) this.price += 20;
if (stuffing == Hamburger.STUFFING_POTATOES) this.price += 15;
if (this.topping_sause == 1) this.price += 15;
if (this.topping_mayo == 1) this.price += 20;
var x = this.price;
this.price = 0;
return x;
}
}
// маленький гамбургер с начинкой из сыра
var hamburger = new Hamburger(Hamburger.SIZE_SMALL, Hamburger.STUFFING_CHEESE);
// добавка из майонеза
hamburger.addTopping(Hamburger.TOPPING_MAYO);
// спросим сколько там калорий
console.log("Calories: %f", hamburger.calculateCalories());
// сколько стоит
console.log("Price: %f", hamburger.calculatePrice());
// я тут передумал и решил добавить еще приправу
hamburger.addTopping(Hamburger.TOPPING_SAUCE);
// А сколько теперь стоит?
console.log("Price with sauce: %f", hamburger.calculatePrice());