Часть 1: Вспоминаем основы С++
Цель: повтор основных элементов и синтаксиса C++.
Краткое содержание:
- Указатели и работа с динамической памятью
- Функции / методы
- Модификаторы видимости
- Структуры
- Классы и объекты
- Конструкторы / деструкторы, листы инициализации
Часть 2: Введение в ООП
Цель: знакомство с основными принципами ООП.
Знакомство с ключевыми принципами ООП:
- Инкапсуляцией;
- Наследование
- Полиморфизм
Новые элементы синтаксиса:
- Дружественные функции и классы
- Статические члены класса
- Перегрузка функций и операторов
- Шаблоны
Часть 3: Применение ООП в практическом решении задач
Цель: закрепление знаний и навыков, полученных на прошлых занятиях.
Часть 4: Паттерны проектирования (3-4 занятия)
Принципы проектирования:
MVC (Model-View-Controller)
MVC разделяет приложение на три компонента: Model
, View
и Controller
. Модель отвечает за управление данными и бизнес-логику, Вид отображает интерфейс пользователю, а Контроллер обрабатывает пользовательский ввод и взаимодействует с Моделью и Видом. Этот паттерн используется для того, чтобы отделить логику приложения от его интерфейса, повышая масштабируемость и удобство поддержки продукта в будущем.
Задача: разработать систему управления каталогом товаров.
-
Упрощенный вариант (консольное приложение):
- Создать консольное приложение, позволяющее пользователям управлять каталогом товаров.
- Модель хранит данные о товарах (название, цена, количество).
- Контроллер обрабатывает ввод пользователя.
- Вид отображает данные в консоли.
-
Усложненный вариант (GUI с использованием Qt):
- Приложение с графическим интерфейсом, где пользователи могут просматривать и редактировать товары.
- Модель хранит данные в виде списка.
- Вид предоставляет интерфейс на основе Qt, позволяющий управлять товарами через формы и таблицы.
MVP (Model-View-Presenter)
MVP схож с MVC, но отличается тем, что вся логика управления сосредоточена в Presenter
. Модель отвечает за данные и логику приложения, Вид — за отображение интерфейса, а Презентер связывает их, обеспечивая взаимодействие.
Задача: система управления заявками на ремонт.
-
Упрощенный вариант (консольное приложение):
- Создать консольное приложение для создания и управления заявками.
- Модель хранит информацию о заявках.
- Презентер обрабатывает взаимодействие между моделью и представлением.
-
Усложненный вариант (GUI с использованием Qt):
- Приложение с графическим интерфейсом для управления заявками.
- Модель и Презентер обеспечивают корректное взаимодействие с пользователем.
Порождающие паттерны
Фабричный метод
Задача: создать систему для логистической компании, которая генерирует транспортные средства.
- Абстрактный класс транспортного средства.
- Реализация создания грузовика, самолета и корабля через фабричный метод.
- Одиночка
- Прототип
Структурные паттерны
Адаптер
Задача: интеграция старой платежной системы с новым API.
- Старый интерфейс для операций с оплатами и балансом.
- Создать адаптер, позволяющий новому API работать с устаревшей системой.
- Компоновщик
- Декоратор
Поведенческие паттерны
Наблюдатель
Задача: создать систему уведомлений для пользователей новостного сайта.
- Подписчики получают уведомления о новых новостях.
- При добавлении новости все подписчики должны быть уведомлены.
- Стратегия
- Состояние
Часть 5: Проверка усвоенного материала
- Моделирование магазина добавление и удаление товаров.
- Управление транспортом учет транспортных средств и пробега.
- Банковская система: управление счетами через текстовый интерфейс.
- Игра "Крестики-нолики".
Задания могут быть выполненны в обычном и усложненном варианте. Обычный вариант - консольная программа. Для усложненного варианта необходимо реализовать графический интерфейс с использованием Qt или ImGui.