Skip to content

Commit b1a447f

Browse files
coursarfreepad
authored andcommitted
feat(containers)
1 parent 7591f3d commit b1a447f

File tree

2 files changed

+80
-1
lines changed

2 files changed

+80
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
1. [x] [Прототипы, конструкторы, классы и наследование](oop/)
1818
1. [x] [Object, Reflection и Proxy](advanced/)
1919
1. [x] [Регулярные выражения](regex/)
20-
1. [ ] [Контейнеры](containers/)
20+
1. [x] [Контейнеры](containers/)
2121
1. [ ] [ArrayBuffer](arraybuffer/)
2222
1. [ ] [Promises, async/await, timers & event loop](async/)
2323
1. [ ] [Символы, итераторы, генераторы](symbols-iterators-generators/)

containers/README.md

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Домашнее задание к лекции «Контейнеры»
2+
3+
**Важно**: каждая задача выполняется в виде отдельного проекта с собственным GitHub репозиторием.
4+
5+
**Важно**: код должен проходить ESLint без ошибок.
6+
7+
**Важно**: тесты должны обеспечивать 100% покрытие тестируемых функций по строкам.
8+
9+
**Важно**: решения должны быть построены на базе [шаблона Webpack](/ci-template).
10+
11+
В личном кабинете на сайте [netology.ru](http://netology.ru/) в поле комментария к домашней работе вставьте ссылки на ваш GitHub-проекты.
12+
13+
---
14+
15+
## `Set`
16+
17+
### Легенда
18+
19+
Игрок может выбирать персонажей в команду на конкретный раунд исходя из их текущего состояния, уровня и стратегии игры. Нам необходимо не позволять ему добавлять в команду несколько раз одного и того же персонажа.
20+
21+
### Описание
22+
23+
Создайте класс `Team` с методами `add`, `addAll` и `toArray`. Класс должен хранить данные о персонажах команды в поле типа `Set`:
24+
```javascript
25+
class Team {
26+
constructor() {
27+
this.members = new Set();
28+
}
29+
...
30+
}
31+
```
32+
33+
Метод `add` должен добавлять выбранного персонажа в команду (объект класса `Character`). При этом такой объект уже существует в команде - дублирования происходить не должно, должна генерироваться ошибка.
34+
35+
Метод `addAll` должен иметь возможность добавлять произвольное количество персонажей (используйте rest-parameters) в команду. При этом задвоения быть не должно, ошибка генерироваться **не должна**.
36+
37+
Метод `toArray` должен производить конвертацию `Set` в массив.
38+
39+
Не забудьте написать unit-тесты, которые обеспечивают 100% покрытие функций и классов, которые вы тестируете.
40+
41+
---
42+
43+
## Map
44+
45+
### Легенда
46+
47+
Вы решили упорядочить работу с ошибками в своём приложении, а именно ввести цетрализованно числовой код ошибки и её описание. И при генерации любых ошибок в коде приложения брать их из централизованного хранилища.
48+
49+
### Описание
50+
51+
Создайте свой класс `ErrorRepository` внутри которого храните `Map`, в котором ключ - это код ошибки (число), а значение - текстовое описание (человекочитаемое).
52+
53+
Реализуйте метод `translate(code)`, позволяющий по коду получить текст ошибки, а в случае отсутствия подобного кода возвращать строку `'Unknown error'`.
54+
55+
Не забудьте написать unit-тесты, которые обеспечивают 100% покрытие функций и классов, которые вы тестируете.
56+
57+
----
58+
59+
## Map (задача со звёздочкой)
60+
61+
**Важно**: данная задача не является обязательной
62+
63+
### Легенда
64+
65+
Давать возможность пользователю кастомизировать внешний вид приложения - достаточно хорошая идея. Поэтому вы решили также реализовать поддержку этой функциональности в своей игре.
66+
67+
### Описание
68+
69+
У вас есть default'ные настройки, хранящиеся в `Map`'е:
70+
1. `'theme': 'dark'` (другие возможные значения - `'light'`, `'gray'`);
71+
1. `'music': 'trance'` (другие возможные значения - `'pop'`, `'rock'`, `'chillout'`, `'off'`);
72+
1. `'difficulty': 'easy'` (другие возможные значения - `'normal'`, `'hard'`, `'nightmare'`).
73+
74+
Напишите класс `Settings`, который содержит:
75+
1. Набор настроек по умолчанию - хранить в `Map`'е;
76+
1. Набор пользовательских настроек (пользователь может установить конкретную настройку по имени и значению) - хранить в `Map`'е нужно только те настройки, которые пользователь установил;
77+
1. Get'тер `settings`, который возвращает `Map`, полученный путём наложения пользовательских настроек, на default'ные.
78+
79+
Не забудьте написать unit-тесты, которые обеспечивают 100% покрытие функций и классов, которые вы тестируете.

0 commit comments

Comments
 (0)