Объектно-ориентированное программирование: основы и принципы

Объектно-ориентированное программирование: основы и принципы

Что нужно знать об ООП.

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

Например, у автомобиля есть характеристики: модель, цвет, год выпуска, объем двигателя. Если нам нужно создать объект Car, эти характеристики будут его атрибутами. Для каждой новой машины код исходного объекта car будет использоваться повторно.

Рассказываем о принципах и типах ООП.

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

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

Часто классы — это широкие категории (например, «автомобиль» или «собака»), у которых есть общие атрибуты. К примеру, среди атрибутов класса «автомобиль» — марка и цвет. Задача классов — определить, какие атрибуты будет иметь экземпляр. Классы также могут содержать функции (методы), доступные только объектам этого типа. Самые популярные объектно-ориентированные языки — Java, C++, C#, Python и JavaScript.

Языки ООП

  • Java — одна из особенностей языка в том, что его код сначала транслируется в специальный байт-код, независимый от платформы. Потом он выполняется виртуальной машиной JVM (Java Virtual Machine). В ООП в Java данные хранятся в атрибутах — это переменные, связанные с конкретными объектами.
  • Python — универсальный язык, который чаще всего используют в машинном обучении и науке о данных.
  • C++ — строго типизированный язык программирования общего назначения. Он используется для создания компиляторов и интерпретаторов для других языков.
  • Ruby — создан как язык программирования общего назначения. Он высокоуровневый (в нем много абстракций), динамичный (типы данных определяются во время выполнения программы, что увеличивает скорость) и интерпретируемый (его не нужно компилировать в машинный код). Детальнее о нем мы писали здесь.
  • C# — язык, который разработали для улучшения существующих концепций C. Он поддерживает платформу Microsoft.NET вместе со многими веб-приложениями, играми, настольными и мобильными приложениями.

Также ООП поддерживает и другие языки. Например, Perl, Objective-C, Dart, Lisp, JavaScript и PHP.

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

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

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

    Представим, что есть несколько объектов класса «машина» с параметром «количество бензина в баке». Разработчик не может сделать так, чтобы информация о количестве бензина могла напрямую использоваться кем-то/чем-то, кроме самой машины (например, она может подать сигнал о нехватке топлива, но остальные автомобили на дороге не могут самостоятельно узнать, сколько бензина в баках других машин).

    Это количество может поменяться только с помощью специального метода «машина.заправка_бензином()».

  • Абстракция

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

    Возьмем пример, связанный с компьютерной игрой. Метод Attack может содержать много строк кода. Этот код указывает, как героя можно атаковать и как атака повлияет на его здоровье. Вражескому объекту не нужно знать, как работает атака. Достаточно того, что она ухудшит показатели героя.

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

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

    Если в родительском классе определены базовые атрибуты и поведение, то создавать дочерние классы можно, добавляя эти атрибуты.

    Например, пастушьи собаки обладают уникальной способностью пасти животных. Все пастушьи собаки — собаки, но не все собаки — пастушьи. Для этого различия создается дочерний класс HerdingDog из родительского класса Dog, а затем добавляется уникальное поведение herd ().

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

  • Полиморфизм

    Это проектирование объектов, разделяющих поведение.

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

    Например, в игре у каждого из врагов может быть метод Attack, который он наследует от родителя, но каждый — со своей собственной реализацией.

 

Ещё статьи
Как системы работают с высокими нагрузками.
Зачем нужны библиотеки для векторизации.