На сегодняшний день, существует несколько разных «школ» программирования. Их ещё называют методологиями, или парадигмами. Принято выделять императивное программирование, функциональное программирование, логическое программирование, структурное программирование, декларативное программирование, и наконец объектно-ориентированное программирование. Каждой парадигме соответствуют определённые языки программирования, и различные шаблоны разработки.
Это можно представить как школы 🈯️ восточных боевых искусств. Каждая школа (парадигма) имеет свои плюсы и минусы, области применения и уникальный стиль. У каждой школы (парадигмы) есть свои известные мастера, свои сторонники и противники.
Что-то из вышеуказанных парадигм имеет широкое и повсеместное распространение, а что-то только специфические области применения. Тем не менее, все парадигмы так или иначе используются в современных информационных технологиях. Сегодня мы поговорим про объектно-ориентированную парадигму программирования.
Кто придумал объектно-ориентированное программирование?
Объектно-ориентированное программирование придумал американский гранд-мастер, сёдай-сокэ, мэйдзин, лауреат премии Тьюринга 2003 года, и просто хороший человек — Алан Кёртис Кэй. Помимо изобретения ООП, он ещё успел поработать на Xerox, и разработать язык программирования Smalltalk.
Созданные им технологии в последствии стала использовать компания Apple — например в устройствах Lisa / Mac. В общем, его определённо можно назвать сенсеем-основателем школы ООП, крутым футурологом и со-архитектором современного мира IT. К слову сказать, сейчас ему уже 82 года.
В любой крупной компании, любой современной технологии, есть публичные и непубличные люди. Так сказать, лица проекта и души проекта. И если имя Стива Джобса знает каждый второй, то имя Алана Кёртиса не столь известно. Тем не менее, его вклад в развитие существующих технологий трудно переоценить. Можно сказать, что это широко известный в узких кругах человек. В общем, кому интересно - можете почитать про него факультативно.
Философия объектно-ориентированного программирования
Объектно-ориентированное программирование (или сокращённо ООП) основано на концепции «объектов». С точки зрения ООП, компьютерные программы должны представлять из себя набор объектов, взаимодействующих друг с другом. Каждый объект может иметь специфические свойства, специфические функции, и выполнять специфические действия. При этом, не столь важно местоположение или иерархия объектов, а гораздо важнее их свойства и взаимодействие друг с другом. Прямо-таки, как в упрощённой версии жизни.
Давай на примере. Допустим, у нас есть небольшая фабрика тортов 🍰. Внутри фабрики есть печь, миксер, холодильник, а так же пекари, упаковщики и грузчики. Печь, миксер, холодильник, упаковщик, грузчик и пекарь — всё это объекты. Каждый из них выполняет определённые действия. Все объекты взаимодействуют друг с другом. Объект «миксер» на входе получает муку, воду и дрожжи, а на выходе возвращает тесто. Объект «холодильник» на входе получает тёплые продукты, а на выходе возвращает грузчику их с температурой +5 градусов.
При этом, с точки зрения внешнего наблюдателя, каждый из объектов имеет интерфейс (кнопки и команды), и явно определённую функцию которую он выполняет. Но набор «внутренней логики» остаётся скрыт от внешнего наблюдателя, и не важен этому наблюдателю. Пекарь не знает как устроен миксер. Грузчик не является специалистом по холодильникам. И соответственно, печь явно не думает о том, что находится внутри грузчика. Но! Каждый из объектов имеет возможность взаимодействовать с другими участниками (активно или пассивно). И взаимодействует.
Программа как набор объектов
Теперь посмотрим с прикладной точки зрения. Программа в стиле ООП представляет из себя папку с файлами. Внутри каждого файла описывается один или несколько объектов (схема объекта и его логика называется "класс"). Внутри каждого объекта есть некоторый набор переменных, а так же некоторый набор функций. Каждая функция на входе принимает некоторые данные (или объект), и возвращает в окружающий мир уже переработанные данные или объект. Взаимодействуя друг с другом, объекты преобразуют входящие в программу данные, и предоставляют пользователю результаты обработки.
Архитектура ООП разбивает большую и сложную задачу на части, превращая производственный процесс в фабрику тортов. На которой разные специалисты + техника производят из исходного сырья красивый торт. Такие дела. 😉
ООП как зеркало реального мира
На мой взгляд, объектно-ориентированное программирование является наиболее распространённым на сегодняшний день. Его можно представить как упрощённый конспект реальности, в котором каждый объект или существо есть индивидуальность с присущим ему набором качеств. Все объекты взаимодействуют между собой, активным или пассивным образом. Из похожести на реальную жизнь, а так же из широкого распространения, исходит и повсеместная коммерческая востребованность парадигмы ООП.
Практически все современные системы используют ООП. Интернет-сайты, Windows, Linux, Android, iOS, и так далее. Всё это запрограммировано в парадигме объектов. Несложно сделать вывод, что при таком тотальном распространении, парадигма ООП является наиболее коммерчески востребованной.
Языки C++, CSharp, Java, PHP, JavaScript, Python и другие из языков высокого уровня, используют именно ООП в качестве базового механизма. И к слову сказать, это та парадигма в которой работаю я. А вот в чём её особенности, плюсы и минусы — мы поговорим в следующих постах. Аригато!
#программист #it #itтехнологии #обучениепрограммированию #информационныетехнологии #айтишник #программирование #программированиеснуля #программированиедляначинающих #языкпрограммирования #обучение #технологии #образование #студенты #ооп
🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥
🚀 P.S. Ты можешь круто поддержать меня и проект "Войти в IT" на boosty! Я публикую там более эксклюзивный и профессиональный, иногда немного личный контент. Хочешь посмотреть как я выгляжу в реальной жизни? Тогда жми: Ссылка 🚀
P.S.2 У меня ещё есть Telegram-канал. Там посты чуть попроще, и чуть повеселей. Ссылка