|
@@ -2,12 +2,26 @@
|
|
|
|
|
|
## ООП: база.
|
|
|
- Напишите конструктор класса `Person` со следующими параметрами:
|
|
|
- `name`, `surname`, `fatherName`, `age`, `sex`, `salary`, `married`, сохраняемыми в полях объекта.
|
|
|
+ `name`, `surname`, `age`, `sex`, `salary`, `married`, сохраняемыми в полях объекта.
|
|
|
- Напишите конструктор класса `Person` с теми же параметрами, что и в предыдущей задаче. Поля должны хранится в *замыкании*. Для задания и чтения
|
|
|
- параметров напишите набор *геттеров и сеттеров*: `getName`, `setName`, `getSurname`, `setSurname`, `getFatherName`, `setFatherName`, `getAge`,
|
|
|
- `setAge`, `getSex`, `setSex`, `getSalary`, `setSalary`, `getMarried`, `setMarried`. Каждый из сеттер должен *валидировать*
|
|
|
- (проверять) данные. Если данные некорректны, данные внутри замыкания не изменяются.
|
|
|
+ параметров напишите набор *геттеров и сеттеров*: `getName`, `setName`, `getSurname`, `setSurname`, `getAge`,
|
|
|
+ `setAge`, `getSex`, `setSex`, `getSalary`, `setSalary`, `getMarried`, `setMarried`. Каждый из сеттер должен проверять данные.
|
|
|
+ Если данные некорректны, данные внутри замыкания не изменяются.
|
|
|
**Сеттер** всегда возвращает *текущее* значение переменной. См. [пример](http://gitlab.a-level.com.ua/gitgod/FrontendLectures/src/master/07ObjectsFunctionalStyle.md#--)
|
|
|
+- Добавьте возможность задавать родительский объект с помощью метода `setFather`
|
|
|
+- Добавьте к предыдущем заданию метод `getFatherName`, которое создает строку с корректным именем, добавляя суффикс "-ович" для мужчин и "-овна" для женщин
|
|
|
+```javascript
|
|
|
+var father = new Person("Ivan", "Petrov", 50, "male", 100500, true)
|
|
|
+var daughter = new Person("Maria", "Petrova", 25, "female", 500, false)
|
|
|
+
|
|
|
+daughter.setFather(father)
|
|
|
+daughter.getFatherName() // => "Ivanovna"
|
|
|
+```
|
|
|
+- Добавьте к предыдущем заданию метод `addChild`, который добавляет ребенка в массив в замыкании и возвращает количество детей. При добавлении проверяйте разницу в возрасте, она должна быть хотя бы лет 15.
|
|
|
+ Так же не позволяйте дублировать детей в массиве.
|
|
|
+```javascript
|
|
|
+father.addChild(daughter)
|
|
|
+```
|
|
|
|
|
|
## Замыкания
|
|
|
- Напишите функцию `makeCounter`, которая определяет переменную `counter` и возвращает другую функцию, увеличивающую `counter` каждый вызов и возвращающую её значение:
|
|
@@ -80,4 +94,6 @@ var someNumber = zeroPrompt("Введите число") // выз
|
|
|
|
|
|
Массив, который идет третьим параметром определяет, какие поля должны подменяться значением по умолчанию, а какие - задаваться в последствии (`undefined`).
|
|
|
|
|
|
+## Рекурсия
|
|
|
|
|
|
+Сделать [задание на синий пояс](http://gitlab.a-level.com.ua/gitgod/FrontendLectures/src/master/04AssociativeArraysHomeWork.md#----1), используя рекурсию.
|