4 Столпа Объектно-ориентированного программирования
ООП - это парадигма, основанная на идее «объектов». Ее можно рассматривать как набор правил, которым программисты следуют при написании кода, чтобы помочь выполнить определенную задачу.
4 основных столпа — это:
- Абстракция
- Инкапсуляция
- Наследование
- Полиморфизм
Абстракция
Абстракция применяется для скрытия деталей реализации процесса. Подумайте о процессе приготовления пиццы. Вам нужно будет сделать несколько шагов, чтобы завершить процесс. К примеру:
- Раскатать тесто
- Покрыть тесто для пиццы соусом
- Натереть сыр
- Покрыть пиццу сыром
- Разогреть духовку
- Поставить пиццу в духовку
А теперь представьте, что вам пришлось бы готовить пиццу несколько раз в день для нескольких человек. Разве не было бы лучше, если бы мы могли просто нажать кнопку, которая выполняла бы весь процесс? В этом суть абстракции. Если подумать, то мы могли бы определить функцию со всеми инструкциями в ней, а затем мы можем повторно использовать эту функцию, чтобы упростить работу.
Теперь нам не нужно беспокоиться о том, как выглядит процесс приготовления пиццы. Все, что нам нужно сделать, это запустить эту функцию, и работа будет выполнена. Это отличный способ сделать код многоразовым. Поскольку вам не нужно понимать процесс, это также помогает другим разработчикам быстрее читать ваш код. Если бы нам нужно было понимать каждый процесс в коде, было бы намного сложнее. Теперь следующий столп показывает нам способ достижения абстракции.
Инкапсуляция
Инкапсуляция означает сокрытие данных. Это можно сделать, удалив доступ к частям кода и сделав его приватным. Вы можете сделать вещи более недоступными, если они не нужны. Инкапсуляция используется, чтобы скрыть состояние объекта структурированных данных внутри класса, предотвращая прямой доступ к ним неавторизованных сторон. Итак, почему мы предпочли бы такую конфиденциальность вместо того что-бы делать все глобальным. Что ж, есть несколько причин.
- Совершенно другая часть вашей программы не может неожиданно внести изменения в данные внутри объекта.
- Функциональность определяется в одном месте и только в одном месте.
- Вы не получите спагетти-код.
Это всего лишь несколько причин, по которым инкапсуляция очень важна в ООП. Мы прячем данные там, где больше ничего не требует доступа, и раскрываем только то, что необходимо. В этом вся суть инкапсуляции.
Наследование
Наследование позволяет одному объекту приобретать свойства другого объекта. Если мы знаем что-то, что необходимо в нескольких местах, с, возможно, небольшими различиями, мы можем использовать наследование для улучшения возможности повторного использования.
Наследование обычно используется с родительскими и дочерними отношениями между классами. Мы стараемся сделать код максимально взаимосвязанным. Например, если мы хотим создать животных, мы знаем, что большинство животных перемещаются по миру пешком, поэтому у нас может быть какой-то класс, который объединяет этих животных.
Основное преимущество использования наследования заключается в том, что ваш код можно использовать повторно. Мы можем избежать повторения одного и того же кода снова и снова.
Полиморфизм
Полиморфизм означает, что объекты в одной и той же цепочке наследования могут появляться в разных формах и выполнять разные функции. Мы можем использовать тот же пример класса животных, чтобы продемонстрировать, что это значит. Допустим, теперь мы хотим создать другой класс животных, таких как змея. Змеи могут иметь много общего с другими животными, но их движения определенно не похожи на многие другие.
Мы можем переопределить метод движения, чтобы сделать его более специфичным для того, что на самом деле будет делать змея. Это позволяет нам создавать объекты, которые наследуют некоторые вещи от родительского класса, но также могут изменять некоторые вещи, чтобы сделать его самостоятельным.
Это очень простое объяснение каждого из четырех столпов ООП. Следование этим правилам помогло многим программистам написать чистый объектно-ориентированный код.