Объектно-ориентированный анализ и проектирование¶
О курсе¶
Курс о том, как из требований вырастает модель предметной области и как эта модель превращается в код, который переживает вторую итерацию.
Понятия курса языконезависимы: класс, инкапсуляция, полиморфизм существуют в любом объектном языке. C# взят как основной язык примеров по знакомости аудитории; Python, TypeScript и другие появляются там, где конструкция языка показывает понятие с новой стороны — множественное наследование, метаклассы, структурная типизация.
Терминология — по глоссарию GoF («Приёмы объектно-ориентированного проектирования»), каталог запахов кода — по классификации Refactoring.Guru, приёмы рефакторинга — по Фаулеру.
Программа¶
| Раздел | Лекции |
|---|---|
| 1. Основы и принципы ООП | Объектная модель, Архитектура и рефакторинг |
| 2. Моделирование на языке UML | Диаграммы классов, Последовательности и состояния |
| 3. Шаблоны проектирования (GoF) | Порождающие, Структурные, Поведения |
| 4. Шаблоны корпоративных приложений | Шаблоны корпоративных приложений |
К каждому разделу есть материалы для самостоятельной работы — они в меню слева помечены «Самостоятельно». По ним предусмотрены письменный отчёт и код в репозитории.
Что ожидается в сдаче работ¶
Помимо кода в каждой работе должны быть:
- диаграммы (классов, последовательностей, состояний) в текстовом виде — PlantUML или Mermaid, а не только картинки;
- краткое обоснование принятых проектных решений в
README.mdработы; - код, отражающий спроектированную модель, а не написанный отдельно от неё.
Почему диаграммы текстом
Их видно в diff'е, по ним можно оставить построчный комментарий при проверке, и они не устаревают отдельно от кода. Экспорт в PNG — по желанию, рядом с исходником.
Литература¶
- Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приёмы объектно-ориентированного проектирования. Паттерны проектирования.
- Фаулер М. Рефакторинг. Улучшение проекта существующего кода.
- Фаулер М. Шаблоны корпоративных приложений.
- Мартин Р. Чистая архитектура.