• Как перенять объектно-ориентированное мышление?

    @T86
    База
    GRASP Крэг Ларман - Применение UML 2.0 и шаблонов проектирования. 3-е издание
    Бретт Маклафлин - Объектно-ориентированный анализ и проектирование
    SOLID в PHP https://www.youtube.com/playlist?list=PLoonZ8wII66...
    Мартин Фаулер - Рефакторинг. Улучшение существующего кода
    Р. Мартин - Чистый код. Создание, анализ и рефакторинг - 2013
    Стив Макконнелл - Совершенный код, 2-е издание

    Продвинутый
    GoF Эрих Гамма, Ричард Хелм - Приемы объектно-ориентированного проектирования. Паттерны проектирования
    Martin Fowler - Patterns of Enterprise Application Architecture
    Андрей Бибичев - Domain-Driven Design
    Карлос Буэнос-Винос - Domain-Driven Design in PHP – 2016
    Руководство Microsoft по проектированию архитектуры приложения
    Вон Вернон - Реализация методов предметно-ориентированного проектирования
    Ответ написан
    Комментировать
  • Как перенять объектно-ориентированное мышление?

    trevoga_su
    @trevoga_su
    книга - гради буча
    по факту изучения - посмотри на реальный мир. все является объектом. один объект можно засунуть в другой, связать их как-то, существуют интерфейсы для взаимодействия объектов
    все элементарно
    Ответ написан
    Комментировать
  • Как перенять объектно-ориентированное мышление?

    @chaetal
    разработчик ПО и преподаватель
    Попробуйте попрограммировать на Smalltalk. Не пишу "изучить" — изучать Smalltalk лучше на практике, желательно на более-менее реальном проекте.
    На сегодняшний, пожалуй, самая "продвинутая" реализация — Pharo

    Первые вопросы можно задать в Russian Smalltalk User Group
    Ответ написан
    3 комментария
  • Как перенять объектно-ориентированное мышление?

    andrievski88
    @andrievski88
    SEO + маркетинг + веб программаривание.
    Здравствуйте, я сам вот два месяца назад начал изучать PHP с самого нуля, уже кое-что прочел и узнал и про ООП. Посмотрите вот этот курс, может чуточку станет понятнее...
    https://www.youtube.com/playlist?list=PLSdH7dYnlGY...
    И главное не останавливайтесь ни перед какими трудностями, а воспринимайте их как вызов.
    Ответ написан
    1 комментарий
  • Как перенять объектно-ориентированное мышление?

    @Kennyx
    Поиграй в JavaRush
    Достаточно доступно объясняется на примере игры. Заодно можешь познать Java, если будет желание
    Ответ написан
    Комментировать
  • Как перенять объектно-ориентированное мышление?

    AmberLEX
    @AmberLEX
    php/web-developer
    Дмитрий Елисеев
    www.elisdn.ru/oop-week
    Очень расжевывает и доступно объясняет.
    Есть много бесплатных видео, чтоб понять уровень.
    Это не очередной говно-курс как срубить бабок на перессказе документации.
    Посмотрите посты в блоге. Я правда курсы не проходил, но видео-материалы смотрел.
    Ответ написан
    Комментировать
  • Как перенять объектно-ориентированное мышление?

    @zhainar
    Гуглю за вас
    зандстра объекты шаблоны и методики программирования
    Ответ написан
    Комментировать
  • Как перенять объектно-ориентированное мышление?

    @evgeniy_lm
    Психологи "объектное мышление" это называют абстрактным мышлением. Абстрактное мышление отличает человека разумного от других живых существ. ООП придуман для упрощения написания кода, программист описывает задачу в образах (объектах) т.е как есть. Короче, если программист человек то ему переходить ни куда не надо, если не человек то программы он писать неспособен
    Ответ написан
  • Как перенять объектно-ориентированное мышление?

    Rou1997
    @Rou1997
    Подскажите, какой проект начать писать (гостевая, блог), или может начать изучать фреймворк.
    И так и так можно, а в идеале - даже нужно, во фреймворке вы больше научитесь использовать ООП, а в своем проекте - проектировать ООП, если будете думать над тем, как каждую из задач оптимизировать с помощью ООП, а также набираться опыта из фреймворков.

    Или может подскажите книгу/сайт где пошагово в ооп написан какой-то проект, чтобы быстрее пришло понимание.
    Никто бесплатно не будет такой разбор делать, а большинство и не может, поэтому сами.
    Ответ написан
    Комментировать
  • Как перенять объектно-ориентированное мышление?

    customtema
    @customtema
    arint.ru
    Честно? Всего две книжки. Хотя бы по диагонали.

    • "Рефакторинг" Мартин Фаулер
    • "Архитектура корпоративных приложений" Мартин Фаулер


    Расширение сознания гарантированно.
    Ответ написан
    1 комментарий
  • Как перенять объектно-ориентированное мышление?

    tzlom
    @tzlom
    Очень просто.
    Для начала - признайтесь себе что процедурное программирование у вас тоже страдает (иначе бы у вас не было этого вопроса), это не страшно, но с этим тоже надо что-то решать.
    Берёте любой свой процедурный проект (лучше маленький чтобы не застрять в рутине).
    Шаг первый - всё есть функция, поэтому весь код вне функций кладёте в функции, итого у вас получается что вне функций идёт только вызов main() (или как вы её назовёте)
    Второй шаг - функции работают только с тем, что в них передали. Удаляете глобальные переменные.
    Появляется проблема глубокой вложености, т.е. у вас внутри вызова А вызывается Б а в ней В которая хочет переменную из области видимости А, и таких случаев много. Тащить в Б все эти переменные - грустно и печально, поэтому делаем хитрость, каждая функция первым аргументом получает массив неких значений. Правило одно - функции не меняют имена и количество переменных в массиве, только значения.
    Третий шаг - функции должны быть короткими, выносите повторяющийся код в отдельные функции, если в функции используется много переменных - это повод разбить её на несколько меньших.
    Четвёртый шаг - вы уже пишете на ООП. Если 3 шага правильно сделаны, то осталось только оформить это дело согласно новым правилам - первый аргумент-массив это члены класса, соответственно функции использующие одинаковый массив - методы этого класса, прийдётся разобраться с доступом к полям и отдельными зависимостями, но это уже будет просто и понятно когда ты до этого доберёшься.
    Ответ написан
    4 комментария
  • Как перенять объектно-ориентированное мышление?

    GTRxShock
    @GTRxShock
    Full-stack developer (Symfony, Angular)
    Полистайте на досуге HeadFirst Паттерны проектирования:
    www.combook.ru/product/10741424

    + как писали выше, Мэтт Зандстра PНР: объекты, шаблоны и методики программирования:
    www.combook.ru/product/11140344

    p.s. www.phptherightway.com вот еще неплохой ориентир
    Ответ написан
    Комментировать
  • Как перенять объектно-ориентированное мышление?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Т.е. сложно понимаю, что "засунуть" в один объект, что в другой, что должно быть статическим методом, что приватным и тд.


    Давайте попробуем строить аналогии. Представьте что ваше приложение состоит исключительно из глобальных переменных и функций, которые с ними работают. Я думаю это не сложно представить. В каждый момент времени вам доступна любая переменная.

    То есть по сути наше приложение - один объект. У него внутри вообще все. У этого объекта есть один метод - обработай запрос. Когда внешний мир его вызывает, меняются значения каких-то переменных, вызываются какие-то внутренние "приватные" для внешнего мира функции, и делается работа.

    Теперь задумаемся о декомпозиции всего этого хаоса. Мы находим какую-то задачу, которую выполняет наш код (например какую функцию вызвать для обработки каждого конкретного запроса) и выносим это в отдельный объект. Отправка email-ов - отдельный объект. Весь SQL зашиваем в отдельный объект. Соединение с базой - объект. Пользователи - объекты. Все - объекты.

    И главное, у каждого объекта есть своя область ответственности. UNIX way. Каждый объект делает что-то одно и делает это хорошо. Бывает так что ну... нужно сделать так что бы один объект делал две вещи. НЕ вопрос, мы можем его попросить сделать что-то сложное, а он будет как хороший менеджер тупо делегировать работу другим объектом. То есть он и сложную штуку сделает, и сам не будет знать как она делается.

    А все безхозные функции, которые не пренадлежат никаким объектам (например функции порождающие объекты) можно вынести в статические методы. Главное что бы статичесих переменных у нас небыло (ибо это те же глобальные переменные). И поменьше публичного ибо черт его знает что эти разработчики будут использовать. Причем "те разработчики" это вы завтра.

    Вообщем писав всё время на процедурке, сложно перейти на ооп.


    Просто не думайте что это что-то "принципиально другое". Это та же самая процедурка, просто благодаря классам и объектам, вы можете порезать систему на маленькие модули. Данные будут лежать рядом с процедурами и у вас будет больше контроля за происходящим.

    Вы можете начать погружаться в ООП с того, что разобраться "почему глобальные переменные это плохо", почему "состояние порождает сложность" и что такое эта "сложность" (многие почему-то думают что сложность выражается в написании кода а не в его чтении или поддержке), почему "изоляция" (и как следствие инкапсуляция) - это хорошо. Как это все соотносится с декомпозицией. Что такое "ответственность", что такое зависимости, связанности

    Подскажите, какой проект начать писать (гостевая, блог), или может начать изучать фреймворк.


    Фреймворки универсальны, а значит чистого ООП там быть не может. Во всяком случае нет ни одного фреймворка на котором стоит учиться ООП.

    Есть хорошие упражнения на развитие понимания объектно-ориентированного проектирования. Например вот: https://habrahabr.ru/post/206802/

    Сразу хочу отметить что это крайности. Упражнения же. Они должны ограничивать вас что бы заставлять думать и задавать правильные вопросы.

    Или может подскажите книгу/сайт где пошагово в ооп написан какой-то проект, чтобы быстрее пришло понимание.


    Так вы научитесь делать один конкретный проект а на втором вы уже проиграете. Так дела не делаются. Надо разобраться с причинами появления идеи ООП. Ну то есть что было до. Можно еще с функциональным программированием попробовать разобраться. В PHP оно слабо применимо, но основные идеи очень тесно переплетаются с ООП и познав немного функциональщины ваше ООП будет лучше. Да и если про ООП вы можете найти много булшита, про функциональщину врут мало.
    Ответ написан
    3 комментария