Курс: Объектно-ориентированное программирование (Python)
Целевая аудитория
Студенты, владеющие основами Python (переменные, функции, коллекции). Опыт ООП не обязателен.
Цель курса
Освоить объектно-ориентированное программирование на Python — от базовых понятий (классы, инкапсуляция, наследование) до продвинутых механизмов языка (дескрипторы, метаклассы) и проектирования приложений (исключения, паттерны, архитектура).
Структура
Курс разбит на 2 раздела. Раздел 1 — 9 лекций и 6 практик, раздел 2 — 7 лекций и
10 практик. Лекции рассчитаны на пару ~1ч30м. Практики (practice_NN) закрепляют
материал соответствующих лекций.
Раздел 1. Основы и продвинутый ООП (9 лекций, 6 практик)
Лекции
- Классы, объекты и инкапсуляция
- Наследование и полиморфизм
- Абстракция и абстрактные классы (ABC)
- Принципы SOLID
- Множественное наследование, MRO и миксины
- Протоколы, утиная типизация и композиция vs наследование
- Контекстные менеджеры и управление ресурсами
- Модель атрибутов и дескрипторы
- Метаклассы и метапрограммирование
Практики
- Классы и инкапсуляция (к лекциям 1)
- Наследование, полиморфизм и абстракция (к лекциям 2–3)
- SOLID на практике — рефакторинг legacy-кода (к лекции 4)
- Множественное наследование и миксины (к лекции 5)
- Протоколы и контекстные менеджеры (к лекциям 6–7)
- Дескрипторы и метаклассы (к лекциям 8–9)
Раздел 2. Исключения, паттерны и архитектура (7 лекций, 10 практик)
Лекции 10. Обработка исключений: основы и иерархия 11. Кастомные исключения, цепочки и группы 12. Паттерны проектирования (GoF) 13. Слоистая архитектура приложений 14. Репозиторий, Unit of Work и Dependency Injection 15. Презентационные паттерны: MVC, MVP, MVVM 16. Clean Architecture и структура приложения
Практики 7. Обработка исключений (к лекции 10) 8. Кастомные исключения и иерархии (к лекции 11) 9. Порождающие паттерны (к лекции 12) 10. Структурные паттерны (к лекции 12) 11. Поведенческие паттерны (к лекции 12) 12. Слоистая архитектура (к лекции 13) 13. Репозиторий и Unit of Work (к лекции 14) 14. Dependency Injection (к лекции 14) 15. MVC, MVP, MVVM (к лекции 15) 16. Комплексный проект на Clean Architecture (к лекции 16, итоговый)
Материалы курса
| Файл | Назначение |
|---|---|
lecture_01.md–lecture_16.md | Конспекты лекций |
practice_01.md–practice_16.md | Практические работы |
exam_questions_1.md, exam_questions_2.md | Вопросы к экзаменам 1 и 2 (без ответов) |
private_exam_answers_1.md, private_exam_answers_2.md | Вопросы с ответами (экз. 1 и 2) |
private_exam_tasks_1.md, private_exam_tasks_2.md | Практические задачи с решениями (экз. 1 и 2) |
private_exam_tickets_1.md, private_exam_tickets_2.md | Экзаменационные билеты (экз. 1 и 2) |
private_tests.md | Тесты |
Форма контроля
Курс длинный, поэтому предусмотрено два экзамена (по одному на раздел). Каждый
экзамен имеет полный комплект: вопросы (exam_questions_N.md), вопросы с ответами
(private_exam_answers_N.md), практические задачи (private_exam_tasks_N.md) и
билеты (private_exam_tickets_N.md). Билет — теоретический вопрос плюс практическая
задача.