Что такое объектно ориентированный язык программирования
Перейти к содержимому

Что такое объектно ориентированный язык программирования

  • автор:

Что такое объектно-ориентированное программирование (ООП)?

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

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

Осмысливая код с точки зрения объектов и классов, разработчики могут создавать программное обеспечение более гибко и интуитивно понятно, чем в противном случае. Этот метод организации долгое время использовался для написания чистого, поддерживаемого и, что наиболее важно, повторно используемого кода.

Что такое объектно-ориентированное программирование?

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

    Процедурное программирование работает с помощью пошаговых инструкций. Структурированное программирование немного сложнее, оно использует потоки управления, такие как операторы if/then/else и циклы while/for.

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

Например, автомобиль — это объект с различимыми качествами, такими как цвет и тип. Автомобиль может ездить. Демонстрация поведения автомобиля в программе, использующей процедурное или структурное программирование, несомненно, будет сложной задачей. С помощью объектно-ориентированного программирования вы можете сгенерировать класс автомобиля и кодировать особенности объекта внутри класса. Хотя детали этого предприятия более растянуты, вы можете назначать определяющие аспекты автомобиля и управлять его поведением с помощью простого вызова функции.

4 основных строительных блока ООП

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

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

Атрибуты (или переменные) относятся к характеристикам объекта. Внешний вид, состояние и другие качественные признаки являются общими атрибутами объекта. Атрибуты класса в сочетании с экземплярами объекта отличают объекты друг от друга. Следующая программа демонстрирует объявление класса в Python:

Класс Автомобиль:
def init (я, цвет, тип):
self.color = цвет
self.type = тип

Здесь «я» представляет экземпляр класса для будущих ссылок на атрибуты и методы объекта. А «цвет» и «тип» представляют собой атрибуты класса.

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

В автомобиле метод вождения может быть уместен. Вы можете определить такой метод прямо под определениями атрибутов автомобиля.

Хотя с помощью кода можно отобразить реальный автомобиль и смоделировать приложение для вождения, программирование этого метода немного сложнее, чем строки кода ниже.

защитный диск (сам)
print(‘Я за рулем’ + self.color + self.type)

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

автомобиль = Автомобиль(‘красный’, ‘Седан’)

Приведенный выше код формально установит конкретный экземпляр уникального автомобильного объекта.

Затем вы сможете увидеть, как метод привода работает в действии.

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

1. Инкапсуляция
Инкапсуляция — это связывание состояния и поведения объекта вместе. Это происходит, когда атрибуты и методы заключены в единый модуль и/или класс. Из-за инкапсуляции поля класса недоступны для публики напрямую. Кроме того, инкапсуляция обеспечивает гибкость и удобство сопровождения. Например, в объекте автомобиля класс Car может быть скрыт от остальной части программы. Преимуществами являются возможность повторного использования без учета конкретных деталей, на которые опирается объект, и более чистый код в целом.

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

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

Во-первых, у смартфонов всего несколько значимых кнопок на самом устройстве. Эти кнопки позволяют пользователям выражать функциональные возможности, не увязая в сложности технологии. Точно так же объект — это абстракция чего-то скрытого за кулисами, что гораздо сложнее, чем кажется на первый взгляд .

3. Наследование
Когда в программе есть несколько классов со связанными свойствами, наследование может упростить ландшафт. В объектно-ориентированном программировании дочерние классы могут наследовать родительские классы и аналогичные функции. В качестве примера наследования рассмотрим, как класс Car может совместно использовать свойства с более крупной категорией, например с транспортными средствами.

«Автомобиль» в качестве родительского класса. «Автомобиль» и «Велосипед» — это дочерние классы, которые наследуют атрибуты родительского класса практически без усилий.

4. Полиморфизм
Полиморфизм — это состояние, при котором объект может принимать несколько форм. При этом полиморфизм может проявляться по-разному. Примеры полиморфизма включают:

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

Полиморфизм с функциями и объектами . Вы можете определить функцию вне класса, которая зависит от методов и атрибутов класса. После создания экземпляра объекта вы можете использовать объект для развертывания функции.

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

Каковы преимущества объектно-ориентированного программирования?

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

  • Модульность
  • Возможность повторного использования
  • Возможность подключения
  • Простота

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

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

В то же время масштабируемость имеет первостепенное значение для любого бизнеса в сфере разработки программного обеспечения. А этого редко можно добиться без объектно-ориентированного программирования.

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

1. Питон
Python — это интерпретируемый язык программирования высокого уровня общего назначения. Разработчики выбирают Python для различных вариантов использования. Приложения Python варьируются от разработки игр до науки о данных и машинного обучения.

2. Java
Как язык программирования, основанный на классах, Java спроектирован так, чтобы иметь мало зависимостей; таким образом, разработчики Java могут рассчитывать на непрерывное повторное использование. Java известен как официальный язык программирования для Android-разработки .

3. Руби
Ruby выделяется среди других объектно-ориентированных языков программирования тем, что его цель — воспринимать практически все, что написано на языке, как объект. Юкихиро «Мац» Мацумото, разработчик Ruby, создал язык, когда почувствовал, что альтернативные языки ООП, такие как Python, не были по-настоящему объектно-ориентированными. Ruby on Rails — популярный веб-фреймворк, основанный на языке Ruby.

4. С++
C++, или C с классами, — это объектно-ориентированное расширение C. C — это классический язык программирования, который до сих пор занимает высокие позиции в индексе TIOBE. Тем не менее, его расширение C++ работает исключительно хорошо при работе со встроенными системами, такими как смарт-часы и медицинские машины.

5. С#
C# — это язык .NET Framework, продукт Microsoft, который помогает разработчикам создавать приложения. Как и C++, C# также является языком промежуточного программного обеспечения, который может тесно взаимодействовать с аппаратным обеспечением. C# в основном используется для разработки игр в Unity .

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

HR Блог для IT рекрутера в Телеграм

Хочешь всегда получать новые статьи, бесплатные материалы и полезные HR лайфхаки! Подписывайся на нас в Telegram! С нами подбор ит персонала становится проще 😉

Объектно-ориентированное программирование (ООП). Объясняем на пальцах

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

Творчий курс від skvot: 3D-художник персонажів.
Створюйте світ персонажів.

1. Что такое объектно-ориентированное программирование?

Система объектно-ориентированного программирования (ООП) — это парадигма основанная на концепции «объектов», содержащих данные и методы.

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

2.1. Что такое объект?

Объект — любой предмет или сущность, имеющий состояние и поведение.

Состояние — это характеристики объекта, его параметры, поведение — осуществляемые им действия.

Професійний курс від skvot: Системний геймдизайн.
Розробка ігор знати як.

Пример:

  1. Объект: дом
  2. Состояние: адрес, цвет, площадь
  3. Поведение: открыть дверь, закрыть дверь

Вот так реализация этого объекта будет выглядеть на объектно-ориентированном языке Java:

class House < String address; String color; double are; void openDoor() < //здесь пишется код >void closeDoor() < //место для вашего кода >. . >

Различные состояния объекта представлены в виде переменных экземпляра, а поведение — это методы класса.

Помогут разобраться в этом вопросе курсы от наших друзей Mate Academy, Hillel и Powercode. Менторы смогут ответить на любые ваши вопросы.

2.2. Что такое класс?

Класс можно рассматривать как план, с помощью которого можно создать столько объектов, сколько захотите.

Возьмем класс Site с двумя элементами данных поля или переменные экземпляра и состояние объекта . Это просто план, он не принадлежит какому-то отдельному сайту, однако с его помощью мы можем создавать объекты (или экземпляры), представляющие любой из них.

Потужний курс від skvot: blender.
Відкрийте для себе світ 3D-графіки.

