Для чего придумали объектно-ориентированное программирование

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

Предыстория объектно-ориентированного программирования

Первым примером решения, которое воплотило в себе объектно-ориентированный метод, может считаться программно-аппаратный графический Планшет на основе специального оборудования DEC PDP. Сокращение расшифровывается так: Digital Equipment Corporation - компания, разработавшая Programmed Data Processor, то есть программируемый процессор данных. Этот Планшет был создан ещё в 1963-ем году молодым учёным Иваном Сазерлендом, который помогал в проектировании вертолётных симуляторов военному научному агентству DARPA. При помощи светового пера и набора ниспадающих меню на Планшете можно было нарисовать разнообразные простые рисунки на аналоговом дисплее, передвигать их и помещать в нужных местах на экране, а затем сохранять.

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

Родоначальниками объектно-ориентированного метода при написании программ являются норвежцы Оле Джохан Дал и Кристен Нюгорт, которые создали язык программирования Симула. В 1952 году Нюгорт начал заниматься моделированием больших систем реальной действительности. В 1957-ом году у него появилась возможность реализовать свои идеи на компьютере Ferranti MERCURY, но он быстро понял, что Фортран и машинные языки сильно ограничены в возможностях.

История Симулы берёт своё начало с 1962 года, когда начался проект Simulation Language, языка, который предназначался для создания программной модели метода Монте-Карло. Нюгорт в то время занимал пост директора по науке Норвежского компьютерного центра (NCC), и он начал проектирование языка для построения дискретных моделей. Нюгорт пригласил к сотрудничеству Оле Джохана Дала, который был его коллегой в экспериментальной группе Норвежского Министерства обороны.

Параллельно разрабатывались два варианта Симулы. Первый вариант, именуемый Симула I, формировался согласно контракту с одним из отделений компании Univac, а именно, Sperry Rand для машины UNIVAC 1107. Заказчики из США хотели, чтобы разрабатываемый новый язык был подобен Фортрану, но авторы проекта эту идею не стали использовать. В итоге в качестве прародителя Симулы выступил язык Алгол 60, который выбрали из-за его блочной архитектуры, набора хороших средств сокрытия данных, а также по причине его распространённости в научных кругах Европы.

Разработки второго варианта Симулы финансировал NCC. В 1965-ом году авторы проекта решили соединить информационные данные с операциями по их обработке. По итогам рассмотрения достоинств Симулы I, саммит НАТО, проходивший в 1966-ом году, принял решение продолжить его развитие. В язык были добавлены новые инструменты моделирования и имитации мультипроцессорной работы. Авторами также были введены в обиход термины «класс» и «объект». В то же время появилась технология так называемого наследования, то есть, разработчики Симулы добавили в зык возможность применения различными классами общих свойств за счёт добавления названия класса в форме префикса. Публичный анонс новой технологии вызвал живой интерес у ученых многих стран, в том числе:

- Дании,

- Германии,

- Советского Союза.

В СССР в шестидесятые годы прошлого века вышла версия Симулы для машины УРАЛ-16.

Разработка нового варианта языка Симула была завершена в начале 1967-го года. Язык мог поддерживать проектные работы по принципу «сверху вниз» при помощи виртуальной процедуры и технологий статических и динамических связываний. NCC сформировал рабочую группу, которая называлась Simula Standards Group. В последствии в эту группу вошёл Якоб Палме, который был специалистом Шведского института исследований в области обороны. Он ввёл в Симулу инструменты для сокрытия переменных. Разработка обновлённого варианта Симулы 67 была завершена в 1969-ом году и он проверялся на компьютерах Control Data. Далее язык был реализован для машин UNIVAC 1108 и IBM, но они были достаточно дорогостоящими, что не позволяло широко распространиться этому прекрасному языку программирования. Тем не менее его использовали при проектировании первых СБИС чипов Intel.

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

Позднее Кей работал в Стэнфордской лаборатории искусственного интеллекта, а затем в 1972 году перешёл в известнейший научный цент Xerox PARC. Там он претворил в жизнь свои идеи при создании нового объектного языка SmallTalk, изначально именуемым им как Biological System и смоделированном на основе языка Бейсик, а впоследствии выполненном уже на ассемблере. При реализации этих проектов Кей использовал известный сегодня термин «объектно-ориентированное программирование» (ООП). Положенные в основу SmallTalk идеи ООП и на сегодняшний день остаются непревзойдёнными другими системами и языками программирования. Кея иногда величают отцом языка SmallTalk, однако матерью данного специального языка по праву считается профессор лингвистики Адель Голдберг, которая работала в то время вместе с Аланом Кеем. Именно она составила первый комплект документации к языку SmallTalk, а позже опубликовала много работ по методике объектного анализа.

Для чего придумали объектно-ориентированное программирование

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

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

История развития

