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

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

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

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

Основа ООП была заложена в начале 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. Полиморфизм. Принцип полиморфизма позволяет использовать один и тот же интерфейс для выполнения ряда близких по смыслу и назначению действий. Фактически, вы создаете набор шаблонов для решения определенных задач, а результат будет зависеть от типа данных.

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

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

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

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

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

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

loader
Комментарии
К этому посту больше нельзя оставлять новые комментарии
Логические задачи с собеседований