Перейти к содержимому

План практических занятий: ООП (Python)

Среда

Python 3.11+ (для ExceptionGroup/except* в разделе исключений). Запуск: python practice_XX.py или в REPL. Доступны стандартная библиотека (abc, typing, contextlib, dataclasses).

Формат занятий

Каждая практика привязана к своей лекции (practice_NNlecture_NN) и включает:

  • Цель — что студент научится делать.
  • Краткая теория — опорные понятия лекции.
  • Задания — нарастающей сложности, со скелетами кода и требованиями (готовых решений нет — их пишет студент).
  • Критерии оценки — распределение баллов в процентах.
  • Вопросы для самопроверки.

В разделе 1 практик меньше, чем лекций (6 на 9): часть практик закрывает по несколько смежных лекций. В разделе 2 практик больше (10 на 7): паттерны и архитектура отрабатываются несколькими отдельными лабами.


Раздел 1 (6 практик)

  1. Классы и инкапсуляция — атрибуты/методы, @property, _/__, @classmethod/@staticmethod, магические методы.
  2. Наследование, полиморфизм и абстракция — иерархии, super(), перегрузка операторов, abc/@abstractmethod.
  3. SOLID на практике — рефакторинг legacy-класса по пяти принципам.
  4. Множественное наследование и миксины — MRO/C3, кооперативный super(), предсказание __mro__.
  5. Протоколы и контекстные менеджерыtyping.Protocol, делегирование, __enter__/__exit__, @contextmanager.
  6. Дескрипторы и метаклассы — поля-валидаторы, __slots__, метакласс-реестр, мини-ORM.

Раздел 2 (10 практик)

  1. Обработка исключенийtry/except/else/finally, иерархия, raise from, трассировка.
  2. Кастомные исключения и иерархии — доменные ошибки, цепочки, ExceptionGroup, обработка по слоям.
  3. Порождающие паттерны — Factory, Abstract Factory, Singleton, Builder.
  4. Структурные паттерны — Adapter, Decorator, Facade, Composite.
  5. Поведенческие паттерны — Strategy, Observer, Command (undo), Template Method.
  6. Слоистая архитектура — приложение из слоёв Presentation/Service/Data.
  7. Репозиторий и Unit of Work — интерфейс + реализации, мок, commit/rollback.
  8. Dependency Injection — внедрение через конструктор, инверсия зависимостей, DI-контейнер.
  9. MVC, MVP, MVVM — одна фича в трёх презентационных паттернах.
  10. Комплексный проект на Clean Architecture — итоговое приложение (domain → services → adapters → composition root).

Связь с экзаменом

Практики дают навыки, проверяемые практической частью экзамена (private_exam_tasks_1.md и private_exam_tasks_2.md): трассировка, реализация, рефакторинг и проектирование. Итоговая практика 16 — мини-проект, объединяющий весь материал раздела 2.