Часть 1: Вспоминаем основы С++

Цель: повтор основных элементов и синтаксиса C++.

Краткое содержание:

  • Указатели и работа с динамической памятью
  • Подпрограммы (функции / методы)
  • Модификаторы видимости
  • Структуры
  • Классы и объекты
    • Конструкторы
    • Операторы присваивания
    • Деструкторы
    • Правило "трёх" / "пяти"

Часть 2: Введение в ООП

Цель: знакомство с основными принципами ООП.

Знакомство с ключевыми принципами ООП:

  1. Инкапсуляцией;
  2. Наследование
  3. Полиморфизм

Новые элементы синтаксиса:

  • Перегрузка функций и операторов
  • Шаблоны
  • Статические члены класса
  • Дружественные функции и классы

Часть 3: Применение ООП в практическом решении задач

Цель: закрепление знаний и навыков, полученных на прошлых занятиях. Задания для самостоятельной работы:

  • Задача 1: Система поиска по документам и файлам;
  • Задача 2: Система бронирования отелей.

Часть 4: Паттерны проектирования

Принципы проектирования:

MVC (Model-View-Controller)

MVC разделяет приложение на три компонента: Model, View и Controller. Модель отвечает за управление данными и бизнес-логику, Вид отображает интерфейс пользователю, а Контроллер обрабатывает пользовательский ввод и взаимодействует с Моделью и Видом. Этот паттерн используется для того, чтобы отделить логику приложения от его интерфейса, повышая масштабируемость и удобство поддержки продукта в будущем.

Задача: разработать систему управления каталогом товаров.

  1. Упрощенный вариант (консольное приложение):

    • Создать консольное приложение, позволяющее пользователям управлять каталогом товаров.
    • Модель хранит данные о товарах (название, цена, количество).
    • Контроллер обрабатывает ввод пользователя.
    • Вид отображает данные в консоли.
  2. Усложненный вариант (GUI с использованием Qt):

    • Приложение с графическим интерфейсом, где пользователи могут просматривать и редактировать товары.
    • Модель хранит данные в виде списка.
    • Вид предоставляет интерфейс на основе Qt, позволяющий управлять товарами через формы и таблицы.

Порождающие паттерны

Фабричный метод

Паттерн Фабричный Метод определяет интерфейс создания объекта, но позволяет субклассам выбрать класс создаваемого экемпляра. Таким образом, Фабричный Метод делегирует операцию создания экземпляра субклассам.

  • Одиночка
  • Прототип

Структурные паттерны

Адаптер

Паттерн Адаптер используется для преобразования интерфейса одного класса в интерфейс, ожидаемый клиентом. Адаптер позволяет классам с несовместимыми интерфейсами работать вместе.

  • Компоновщик
  • Декоратор

Поведенческие паттерны

Наблюдатель

Паттерн Наблюдатель определяет отношение "один ко многим" между объектами таким образом, что при изменении состояния одного объекта происходит автоматическое оповещение и обновление всех зависимых объектов.

  • Стратегия
  • Состояние

Часть 5: Проверка усвоенного материала

В качестве финального задания курса, необходимо разработать программу в соответствии с номером варианта, который определяется по формуле: номер зачетки % {кол-во вариантов} + 1.

Задания могут быть выполненны в обычном и усложненном варианте. Обычный вариант - консольная программа. Для усложненного варианта необходимо реализовать графический интерфейс с использованием Qt или ImGui.