Найти в Дзене
Войти в IT

Крадущийся пекарь, затаившийся торт. Что такое объектно-ориентированное программирование?

На сегодняшний день, существует несколько разных «школ» программирования. Их ещё называют методологиями, или парадигмами. Принято выделять императивное программирование, функциональное программирование, логическое программирование, структурное программирование, декларативное программирование, и наконец объектно-ориентированное программирование. Каждой парадигме соответствуют определённые языки программирования, и различные шаблоны разработки. Это можно представить как школы 🈯️ восточных боевых искусств. Каждая школа (парадигма) имеет свои плюсы и минусы, области применения и уникальный стиль. У каждой школы (парадигмы) есть свои известные мастера, свои сторонники и противники. Что-то из вышеуказанных парадигм имеет широкое и повсеместное распространение, а что-то только специфические области применения. Тем не менее, все парадигмы так или иначе используются в современных информационных технологиях. Сегодня мы поговорим про объектно-ориентированную парадигму программирования. Кто при
Оглавление

На сегодняшний день, существует несколько разных «школ» программирования. Их ещё называют методологиями, или парадигмами. Принято выделять императивное программирование, функциональное программирование, логическое программирование, структурное программирование, декларативное программирование, и наконец объектно-ориентированное программирование. Каждой парадигме соответствуют определённые языки программирования, и различные шаблоны разработки.

Это можно представить как школы 🈯️ восточных боевых искусств. Каждая школа (парадигма) имеет свои плюсы и минусы, области применения и уникальный стиль. У каждой школы (парадигмы) есть свои известные мастера, свои сторонники и противники.

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

Кто придумал объектно-ориентированное программирование?

Объектно-ориентированное программирование придумал американский гранд-мастер, сёдай-сокэ, мэйдзин, лауреат премии Тьюринга 2003 года, и просто хороший человек — Алан Кёртис Кэй. Помимо изобретения ООП, он ещё успел поработать на Xerox, и разработать язык программирования Smalltalk.

Созданные им технологии в последствии стала использовать компания Apple — например в устройствах Lisa / Mac. В общем, его определённо можно назвать сенсеем-основателем школы ООП, крутым футурологом и со-архитектором современного мира IT. К слову сказать, сейчас ему уже 82 года.

В любой крупной компании, любой современной технологии, есть публичные и непубличные люди. Так сказать, лица проекта и души проекта. И если имя Стива Джобса знает каждый второй, то имя Алана Кёртиса не столь известно. Тем не менее, его вклад в развитие существующих технологий трудно переоценить. Можно сказать, что это широко известный в узких кругах человек. В общем, кому интересно - можете почитать про него факультативно.

Философия объектно-ориентированного программирования

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

Давай на примере. Допустим, у нас есть небольшая фабрика тортов 🍰. Внутри фабрики есть печь, миксер, холодильник, а так же пекари, упаковщики и грузчики. Печь, миксер, холодильник, упаковщик, грузчик и пекарь — всё это объекты. Каждый из них выполняет определённые действия. Все объекты взаимодействуют друг с другом. Объект «миксер» на входе получает муку, воду и дрожжи, а на выходе возвращает тесто. Объект «холодильник» на входе получает тёплые продукты, а на выходе возвращает грузчику их с температурой +5 градусов.

При этом, с точки зрения внешнего наблюдателя, каждый из объектов имеет интерфейс (кнопки и команды), и явно определённую функцию которую он выполняет. Но набор «внутренней логики» остаётся скрыт от внешнего наблюдателя, и не важен этому наблюдателю. Пекарь не знает как устроен миксер. Грузчик не является специалистом по холодильникам. И соответственно, печь явно не думает о том, что находится внутри грузчика. Но! Каждый из объектов имеет возможность взаимодействовать с другими участниками (активно или пассивно). И взаимодействует.

Программа как набор объектов

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

Архитектура ООП разбивает большую и сложную задачу на части, превращая производственный процесс в фабрику тортов. На которой разные специалисты + техника производят из исходного сырья красивый торт. Такие дела. 😉

ООП как зеркало реального мира

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

Практически все современные системы используют ООП. Интернет-сайты, Windows, Linux, Android, iOS, и так далее. Всё это запрограммировано в парадигме объектов. Несложно сделать вывод, что при таком тотальном распространении, парадигма ООП является наиболее коммерчески востребованной.

Языки C++, CSharp, Java, PHP, JavaScript, Python и другие из языков высокого уровня, используют именно ООП в качестве базового механизма. И к слову сказать, это та парадигма в которой работаю я. А вот в чём её особенности, плюсы и минусы — мы поговорим в следующих постах. Аригато!

#программист #it #itтехнологии #обучениепрограммированию #информационныетехнологии #айтишник #программирование #программированиеснуля #программированиедляначинающих #языкпрограммирования #обучение #технологии #образование #студенты #ооп

🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥

-2

🚀 P.S. Ты можешь круто поддержать меня и проект "Войти в IT" на boosty! Я публикую там более эксклюзивный и профессиональный, иногда немного личный контент. Хочешь посмотреть как я выгляжу в реальной жизни? Тогда жми: Ссылка 🚀

P.S.2 У меня ещё есть Telegram-канал. Там посты чуть попроще, и чуть повеселей. Ссылка