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