Browse Source

07 HW headers

me@helium 8 years ago
parent
commit
dba81f2730
1 changed files with 24 additions and 10 deletions
  1. 24 10
      07ObjectsFunctionalStyleHomeWork.md

+ 24 - 10
07ObjectsFunctionalStyleHomeWork.md

@@ -1,15 +1,20 @@
 # Домашнее задание: ООП в функциональном стиле.
 
 ## ООП: база.
-- Напишите конструктор класса `Person` со следующими параметрами:
+### Initialize
+Напишите конструктор класса `Person` со следующими параметрами:
    `name`, `surname`, `age`, `sex`, `salary`, `married`, сохраняемыми в полях объекта.
-- Напишите конструктор класса `Person` с теми же параметрами, что и в предыдущей задаче. Поля должны хранится в *замыкании*. Для задания и чтения
+### Closure getters and setters
+Напишите конструктор класса `Person` с теми же параметрами, что и в предыдущей задаче. Поля должны хранится в *замыкании*. Для задания и чтения
    параметров напишите набор *геттеров и сеттеров*: `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`, которое создает строку с отчеством, добавляя суффикс "-ович" для мужчин и "-овна" для женщин
+
+### setFather
+Добавьте возможность задавать родительский объект с помощью метода `setFather`
+### getFatherName
+Добавьте к предыдущем заданию метод `getFatherName`, которое создает строку с отчеством, добавляя суффикс "-ович" для мужчин и "-овна" для женщин
 
 ```javascript
 var father   = new Person("Ivan", "Petrov", 50, "male", 100500, true)
@@ -19,7 +24,8 @@ daughter.setFather(father)
 daughter.getFatherName() // => "Ivanovna"
 ```
 
-- Добавьте к предыдущем заданию метод `addChild`, который добавляет ребенка в массив в замыкании и возвращает количество детей. При добавлении проверяйте разницу в возрасте, она должна быть хотя бы лет 15.
+### addChild
+Добавьте к предыдущем заданию метод `addChild`, который добавляет ребенка в массив в замыкании и возвращает количество детей. При добавлении проверяйте разницу в возрасте, она должна быть хотя бы лет 15.
   Так же не позволяйте дублировать детей в массиве. 
 
 ```javascript
@@ -27,7 +33,8 @@ father.addChild(daughter)
 ```
 
 ## Замыкания
-- Напишите функцию `makeCounter`, которая определяет переменную `counter` и возвращает другую функцию, увеличивающую `counter` каждый вызов и возвращающую её значение:
+### makeCounter
+Напишите функцию `makeCounter`, которая определяет переменную `counter` и возвращает другую функцию, увеличивающую `counter` каждый вызов и возвращающую её значение:
 
 ```javascript
    var counter   = makeCounter()
@@ -42,7 +49,8 @@ father.addChild(daughter)
 
    counter() // 3
 ```
-- Напишите код, который будет делать обратный ежесекундный отсчёт в консоли, используя `console.log`. Используйте **Self Invoked Function** для создания замыкания и 
+### Final Countdown
+Напишите код, который будет делать обратный ежесекундный отсчёт в консоли, используя `console.log`. Используйте **Self Invoked Function** для создания замыкания и 
    `setTimeout` для задержки вывода. Результатом должно быть:
 
 ```javascript
@@ -54,7 +62,8 @@ father.addChild(daughter)
    поехали!
 ```
 
-- Напишите функцию `makeProfileTimer`, которая служит для замера времени выполнения другого кода и работает следующим образом:
+### makeProfileTimer
+Напишите функцию `makeProfileTimer`, которая служит для замера времени выполнения другого кода и работает следующим образом:
 
 ```javascript 
    var timer = makeProfileTimer()
@@ -64,7 +73,8 @@ father.addChild(daughter)
 ```
 Используйте `performance.now()` 
 
-- Напишите функцию `getSaver`, которая:
+### getSaver
+Напишите функцию `getSaver`, которая:
 
 ```javascript
     var saver = getSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random 
@@ -79,7 +89,8 @@ father.addChild(daughter)
 0. Навсегда сохраняет результат функции. Это актуально, например, для `Math.random`.
 1. Действует *лениво*, то есть вызывает `Math.random` только тогда, когда результат *действительно* нужен. Если же по каким-то причинам значение не понадобится, то `Math.random` даже не будет вызыван
 
-- Изучите встроенную функцию `bind`, и сделайте свою версию, которая позволит определить "значение по умолчанию" не только для первых параметров, но для любых других, например для *степени* в Math.pow:
+### myBind
+Изучите встроенную функцию `bind`, и сделайте свою версию, которая позволит определить "значение по умолчанию" не только для первых параметров, но для любых других, например для *степени* в Math.pow:
 
 ```javascript
 var pow5 = myBind(Math.pow, Math, [undefined, 5]) // первый параметр - функция для биндинга значений по умолчанию, 
@@ -99,4 +110,7 @@ var someNumber = zeroPrompt("Введите число")              // выз
 
 ## Рекурсия
 
+### Sum
+Напишите функцию, который будет считать сумму арифметической прогрессии рекурсивно.
+### HTML Tree
 Сделать [задание на синий пояс](http://gitlab.a-level.com.ua/gitgod/FrontendLectures/src/master/04AssociativeArraysHomeWork.md#----1), используя рекурсию, без ограничения вложенности.