Python

Как понять объектно-ориентированное программирование?

Расскажите исходя из своего опыта как вы обучались этому разделу python
Влад Гаранин
Влад Гаранин
1 458
Создаешь класс с методами и свойствами. У экземпляров класса методам и свойствам можно задавать свои параметры и менять методы экземпляров класса по своему усмотрению. Считается что это удобно, но в Питоне ООП вещь не обязательная. Обязательная она в Джаве.
Вот тут объектно-оринтировано искал радиус окружности в треугольнике по координатам точек треугольника
Преимущество ООП в данном случае в том что можно создавать множество экземпляров треугольников со своими собственными параметрами. А всё вычисления находятся в родительском классе. Работу функции вычисления через дочерние классы можно поменять для конкретного экземпляра, что не затронет другие экземпляры класса
Алмат Абдрахманов
Алмат Абдрахманов
98 424
Лучший ответ
ООП - это всего лишь надстройка над процедурным программированием, удешевляющая написание кода.

Разбиваем программу на независимые компоненты, каждый из которых имеет законченный замкнутый функционал. Для взаимодействия компонентов между собой в каждом компоненте создаём интерфейс: набор подпрограмм, которые можно вызывать из других компонентов.

Называем чертёж, по которому создаётся компонент, классом, сам компонент - объектом (экземпляром класса), а подпрограммы переименуем в методы и вместо процедурного "метод(объект, параметры)" будем записывать вызов в виде: "объект.метод(параметры)".

Смысл ООП в том, что каждый объект - независимый от остального кода программы "чёрный ящик", содержимое которого недоступно другим объектам. Мы можем как угодно менять код класса, но пока интерфейс остаётся неизменным, эти изменения никак не затрагивают код других классов.

Вместо сложного монолита с непредсказуемым связями между разными частями кода получаем код, собранный из независящих друг от друга простых кубиков - классов и объектов.
Дмитрий Ерёмин
Дмитрий Ерёмин
59 710
Ion Cristea То есть классы в основном применяются в проектах с несколькими модулями для унификации хранимых данных и методов, ещё и упрощая при это взаимодействие между разными разрабами, я прав?

Если это «однофайловый» проект, то городить класс в большинстве случаев нецелесообразно?
Евгений Капитонец Странно, что большинство IT-вакансий требуют ООП чуть ли не как основной навык, при этом многие опытные программисты говорят, что ООП на практике - это 5-10 % всего кода
лучше прочитать книгу Г.Буч "Объектно-ориентированный анализ и проектирование, с примерами приложений"
Андрей Аржилов
Андрей Аржилов
86 802
Влад Гаранин Уже читал раза 3, но почему-то этот раздел мне совсем не понятен
это не твое
A.
Alish ...
84 039
Никак не понять его, берешь создаещь описание обьекта и потом по нему генерируешь объект и действуешь согласно заданного плана.
Смотри видео на ютюбе и читай книги.
Rustam Bulatov
Rustam Bulatov
661
Влад Гаранин В том то и проблема, то что там объясняют непонятно как, может у вас есть какой то видео ряд по которому вы обучались?
не парься. очень многие его не понимают, это норма. В питоне он используется в командной работе, в каких-то проектах. если будешь заниматься созданием веб приложений, поймешь на практике что к чему