Введение. Обзор различных парадигм языков программирования.

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

Объектно-ориентированный анализ. Выявление классов и их обязанностей.

Принципы объектно-ориентированного дизайна. SOLID, GRASP, сильное сцепление и слабая связанность.

Использование наследования. Агрегация вместо наследования.

Паттерны проектирования GoF.

Архитектуры программных систем. Монолитная архитектуры и микросервисы.

Рефакторинг как средство достижения объектно-ориентированного дизайна.