Основа ООП была заложена в начале 1960-х годов. Прорыв в использовании экземпляров и объектов был достигнут в MIT с PDP-1, и первым языком программирования для работы с объектами стал Simula 67. Он был разработан Кристен Найгаард и Оле-Джохан Даль в Норвегии с целью создания симуляторов. Они работали над симуляциями взрыва кораблей и поняли, что могут сгруппировать корабли в различные категории. Каждому типу судна было решено присвоить свой собственный класс, который должен содержать в себе набор уникальных характеристик и данных. Таким образом, Simula не только ввела понятие класса, но и представила рабочую модель.

Термин "объектно-ориентированное программирование" был впервые использован Xerox PARC в языке программирования Smalltalk. Понятие ООП использовалось для обозначения процесса использования объектов в качестве основы для расчетов. Команда разработчиков была вдохновлена проектом Simula 67, но они спроектировали свой язык так, чтобы он был динамичным. В Smalltalk объекты могут быть изменены, созданы или удалены, что отличает его от статических систем, которые обычно используются. Этот язык программирования также был первым, использовавшим концепцию наследования. Именно эта особенность позволила Smalltalk превзойти как Simula 67, так и аналоговые системы программирования.

Simula 67 стала новаторской системой, которая впоследствии стала основой для создания большого количества других языков программирования, в том числе Pascal и Lisp. В 1980-х годах объектно-ориентированное программирование приобрело огромную популярность, и основным фактором в этом стало появление языка С++. Концепция ООП также имела важное значение для разработки графических пользовательских интерфейсов. В качестве одного из самых ярких примеров можно привести структуру Cocoa, существующую в Mac OS X.

Общие принципы модели стали применяться во многих современных языках программирования. Некоторые из них — Fortran, BASIC, Pascal. На тот момент многие программы не были разработаны с учетом ООП, что было причиной возникновения некоторых проблем совместимости. “Чистые” объектно-ориентированные языки программирования не обладали многими функциями, необходимыми программистам. Для решения этих проблем ряд исследователей предложили несколько новых языков программирования, созданных на основе принципов ООП с сохранением других, необходимых программистам, функций. Среди наиболее ярких примеров можно выделить Eiffel, Java, .NET. Даже в серьезных веб-разработках используются языки программирования, основанные на принципах ООП - PHP (у нас вы можете пройти курс ООП в PHP), Python, Ruby. По мнению экспертов, в ближайшие несколько десятилетий именно объектно-ориентированный подход будет оставаться основной парадигмой в развитии программирования.

Принципы

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

В основе концепции объектно-ориентированного программирования лежат несколько базовых принципов:

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

2. Наследование. Второй принцип ООП - наследование - предполагает возможность повторного использования кода по наследству от старших классов. Допустим, что в дополнение к объекту “Машина”, одному пользователю нужен объект “Гоночный автомобиль” а другому - “Лимузин”. Каждый строит свои объекты по отдельности, но обнаруживает общие черты между ними. На самом деле, каждый объект на самом деле является лишь разновидностью автомобиля. Именно здесь принцип наследования позволяет сэкономить время: достаточно создать один общий класс, а затем - несколько подклассов, каждый из которых будет иметь набор свойств, включающий как общие, так и сугубо индивидуальные параметры.

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

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

Ключевые преимущества

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

Среди прочих аргументов в пользу использования объектно-ориентированного программирования можно выделить такие:

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

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

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

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

Для чего придумали объектно-ориентированное программирование
Получить консультацию у специалистов DST
Напишите нам прямо сейчас, наши специалисты расскажут об услугах и ответят на все ваши вопросы.
Комментарии
RSS
Вам может быть интересно
Что такое программное обеспечение для разработки приложений? — это тип программного обеспечения, используемого для создания приложений и программ. Обычно он включает в себя редакторы кода, компи...
В этой статье от разработчиков компании DST Global, описаны различные подходы к ...
В этой статье разработчики компании DST Global опи...
В программировании существует такое понятие, как «...
REST API (Representational State Transfer Applicat...
Frontend- и backend-разработка тесно связаны между...
После перехода в мир IT и активной работы там мне ...
Значение интерфейсов прикладного программирования(...
В современном мире технологий концепция SaaS (Soft...
Зачем использовать TypeScript для своих проектов? ...
Прочтите это руководство от разработчиков DST Glob...

Новые комментарии

А теперь, по моему мнению, главное о целевой аудитории: — Целевая аудитория (ЦА) — это группа людей или компаний, на которую направлены маркетин...
Маркетинг отвечает за генерацию дохода компании за счёт формирования спроса на товары и услуги. Он создаёт мостик между потребителем и компанией с пом...
На работе дали в нагрузку ML инженеров, сейчас со скрипом ковыряю процессы. На базе ажура. Что интересно, на самом деле очень тяжело объяснить подходы...
Если в команде нет выделенной роли, которая отвечает за работоспособность стека ML-технологий, то не стоит отчаиваться — сейчас это пока норма. MLOps-...

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Россия, Ижевск, ул.Салютовская,
д.1, офис 17

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон