Задать вопрос

Как научиться декомпозиции в ООП?

Застрял в процедурном мышлении. Мой максимум погружения в мир ООП - Laravel, но там все сделано за меня и максимум, что я лепил - корявые сервисные классы.
Решил, что так не пойдет и прицелился освоить ООП. Одним из камней преткновения стала декомпозиция. Условные ChatGPT и Claude мне накидывает примеры этой самой декомпозции, но я никак не врубаюсь, зачем так жестко нарезать...

Пришел к выводу, что нужна литературы на этот счет.
Мой инглиш не позволяет читать книги, только база.

Соответственно, два вопроса - есть ли литература? И если нет - реально ли поднять тему самостоятельно и каким макаром?
  • Вопрос задан
  • 260 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
phaggi
@phaggi
лужу, паяю, ЭВМы починяю
Я когда-то так же застрял. Не понимал, как же выделять эти самые классы? И зачем?
Долго тупил в эти «авто» и наследники «грузовик» и «легковушка», с колесиками и баками.
Или users с managers и clients.
Всё это было понятно, пока не пытался сам что-то осмыслить из реальной жизни.

Мне помогли две вещи:
1. Фраза учителя типа «класс - это заголовок таблицы; строки - экземпляры класса; имена колонок - имена атрибутов класса». Это ОЧЕНЬ ГРУБО. И многие поспорят и будут правы. И для понимания идеи учителя надо понимать базы данных или хотя бы excel и access (я как раз тогда только что это дело изучил). Но это меня сдвинуло с мертвой точки.
2. Я долго строил всякие «парсеры» из лапши и перегруженных дурно пахнущих функций. Мне попалась на Хабре переводная статья (точнее, не официальная документация) про selenium и раскладку его в стиле ООП. Это не прям образец для подражания (там есть пара деталей, которые мне очень не понравились), но когда я свой код рефакторил в соответствии с рекомендациями этой статьи (это было долго, больно, но в итоге получилось гораздо красивее исходной чудовищной лапши), я многое понял.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Понятие "декомпозиция" бывает слишком абстрактным для понимания начинающими.
Поэтому, я порекомендовал бы изучить принципы SOLID. Вся их сущность как раз и направлена на понимание декомпозиции.

Есть куча книжек, роликов на ютубчике и т.д.
Но можно начать как раз с ChatGPT.
Задайте ему вот такую задачку:

Объясни принципы SOLID. Используй примеры на PHP. Объясняй как десятилетнему ребёнку


Не стесняйтесь упоминания ребенка в сложных вопросах. Он тогда очень красочно и очень понятно описывает. Такое лучше входит в мозг.
Ответ написан
Комментировать
GavriKos
@GavriKos
Опыт и практика. Только так. Тем более разный уровень декомпозиции бывает для разных ситуаций
Ответ написан
Комментировать
musaev_haybulla
@musaev_haybulla Автор вопроса
Всех ответивших благодарю за советы и ваше время!
В данный момент пока нащупал способ через нейросети. Пока лучшим для себя выделил Claude, он и объясняет вкусно и ООП у него крутейший. Попросил его дать мне задание, я его пишу, как умею, он его исправляет через серию наводящих вопросов и ставит под сомнение мою архитектуру. Так шаг за шагом начинаю врубаться, что и зачем.

Однако, сильно удручает, что у Claude быстро заканчивается токен-лимит чата. Очень надеюсь, что разработчики скоро выпустят Claude 4 с большими лимитами или сделает тарифный план для таких фанатов ИИ, как я, с каким-нибудь околобезлимитным тарифным планом.
Ответ написан
Комментировать
igolets
@igolets
Программист C#, MSSQL
Могу предложить два пути (их в идеале можно/нужно) совместить:
  1. Правильные книжки ("библия" по теме — книжка Гради Буча https://www.academia.edu/36807105/OBJECT_ORIENTED_..., ещё ссылка https://github.com/gowthamanniit/Java/blob/master/...)
  2. Найти работу, где это можно применить. В идеале — в немаленькой конторе, где есть практика code review, чтобы получать регулярную обратную связь по своей работе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы