Погружение в одну из самых сложных и запутанных концепций веб-разработки.

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

Если вы еще не прочитали первую статью, не беспокойтесь. Кратко подведем итог тому, что мы там узнали.

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

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

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

В ООП все функции и данные инкапсулируются в виде «объектов». Объекты относительно независимы и взаимодействуют друг с другом по определенным правилам.

Внутри объектов мы можем хранить данные как «свойства». Например, объект user может иметь свойство с именем name со строковым значением "Jane". Что касается функций, они также хранятся внутри объектов и называются в этом контексте «методами». Свойство user может иметь метод sendEmail(), который отправляет электронное письмо определенному пользователю.

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

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

Что такое классы?

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

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

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

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

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

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

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

Занятия на практике

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

Представьте, что вы создаете интернет-магазин с системой скидок. Это означает, что вы, вероятно, часто будете общаться с постоянными клиентами. Нам нужно будет создать класс, который поможет нам привлекать новых клиентов. В этом случае мы создадим класс с именем Customer с name, age и доставкой по умолчанию address:

В приведенном выше коде вы увидите, что ключевое слово self повторяется несколько раз. В Python это используется как часть инициализации класса и выходит за рамки этого простого введения. Пока достаточно просто скопировать формат, который мы используем.

Мы также добавили сюда две строчки. В первой строке объявляется переменная класса счетчика: customer_count = 0. Вторая строка будет увеличивать этот счетчик каждый раз, когда создается новый экземпляр класса Customer: Customer.customer_count += 1. Этот счетчик не является обязательным, но может быть весьма полезным. Мы можем ссылаться на эту переменную, чтобы проверить, сколько экземпляров нашего класса мы создали.

Если все это слишком технически, давайте разберемся дальше. На простом английском языке приведенный выше код говорит: «Это класс для клиентов. У него три свойства: name, age и доставка address. '

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

Что дальше?

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

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

В Practicum by Yandex мы предлагаем онлайн-обучение и наставничество, чтобы помочь вам сделать карьеру в сфере высоких технологий. Вы углубитесь в интересные темы, такие как ООП, веб-разработка, наука о данных и многое другое. Кроме того, вы будете делать это, работая в прекрасной и благоприятной среде как со сверстниками, так и с наставниками.