В следующем примере мы создали два объекта и предоставили им отдельные свойства с помощью конструктора:

(Продолжаем использовать Java)

public class Site < //поля (или переменные) String webName; int webAge; // конструктор Site(String name, int age)< this.webName = name; this.webAge = age; >public static void main(String args[]) < //создаем объекты Site obj1 = new Site("highload", 5); Site obj2 = new Site("yandex", 18); //Получаем данные объекта и выводим их в консоль System.out.println(obj1.webName+" "+obj1.webAge); System.out.println(obj2.webName+" "+obj2.webAge); >>

3. Что не так с процедурным программированием (ПП)?

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

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

Также разработчиками отмечались следующие недостатки ПП:

  1. Огромное количество процедур при разработке объемных проектов сказывается на чистоте и работоспособности кода.
  2. Раздутые библиотеки кода, где содержаться сотни подпрограмм — очень трудно поддерживать.
  3. Из-за непрозрачной структуры библиотек, существует возможность одним «неловким движением» испортить всю библиотеку (это реально бывает).
  4. Все данные процедуры доступны только внутри нее. Отсутствует возможность вызвать их из другого места, а также использовать повторно. Принцип DRY (Don’t Repeat Yourself) тут не работает.
  5. Монолитные большие куски кода довольно сложно модифицировать и расширить.

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

Освітній курс від laba: Клієнтський сервіс.
Залучайте та зберігайте клієнтів.

Далее рассмотрим ООП более подробно и поговорим о четырех китах, на которых оно стоит .

4. Основные принципы ООП

Абстракция

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

То же самое верно и для объектов в ООП. В любом встроенном методе присутствует скрытый функционал. Например, в примере с объектом «Дом» есть метод openDoor() . Он может состоять из нескольких элементов: поворота ключа в дверном замке, дергания за ручку и т.д. Но нам с вами не обязательно об этом знать. Все, что нужно, прописать этот метод в редакторе кода и она откроется. Это абстракция.

Инкапсуляция

Инкапсуляция — это один из способов создания абстракции. Каждый объект представляет собой набор данных (переменные, методы).

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

Наследование

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

Для примера возьмем древнейшую игру — шахматы. У каждой шахматной фигуры есть свои классы с переменными и методами для передвижения и других действий. Более подробно рассмотрим пешку — обозначим ее классом Piece , поместив для нее внутри необходимый функционал. Однако помимо стандартных функций, пешкам еще нужен метод, превращающий их в другие фигуры, по достижении конца доски. Мы назовем его методом transformPiece() .

Мы не будем помещать его в класс, а вместо этого создадим подкласс под названием Pawn . Поскольку это подкласс, он наследует все атрибуты от класса Piece . Экземпляр подкласса Pawn будет включать в себя не только метод transformPiece() , но и базовые свойства и атрибуты класса-родителя (цвет, высоту, форму и разрешенное движение).

Вывод: Вместо того, чтобы создавать новые классы для всего, можно создать базовый класс, а затем расширить его новыми подклассами, там, где это необходимо. Создание подклассов экономит много времени, однако злоупотреблять их созданием не стоит, чтобы в них не запутаться.

Полиморфизм

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

Например, наш класс Piece может иметь метод move() , перемещающий фигуру на одну позицию в любом направлении. Такая функция будет работать и для фигуры короля, но не для чего-либо еще. Чтобы решить эту проблему, мы можем определить новый метод move() в подклассе Rook , определяющий движение как неограниченное количество пробелов вперед, назад, влево или вправо.

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

5. История появления ООП

Основы ООП зародились еще в 60-х годах XX века. Норвежцы Кристен Найгаард и и Оле-Йохан Даль разработали язык для создания симуляций и назвали его Simula 67. Основной задачей языка была симуляция взрыва кораблей различного назначения и модификаций.

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

