Что такое ООП

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

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

При объектно-ориентированном программировании обычно используют такие понятия, как класс и непосредственно объект. Класс — это описание объекта в виде кода. Он определяет алгоритмы, которые действуют внутри него. А вот объект надо создавать. Например, конструкцией new. И создается объект на основе класса. Если проводить аналогию с реальным миром, то, например, кот может являться классом, а вот кот Василий, кот Филимон и кот Федор — объектами, созданными на основе класса кот.

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

Наследование означает, что классы могут наследовать друг друга. Например, может существовать класс “животное”, который содержит свойства и методы, характерные для любого животного. Одним из таких методов может являться, например, метод “питаться”, а одним из свойств — свойство “масса”. Класс “кот” может быть унаследован от класса “животное” и содержать как свойства и методы, характерные для любого животного и унаследованные от класса “животное”, так и свои собственные, — к примеру, метод “мяукать”. Соответственно, и объект “кот Вася”, созданный на основе класса “кот”, будет иметь свойства и методы, характерные для класса “кот”, а также другие, унаследованные от класса “животное”.

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

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

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

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