update
This commit is contained in:
parent
962caebbb7
commit
87bf53d076
1825 changed files with 94929 additions and 0 deletions
67
1-js/8-oop/5-functional-inheritance/3-inherit-fridge/task.md
Normal file
67
1-js/8-oop/5-functional-inheritance/3-inherit-fridge/task.md
Normal file
|
@ -0,0 +1,67 @@
|
|||
# Унаследуйте холодильник
|
||||
|
||||
[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;
|
||||
};
|
||||
}
|
||||
```
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue