en.javascript.info/1-js/8-oop/5-functional-inheritance/3-inherit-fridge/task.md
Ilya Kantor 87bf53d076 update
2014-11-16 01:40:20 +03:00

67 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Унаследуйте холодильник
[importance 4]
Создайте класс для холодильника `Fridge(power)`, наследующий от `Machine`, с приватным свойством `food` и методами `addFood(...)`, `getFood()`:
<ul>
<li>Приватное свойство `food` хранит массив еды.</li>
<li>Публичный метод `addFood(item)` добавляет в массив `food` новую еду, доступен вызов с несколькими аргументами `addFood(item1, item2...)` для добавления нескольких элементов сразу.</li>
<li>Если холодильник выключен, то добавить еду нельзя, будет ошибка.</li>
<li>Максимальное количество еды ограничено `power/100`, где `power` -- мощность холодильника, указывается в конструкторе. При попытке добавить больше -- будет ошибка</li>
<li>Публичный метод `getFood()` возвращает еду в виде массива, добавление или удаление элементов из которого не должно влиять на свойство `food` холодильника.</li>
</ul>
Код для проверки:
```js
var fridge = new Fridge(200);
fridge.addFood("котлета"); // ошибка, холодильник выключен
```
Ещё код для проверки:
```js
// создать холодильник мощностью 500 (не более 5 еды)
var fridge = new Fridge(500);
fridge.enable();
fridge.addFood("котлета");
fridge.addFood("сок", "зелень");
fridge.addFood("варенье", "пирог", "торт"); // ошибка, слишком много еды
```
Код использования холодильника без ошибок:
```js
var fridge = new Fridge(500);
fridge.enable();
fridge.addFood("котлета");
fridge.addFood("сок", "варенье");
var fridgeFood = fridge.getFood();
alert(fridgeFood); // котлета, сок, варенье
// добавление элементов не влияет на еду в холодильнике
fridgeFood.push("вилка", "ложка");
alert(fridge.getFood()); // внутри по-прежнему: котлета, сок, варенье
```
Исходный код класса `Machine`, от которого нужно наследовать:
```js
function Machine(power) {
this._power = power;
this._enabled = false;
var self = this;
this.enable = function() {
self._enabled = true;
};
this.disable = function() {
self._enabled = false;
};
}
```