Слово «объектно-ориентированный» представляет собой комбинацию двух слов, т.е. «объект» и «ориентированный». Словарное значение объекта — это статья или сущность, существующая в реальном мире. Ориентированность означает заинтересованность в определенном виде вещей или объектов.
Объектно-ориентированное программирование ― что это?
Если вы задаетесь вопросом, что такое объектно ориентированное программирование, то сейчас мы попробуем развернуто на него ответить.
ООП — это философия или методология проектирования компьютерного программирования, которая организует/моделирует дизайн программного обеспечения вокруг данных или объектов, а не функций и логики.
Объект называется полем данных, которое имеет уникальные атрибуты и поведение. Все в ООП сгруппировано как самодостаточные объекты.
ООП в JavaScript часто лучше всего использовать, когда мы имеем дело с производством и проектированием приложений. Он обеспечивает модульность в программировании. Это позволяет нам разбивать программное обеспечение на части небольших задач, которые мы затем можем решать по одному объекту за раз.
История появления ООП
Многие считают, что ООП ― это продукт 1980-х годов и работы, проделанной Бьярне Струструпом по продвижению языка C в объектно-ориентированный мир путем создания языка C++. На самом деле, SIMULA 1 (1962) и Simula 67 (1967) являются двумя самыми ранними объектно-ориентированными языками. Работа над языками Simula была выполнена Оле-Джоном Далем и Кристеном Нигаардом в Норвежском вычислительном центре в Осло, Норвегия. Хотя большинство преимуществ ООП были доступны в ранних языках Simula, только после того, как в 1990-х годах C++ стал укоренившимся языком, ООП начало процветать.
C был родительским языком C++, и часто говорили, что C достаточно мощный, чтобы многократно выстрелить себе в ногу. C++, с другой стороны, был не только достаточно мощным, чтобы выстрелить себе в ногу, но вы могли без особых проблем отстрелить себе всю ногу. Большинство программистов признают, что C++ — очень мощный язык, который широко используется и сегодня. Однако с этой мощью приходит и большая сложность. Разработчикам языка нужен был более простой и, возможно, менее сложный язык для разработки ООП.
Следующий шаг в развитии ООП начался в январе 1991 года, когда Джеймс Гослинг, Билл Джой, Патрик Нотон, Майк Шерадин и некоторые другие встретились в Аспене, штат Колорадо, чтобы обсудить идеи для проекта Stealth. Группа хотела разработать интеллектуальные электронные устройства, способные централизованно управляться и программироваться с портативного устройства.
Что не так с процедурным программированием (ПП)?
В каждой книге по ООП говорится, что процедурная парадигма подвержена ошибкам, например, глобальные данные легко уязвимы для функций. Говорят, что программист может делать честные ошибки в процедурных языках, например, создавая функцию, которая случайно искажает данные.
Плюсы и минусы ООП
Ниже вы можете ознакомиться с некоторыми плюсами и минусами объектно-ориентированного подхода к программированию. К плюсам относится то, что данный язык:
- Повышает производительность разработки программного обеспечения. ООП обычно повышает продуктивность команды разработчиков программного обеспечения, поскольку обеспечивает конкретность, расширяемость и возможность повторного использования в процессе разработки.
- Улучшает обслуживание программного обеспечения. При использовании модели ООП в JS программисты могут централизовать коды, функции, переменные и другие элементы объектов. Обычно легче проводить обслуживание централизованных объектов, так как изменения вряд ли затронут другие объекты и их функции.
- Позволяет создавать многократно используемые коды. Благодаря концепции наследования в модели ООП, классы могут иметь родительские классы. Когда существует множество классов, которые имеют схожие функции и могут интерпретировать одни и те же методы, это обычно позволяет программистам повторно использовать коды.
- Снижает затраты на разработку. Большинство концепций ООП способствуют снижению затрат на программирование. Программисты могут повторно использовать код, снижая альтернативные затраты, которые в противном случае программисты могли бы потратить на создание новых кодов. Программы ООП в Java обычно легко масштабировать и поддерживать.
- Обеспечивает безопасность программы. Концепции абстракции и инкапсуляции объектно-ориентированного программирования обычно повышают общую безопасность программы. Программа скрывает многие объекты, функции и кодирование внутри класса, что помогает защитить класс от несанкционированного доступа и изменений.
К минусом ООП можно отнести то, что данный язык:
- Привлекает крутую кривую обучения. В зависимости от опыта и навыков команды программистов, они могут быть не знакомы с моделями ООП. Для понимания ООП может потребоваться обширное обучение и опыт. Это может привести к непродуктивному или неэффективному программированию на ранних этапах внедрения этой модели. Однако при эффективном обучении и развитии команды могут стать опытными в ее использовании.
- Требует большего количества строк кода. Хотя Java ООП помогает организовать огромные объемы кода, оно также может генерировать значительное количество кода. Если ООП-программы не получают должного управления, может появиться чрезмерное количество кода, который не нужен для работы программы.
- Приводит к более медленной скорости работы приложений. Программы ООП могут работать медленнее, чем программы других типов. Это связано с тем, что они могут включать в себя множество кодов и инструкций. Для выполнения программой своих функций требуется большее количество обработки кодов по сравнению с другими моделями программ, например, процедурным программированием.
4 концепции объектно-ориентированного программирования
Ниже вы можете изучить четыре типичные принципа ООП в JS:
- Инкапсуляция. Процесс инкапсуляции ― это, по сути, заключение объектов в класс вместе с функциями и методами объекта. Этот процесс служит защитным барьером для класса, защищая объекты внутри него. Когда программист инкапсулирует класс, он не позволяет другим объектам и внешним кодам получать доступ к объектам класса или изменять их. Видны только назначенные функции, методы и переменные инкапсулированных объектов.
- Абстракция. Процесс абстрагирования означает отделение или сокрытие реализации класса от его интерфейса. Например, стереосистема может представлять собой объект, а кнопки управления на внешней стороне системы — интерфейс. Чтобы изменить громкость, пользователь может взаимодействовать с интерфейсом громкости, но ему не требуется знание функций и методов, которые делают это действие возможным.
- Наследование. Согласно концепции наследования, классы могут иметь родительские и дочерние классы. Это означает, что дочерний класс наследует многие из тех же функций, которые родительский класс включает в свои объекты. Это может быть отличной концепцией для повторного использования кода, поскольку дочерние классы используют многие функции родительского класса.
- Полиморфизм. Это понятие относится к способности программы интерпретировать один метод и применять его к уникальным объектам. Обычно это возможно, поскольку объекты содержат уникальные входные параметры, но могут иметь общий родительский класс. Например, если рассматривать человека как родительский класс, то у этого человека могут быть дочерние классы, представляющие его как работника, родителя и партнера. Если вы примените к человеку метод, например Behave, он будет вести себя, но как родитель, сотрудник и партнер они будут вести себя по-разному.
Что такое объект?
Объекты ООП JS ― это экземпляры класса, созданные с помощью специально определенных данных. Объекты могут соответствовать реальным объектам или абстрактным сущностям. Когда класс определен изначально, описание является единственным определенным объектом.
Что такое класс?
Класс в ООП Java — это план или шаблон объекта. Это определяемый пользователем тип данных. Внутри класса мы определяем переменные, константы, функции-члены и другие функции. он связывает данные и функции в единое целое. Он не потребляет память во время выполнения. Обратите внимание, что классы не считаются структурой данных. Это логическая сущность. Это лучший пример привязки данных. Обратите внимание, что класс может существовать без объекта, но наоборот невозможен.
Языки объектно-ориентированного программирования
К популярным языкам чистого ООП относятся:
- Ruby
- Scala
- JADE
- Emerald
Языки программирования, разработанные в основном для ООП, включают:
- Java
- Python
- C++
Другие языки программирования, которые работают в паре с ООП, включают:
- Visual Basic .NET
- PHP
- JavaScript