Skip to content

Latest commit

 

History

History
122 lines (68 loc) · 7.8 KB

File metadata and controls

122 lines (68 loc) · 7.8 KB

Вводная часть

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

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


1. Валидаторы (Validators)

Что это: Валидаторы — это объекты или функции, которые проверяют корректность данных. Их задача — убедиться, что значение соответствует определённым правилам, прежде чем оно будет использоваться в программе.

Пример:

  • Валидатор может проверять, что строка не пустая, что число находится в диапазоне, или что формат e-mail правильный.
  • Если значение не проходит проверку, валидатор «сообщает» об этом через исключение или ошибку.

Почему важно для ООП:

  • Валидаторы часто используются в сочетании с классами для автоматической проверки данных при их сохранении или перед обработкой.

2. Хендлеры (Handlers)

Что это: Хендлер — это обработчик событий или запросов. Он получает входные данные, выполняет нужную логику и возвращает результат.

В контексте веб-приложений:

  • Хендлер запроса (Request Handler) — это функция или метод, который обрабатывает HTTP-запрос, определяет, что делать с данными и какой ответ вернуть.

Почему важно для ООП:

  • В примерах с наследованием и полиморфизмом хендлеры часто реализуются как методы классов, демонстрируя переопределение поведения и делегирование ответственности.

3. Мидлвар (Middleware)

Что это: Мидлвар — это промежуточный слой между запросом и обработкой его хендлером. Он может проверять данные, добавлять информацию, логировать действия или блокировать доступ.

Абстрактный пример:

  • Представьте конвейер: запрос проходит через несколько «станций», каждая из которых что-то делает, прежде чем запрос попадёт к основному обработчику.

4. Сериализаторы (Serializers)

Что это: Сериализатор переводит данные из одного формата в другой, например из объекта Python в JSON и обратно.

Зачем нужен:

  • Позволяет удобно передавать объекты по сети.
  • Упрощает проверку и преобразование данных при сохранении и получении.

Связь с ООП:

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

5. Вьюшки (Views)

Что это: Вьюшка — это компонент, который «видит» запрос и формирует ответ. В контексте веб-приложений это обычно класс или функция, которая решает, какую логику выполнить для конкретного URL.

Пример:

  • Класс View может иметь метод get() для обработки запроса на чтение данных и post() для создания новых данных.

Почему важно:

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

6. Пермишены (Permissions)

Что это: Пермишены — это объекты, которые проверяют, имеет ли пользователь право выполнять определённое действие.

Абстрактно:

  • Например, один пользователь может только читать данные, другой — изменять их, а третий — удалять.

Связь с ООП:

  • Пермишены часто реализуются через классы и методы, которые можно наследовать и переопределять, демонстрируя полиморфизм.

7. Аутентификация и Авторизация

Аутентификация:

  • Проверка личности пользователя (например, ввод логина и пароля).
  • «Докажи, что ты тот, кто ты есть».

Авторизация:

  • Проверка прав пользователя (что он может делать после входа).
  • «Что тебе разрешено делать».

Связь с ООП:

  • Часто реализуется через классы пользователей, роли и пермишены.
  • Методы аутентификации и авторизации могут быть переопределены или расширены через наследование.

Итог

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

  1. Видеть логику программы сквозь структуры классов.
  2. Легче понимать примеры с реальными веб-приложениями.
  3. Связывать теорию наследования с практическими задачами проверки, обработки и преобразования данных.