Это то, без чего я не представляю программирование. Например, Питон без ООП как часы без каркаса: просто горсть шестерёнок.
Если бы знал заранее, то начинал бы изучение не с основ языка, а с основ ООП. Когда объясняют типы данных, можно сразу называть их тем, чем они являются: классами. Тогда интуитивно становится понятнее, как ими пользоваться.
Да, мне известно про функциональное и, скажем, императивное программирование, но они кажутся немного искусственными. А вот ООП вносит естественность в программирование.
Вокруг нас всё объекты. Мы не используем отдельные от объектов функции. Не задумываемся, в какой последовательности объект что-то меняет в себе. И, уж точно знаем, что «по щучьему велению» бывает только в сказках. В реальности никаких компиляторов в виде волшебных палочек не существует.
Мы интуитивно понимаем: любой объект цельный сам по себе и имеет свой собственный набор характеристик. Если из одного объекта сделать другой, то он унаследует качества первого. Мы не имеем доступа к «внутренностям» объектов, но у каждого есть свой интерфейс для взаимодействия. И, наконец, любимое: почти у всех объектов есть, например, лицо. Услышав это слово, мы сразу находим соответствующую часть. Или, если назвать какой-то функционал, мы не задумываясь представляем, как этот объект выполняет названное действие. И не важно, что у времени нет ног, чтобы бежать, или крыльев, чтобы лететь. Бежать может человек, животное или река. Название функции одно, действие идентичное, а сама функция либо переопределена, либо совсем другая.
Единственное, что искусственно в ООП это сами названия и формулировки. Очень сложно запомнить: инкапсуляция, полиморфизм... Нет ассоциации между словом и смыслом. Я понимаю, что за каждым странным словом скрывается простая идея. Придумать для неё адекватное название, вот где настоящее искусство.
где я приобрёл этот навык:
Добрый, добрый Python ООП - обучающий курс от Сергея Балакирева , Профессия Python-разработчик (начало) , "Поколение Python": курс для профессионалов (финал) , "Поколение Python": ООП (начало) , "Поколение Python": ООП (финал) , Django, потанцуем? (начало) , Профессия Python-разработчик (финал) , Django, потанцуем? (финал) ,
проекты в которых я этот навык применил:
Перевал , Моя визитка ,