Что такое объектно-ориентированное программирование (ООП)

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

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

ООП - это всего лишь один из способов, как вы можете организовать программный код вашей программы. 

Как правило, когда мы начинаем писать какую-то программу, мы начинаем писать какие-то команды, на языке программирования:

Команда 1;
Команда 2;
Команда 3;
…
функция() {
    действия внутри функции;
}
вызов_функции();

(подробнее в видео)

Такой подход к написанию кода, когда у нас команды языка программирования идут одна за другой, сверху вниз по ходу написания программы. Такой подход к организации кода называется процедурный подход. 

Вся программа представляет собой некую процедуру, определенный набор команд, которые эта программа выполняет. 

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

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

  • Трудности с добавлением новых возможностей в программу и ее расширения. 

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

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

Такой способ есть и он называется ООП. Он стал достаточно популярен в последнее время.

ООП - это всего лишь способ, как мы можем упростить разработку больших и сложных программ. Т.е. в принципе, если нам не нужно писать какую-то большую программу, мы вполне можем обойтись и без ООП.

Идея ООП - любое действие или операцию в коде, должен выполнить какой-то объект. 

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

Объекты могут общаться между собой, взаимодействовать, передавать что-то между собой. 

Что же значит объект?

Лучше всего это можно посмотреть на компьютерной игре (см. видео выше). Большие сложные игры и программы, как правило, пишутся в объектно-ориентированном стиле. Все, что здесь имеется в этой программе является объектом.

Если взять какого-то персонажа, он может идти куда-то (влево или вправо), атаковать, принести, построить. Все, что этот персонаж может сделать - это называется методы. 

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

Благодаря такому подходу, мы можем намного проще разрабатывать программу. Человеческому уму намного проще работать с объектами т.к. наш мир устроен по объектно-ориентированному принципу. 

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

Мы программируем уже не просто каким-то набором команд, а программируем уже мысля какими-то объектами. Для того, чтобы расширить программу, нам достаточно добавить какой-то объект. 

Схематичный пример написания кода в ООП стиле:

Объект {
свойство: значение;
функция_метод() {
    действия_внутри_функции
}
}
объект->вызов_метода;

Это условный пример, в разных языках программирования это будет выглядеть по разному.

Подробное описание этого примера в видео.

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