А вот сам термин «объектно-ориентированное программирование» впервые был произнесен вслух в компании Xerox, при разработке языка программирования Smalltalk. Ввели его, чтобы обозначить процесс применения объектов — как основу для вычислений. Вдохновленные ​​проектом Simula 67, создатели Smalltalk сделали его динамичным.

В отличие от большинства статических систем того времени, с объектами можно было взаимодействовать на высоком уровне: изменять, создавать новые или удалять. Кроме того, Smalltalk был первым языком программирования, в котором была представлена ​​концепция наследования.

Simula стал вдохновляющим примером для большинства других языков, в том числе Pascal и Lisp, в 1980-х годах к ним присоединился еще и C++ (который стал образцом реализации современного ООП).

6. Плюсы и минусы ООП

Преимущества:

  • Легкий удобочитаемый код.
  • Быстро пишется.
  • Простая реализация большого функционала.
  • Не нужно писать однотипные функции для разных сущностей.
  • Меньше повторений.

Недостатки:

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

7. Языки объектно-ориентированного программирования

Вот несколько популярных языков, поддерживающих принцип ООП:

Список, конечно же, неполный, на самом деле их гораздо больше.

8. Простой пример реализации ООП-концепции

Допустим, клиент заказал у вас сделать новый Тамагочи с белым медведем в качестве виртуального питомца. Вы принимаетесь за работу и создаете класс PolarBear на JavaScript/TypeScript.

