14. ООП в JS - прототипи та принципи S.O.L.I.D.

Jetzt loslegen. Gratis!
oder registrieren mit Ihrer E-Mail-Adresse
14. ООП в JS - прототипи та принципи S.O.L.I.D. von Mind Map: 14. ООП в JS - прототипи та принципи S.O.L.I.D.

1. Частина де ми, де-юре, обговорюємо прототипне ООП...

1.1. ...а де-факто - прототипне успадкування

1.1.1. 'Числа, рядки, логічні змінні (true та false), а також значення null та undefined у JavaScript відносяться до простих типів даних. Решта — об'єкти. Числа, рядки та логічні змінні схожі на об'єкти тим, що мають методи, але, на відміну від об'єктів, вони незмінні. Об'єкти в JavaScript мають ключові колекції, що змінюються. В JavaScript об'єктами є масиви, функції, регулярні вирази, і, звичайно, об'єкти також є об'єктами.' Дуглас Крокфорд

1.1.2. Розглянемо Array

1.1.2.1. акцесори - не змінюють вихідний масив

1.1.2.1.1. Array.prototype.includes

1.1.2.1.2. Array.prototype.slice

1.1.2.2. мутатори - змінюють вихідний масив

1.1.2.2.1. Array.prototype.push

1.1.2.2.2. Array.prototype.pop

1.1.2.2.3. Array.prototype.splice

1.1.2.3. ітератори - застосовують функцію, передану як аргумент, на кожному елементі масиву для створення нового

1.1.2.3.1. forEach

1.1.2.3.2. map

1.1.2.3.3. filter

1.1.2.4. Трохи експериментів

1.1.3. Порівняння з класовим ООП

1.1.3.1. немає приватності

1.1.4. Q&A

2. Принципи S.O.L.I.D.

2.1. S - Single Responsibility Principle

2.1.1. Простими словами: 'Кожен клас повинен виконувати лише один обов’язок. Це не означає, що в нього має бути тільки один метод. Це означає, що всі методи класу мають бути сфокусовані на виконання одного спільного завдання. Якщо є методи, які не відповідають меті існування класу, їх треба винести за його межі.'

2.1.1.1. Візуалізація

2.2. O - Open/Close Principle

2.2.1. Простими словами: 'Класи мають бути відкриті до розширення, але закриті для змін.'

2.2.1.1. Візуалізація

2.3. L - Liskov Substitution Principle

2.3.1. Простими словами: 'Якщо у вас є функція, яка працює для базового типу, вона повинна працювати для похідного типу'

2.3.1.1. Візуалізація

2.4. I - Interface Segregation Principle

2.4.1. Простими словами: 'Багато спеціалізованих інтерфейсів краще за один універсальний'

2.4.1.1. Візуалізація

2.5. D - Dependency Inversion Principle

2.5.1. Простими словами: - високорівневі модулі не повинні залежати від низькорівневих. І ті, і ті мають залежати від абстракцій - абстракції не мають залежати від деталей реалізації. Деталі реалізації повинні залежати від абстракцій

2.5.1.1. Візуалізація

2.6. Q&A

3. Епілог

3.1. Екстра матеріали

3.1.1. https://www.telerik.com/blogs/understand-prototypes-prototypal-inheritance-javascript

3.1.2. https://www.digitalocean.com/community/tutorials/understanding-prototypes-and-inheritance-in-javascript

3.1.3. https://dou.ua/lenta/articles/solid-principles/

3.1.4. https://medium.com/@cramirez92/s-o-l-i-d-the-first-5-priciples-of-object-oriented-design-with-javascript-790f6ac9b9fa

3.1.5. https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898

3.1.6. https://dev.to/duncanmcardle/solid-principle-1-single-responsibility-javascript-4ide

3.2. Домашнє завдання

3.3. Тизер-трейлер наступного вебінару

3.3.1. Q&A