Передмова: Чому ця книга існує і як її читати
- Біль №1: Знання у вакуумі
- Біль №2: Застаріле лайно мамонта
- Біль №3: Сліпа віра у ШІ
- Для кого ця книга
- Як ми будемо вчитися: Problem-First
- Структура: Куди ми йдемо
- Подяка Early Access читачам
- 🔑 Висновки розділу
Частина I. Фундамент та Філософія
Розділ 1. Еволюція болю: Від GOTO до ООП
- Ера Хаосу: Spaghetti Code та GOTO (1960-ті)
- Ера Структурного програмування та його “Спадщина” (1970-ті)
- Ера Процедурного Пекла: Глобальні дані (1980-ті)
- Народження ООП: Клітини і Повідомлення
- Від цегли до байтів: Історія патернів (1977-1994)
- Протверезіння: GRASP і SOLID
- Велика Картина (The Big Picture)
- А як щодо Функціонального програмування?
- Сучасність: Як виглядають патерни зараз?
- 🔑 Висновки розділу
Розділ 2. За що вам платять гроші? Архітектурні драйвери та мистецтво Trade-offs
- ЩО проти ЯК: Функціональні та Нефункціональні вимоги
- Сучасна шістка драйверів
- Три вершники складності
- Мистецтво компромісу (Trade-offs)
- 🔑 Висновки розділу
Розділ 3. Парадокс ООП: Ви думаєте, що знаєте, — але ні
- Що таке парадигма?
- Швидкий огляд «сусідів» ООП
- Алан Кей та Біологічна метафора
- Messaging: Прохання замість Наказу
- Стан + Поведінка = Нероздільна Єдність
- Велика картина: де ми?
- 🔑 Висновки розділу
Розділ 4. Інкапсуляція: Два обличчя “чорної скриньки”
- Велика ілюзія безпеки
- Дві трактовки: Від Сімули до Вікіпедії
- Інкапсуляція як архітектурний принцип
- Навіщо це треба: Гайка, Жопа та Race Conditions
- Рішення: Справжній ООП-об’єкт
- 🔑 Висновки розділу
Розділ 5. Наслідування: коли світ б’є вас по потилиці
- Чому наслідування взагалі існує?
- Золоте правило: IS-A
- Реальний кейс: Медогляд і Квіти
- Множинне наслідування та Diamond Problem
- Правила виживання: скільки рівнів — норма?
- 🔑 Висновки розділу
Розділ 6. Поліморфізм: вбивця if-else та справжнє серце ООП
- Два типи поліморфізму: справжній і «цукровий»
- Еволюція болю: від «Бібліотеки» до «Дерева смерті»
- Рішення: Плагінна архітектура
- Duck Typing: поліморфізм без ієрархії
- Антипатерн: об’єкт без поведінки вбиває поліморфізм
- 🔑 Висновки розділу
Розділ 7. Абстракція: мистецтво ігнорувати деталі
- Що таке аналіз насправді?
- Абстракція є у всіх парадигмах
- Три принципи — один результат
- Антипатерн: занадто абстрактно
- Реальна історія: коли дизайн занадто точний
- Золоте правило: інтерфейс — завжди, балаган — ніколи
- 🔑 Висновки розділу та підсумок ООП-модуля
Розділ 8. UML: Навіщо малювати, якщо можна кодити?
- Як ми домовилися про мову
- Міф про «Магічну кнопку» та Rational Rose
- «Як роблять джуни» або Кнопка Зла
- Суть підходу: UML як «Детектор Гівнокоду»
- Тонкощі та Trade-offs: Інструменти і Пастка коду
- Чому ми беремо тільки дві діаграми з усіх можливих
- 🔑 Висновки розділу
Розділ 9. Анатомія класу та битва стрілок: Class Diagram
- Анатомія “Квадратика”
- Залежності: Хто кого смикає
- Битва Ромбиків: Агрегація vs Композиція
- Мультиплікатори: Скільки вішати в грамах?
- Генералізація і Чупа-чупси
- Нотатки (стикери) та Dependency Injection
- 🔑 Висновки розділу
Розділ 10. Життя об’єктів у рантаймі: Sequence Diagram
- Коли статика бреше
- Анатомія Sequence Diagram
- «Як роблять джуни»: Антипатерни зайвої деталізації
- Рішення: Хірургічний інструмент, а не малярний валик
- Гранд-фінал: Навіщо взагалі вчити UML у 2026 році?
- 🔑 Висновки розділу
Частина II. GRASP: Мистецтво розподілу відповідальності
Розділ 11. Вступ до GRASP та патерн Information Expert
- Що таке GRASP загалом?
- Анатомія об’єкта: Стан та Поведінка
- Шлях Експерта на прикладі чека
- Коли Експерт стає Монстром: Анемічна модель і кейс DirecTV
- Модерн-процедуралізм та Smart Data
- 🔑 Висновки розділу
Розділ 12. Creator (Творець): Хто дає життя об’єктам?
- Процедурна помилка початківців
- Правила Лармана: Хто має “ліцензію” на
new? - Велика битва: Creator проти Dependency Injection
- Конфлікт GRASP та SOLID: Жорстока реальність
- Еволюція складності: “Гітарний ефект”
- 🔑 Висновки розділу
Розділ 13. Controller (Контролер): Перша лінія оборони
- Що таке System Event (Системна подія)?
- Ізоляція багатопоточності: “Хвилеріз”
- Антипатерн: Роздутий контролер (Bloated Controller)
- Два різновиди контролерів (Facade vs Use-Case)
- 🔑 Висновки розділу