class PolarBear < private _weight: number = 990; constructor(weight: number = 0) < this._weight = weight >makeNoise() < console.log("ревет"); >eat() < console.log("ест все что захочет"); >sleep() < console.log("спит"); >roam() < console.log("бесцельно бродит); >>

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

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

Чтобы приручить свой виртуальный зверинец, вам поможет ООП, а именно простая структуризация кода: черные медведи, гризли и медведи-ленивцы — объединим в класс Медведи. В то же время медведи, грызуны и обезьяны — будут помечены классом Животные. Вот так мы постепенно и построим наше генеалогическое древо.

Это только часть кода:

class Animal < private _weight: number; private _origin: string; constructor(weight: number = 0, origin: string = "") < this._weight = weight; this._origin = origin; >makeNoise(noise: string = "") < console.log("издал звук, похожий на: " + noise); >eat(food: string = "") < console.log("ест " + food); >sleep() < console.log("спит"); >roam() < console.log("бесцельно бродит"); >> class Bear extends Animal < constructor(weight: number, origin: string) < super(weight, origin); >makeNoise(noise: string = "рев") < super.makeNoise(noise); >eat(food: string = "все, что он хочет") < super.eat(food); >> class GrizzlyBear extends Bear < constructor(weight: number = 600, origin: string = "Северная Америка") < super(weight, origin); >> class Panda extends Bear < constructor(weight: number = 230, origin: string = "Китай") < super(weight, origin); >makeNoise() < super.makeNoise("писк"); >eat() < super.eat("молодые побеги бамбука"); >>

Надеюсь, сам принцип понятен. А от теории, как известно, до реальной практики всего один шаг.

Коротко о главном

Что вам нужно знать об ООП:

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

В конце, как обычно, несколько релевантных ссылок на актуальные видеоролики по теме:

Что такое объектно ориентированный язык программирования

6 сентября 2023

Скопировано

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

Освойте профессию
«Fullstack-разработчик на Python»

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

Зачем нужно ООП

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

ООП спагетти-код

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

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

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

Возможности ООП поддерживает большинство популярных языков программирования, включая JavaScript, PHP, Python и другие.

Читайте также Востребованные IT-профессии 2023 года: на кого учиться онлайн
Профессия / 12 месяцев
Fullstack-разработчик на Python

Создавайте веб-проекты самостоятельно

dffsdd (2)

Структура ООП

Объекты и классы

Чтобы сделать код проще, программу разбивают на независимые блоки — объекты. В реальной жизни это может быть стол, чашка, человек, книга, здание и многое другое. В программировании объекты — это структуры данных: пользователь, кнопка, сообщение. У них, как и у реальных предметов, могут быть свойства: цвет, содержание или имя пользователя. А чтобы объединить между собой объекты с похожими свойствами, существуют классы.

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

Понять, что такое ООП, поможет аналогия.

  • Понятие «программист» — это класс.
  • Конкретный разработчик по имени Иван — это объект, принадлежащий к классу «программист» (экземпляр класса).
  • Зарплата, рабочие обязанности, изученные технологии и должность в компании — это свойства, которые есть у всех объектов класса «программист», в том числе у Ивана. У разных объектов свойства различаются: зарплата и обязанности Ивана будут отличаться от таковых у другого разработчика Миши.

Атрибуты и методы

Объект — это набор переменных и функций, как в традиционном функциональном программировании. Переменные и функции и есть его свойства.

Объект, класс, атрибуты и методы в ООП

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

Принципы ООП

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

Абстракция

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

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

Набор атрибутов и методов, доступный извне, работает как интерфейс для доступа к объекту. Через них к нему могут обращаться другие структуры данных, причем им не обязательно знать, как именно объект устроен внутри.

Станьте Fullstack-разработчик на Python и найдите стабильную работу
на удаленке

Инкапсуляция

Каждый объект — независимая структура. Все, что ему нужно для работы, уже есть у него внутри. Если он пользуется какой-то переменной, она будет описана в теле объекта, а не снаружи в коде. Это делает объекты более гибкими. Даже если внешний код перепишут, логика работы не изменится.

Инкапсуляция помогает с легкостью управлять кодом. Выше мы сказали, что для обращения к объекту не нужно понимать, как работают его методы. Начальнику разработчика Ивана не обязательно знать, как именно он программирует: главное — чтобы выполнялись поставленные задачи.

Внутреннее устройство одного объекта закрыто от других: извне «видны» только значения атрибутов и результаты выполнения методов.

Наследование

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

Упомянутый программист Иван — это человек. Но «человек» — более общее определение, которое не описывает свойства, важные именно для программиста. Можно сказать, что класс «программист» унаследован от класса «человек»: программист тоже является человеком, но у него есть дополнительные свойства.

В таком случае разработчик Иван будет и человеком, и программистом одновременно. У него будут наборы свойств от обоих классов.

У одного «родителя» может быть несколько дочерних структур. Например, от «человека» можно наследовать не только «программиста», но и «директора».

Одиночное и множественное наследие в ООП

Наследование позволяет реализовывать сложные схемы с четкой иерархией «от общего к частному». Это облегчает понимание и масштабирование кода. Не нужно много раз переписывать в разных объектах одни и те же свойства. Достаточно унаследовать эти объекты от одного «родителя», и «родительские» свойства применятся автоматически.

Полиморфизм

Одинаковые методы разных объектов могут выполнять задачи разными способами. Например, у «человека» есть метод «работать». У «программиста» реализация этого метода будет означать написание кода, а у «директора» — рассмотрение управленческих вопросов. Но глобально и то, и другое будет работой.

Тут важны единый подход и договоренности между специалистами. Если метод называется delete, то он должен что-то удалять. Как именно — зависит от объекта, но заниматься такой метод должен именно удалением. Более того: если оговорено, что «удаляющий» метод называется delete, то не нужно для какого-то объекта называть его remove или иначе. Это вносит путаницу в код.

Преимущества ООП

Модульность

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

Гибкость

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

Экономия времени

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

Безопасность

Программу сложно сломать, так как инкапсулированный код недоступен извне.

Недостатки ООП

Сложный старт

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

Снижение производительности

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

Большой размер программы

Код, написанный с использованием ООП, обычно длиннее и занимает больше места на диске, чем «процедурный». Это происходит, потому что в такой программе хранится больше конструкций, чем в обычном процедурном скрипте.

Fullstack-разработчик на Python

Fullstack-разработчики могут в одиночку сделать IT-проект от архитектуры до интерфейса. Их навыки востребованы у работодателей, особенно в стартапах. Научитесь программировать на Python и JavaScript и создавайте сервисы с нуля.

Объектно-ориентированный язык программирования

В основе концепции объектно-ориентированного программирования лежит понятие объекта — некой субстанции, которая объединяет в себе поля (данные) и методы (выполняемые объектом действия).

Например, объект человек может иметь поля имя , фамилия и методы есть и спать . Соответственно, в программе можем использовать операторы Человек.Имя:=»Иван» и Человек.Есть(пища) .

Особенности , Ulan

В современных ОО языках используются механизмы:

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

Список языков

Неполный список объектно-ориентированных языков программирования:

Кроме ОО-языков общего назначения существуют и узкоспециализированные ОО-языки.

Литература

  • Иан Грэхем. Объектно-ориентированные методы. Принципы и практика = Object-Oriented Methods: Principles & Practice. — 3-е изд. — М .: Вильямс, 2004. — 880 с. — ISBN 0-201-61913-X
  • Антони Синтес. Освой самостоятельно объектно-ориентированное программирование за 21 день = Sams Teach Yourself Object-Oriented Programming in 21 Days. — М .: Вильямс, 2002. — 672 с. — ISBN 0-672-32109-12
  • Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. — Бином, 1998. — ISBN 0-8053-5340-2, ISBN 5-7989-0067-3, ISBN 5-7940-0017-1
  • Петер Коуд (Дэвид Норт, Марк Мэйфилд). Объектные модели. Стратегии, шаблоны и приложения.

Ссылки

  • Объектно-ориентированные языки программирования

Wikimedia Foundation . 2010 .

Полезное

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

  • объектно-ориентированный язык (программирования) — Язык описания программы поведением совокупности взаимосвязанных объектов. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN object oriented language … Справочник технического переводчика
  • Объектно-ориентированный язык — язык программирования, поддерживающий понятие объектов, их свойств и методов обработки. Объектно ориентированный язык объектный язык программирования, поддерживающий наследование и полиморфизм. См. также: Объектно ориентированные языки… … Финансовый словарь
  • объектно-ориентированный язык — Язык программирования, который соответствует концепциям объектно ориентированного программирования. [ГОСТ 19781 90] Тематики обеспеч. систем обраб. информ. программное EN object oriented language … Справочник технического переводчика
  • объектно-ориентированный язык и интерактивная среда программирования — — [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN Smalltalk … Справочник технического переводчика
  • Предметно-ориентированный язык программирования — (англ. domain specific programming language, domain specific language, DSL) язык программирования, специально разработанный для решения определённого круга задач, в отличие от языков программирования общего назначения, таких, как Си,… … Википедия
  • Язык программирования Java — разработанный корпорацией Sun Microsistems межплатформенный, интерпретируемый, объектно ориентированный язык программирования, используемый для создания приложений, работающих в под управлением веб браузера и характеризующихся высоким уровнем… … Финансовый словарь
  • Объектно-ориентированный подход — Объектно ориентированное программирование (ООП) парадигма программирования, в которой основными концепциями являются понятия объектов и классов (либо, в менее известном варианте языков с прототипированием прототипов). Класс это тип, описывающий… … Википедия
  • Язык программирования Рубин — Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия
  • Язык программирования Java — Java Класс языка: объектно ориентированный, структурный, императивный Появился в: 1995 г. Автор(ы): Sun Microsystems Последняя версия: Java Standard Edition 6 (1.6.14) Т … Википедия
  • Язык программирования Dylan — Dylan динамический объектно ориентированный язык программирования, нацеленный на быструю разработку программ, разработанный, прежде всего, усилиями множественное наследование, полиморфизм и многие другие функции. Язык общего назначения,… … Википедия
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *