Репозиторий с лабораторными работами по курсу ООП.
Каждая работа — это отдельное приложение, демонстрирующее различные концепции: от классических матриц до графического редактора.
Все gif-файлы и скриншоты хранятся в папке
/media.
oop-discipline/
├── challenge-road/ # Интерактивный квест с испытаниями
├── circle-canvas/ # Редактор кругов (клик-,ресайз-тест)
├── matrix-hierarchy/ # Иерархия классов для работы с матрицами
├── mvc/ # Приложение на MVC (A ≤ B ≤ C)
├── shape-editor/ # Редактор графических фигур
├── media/ # GIF-демонстрации
└── .gitignore
Папка: /challenge-road
Набор заданий, объединённых в квест: перетаскивание кнопки, ввод данных, работа с датой/временем, системы счисления, клик-тест, набор текста на скорость, изменение размера окна.
✨ Подробнее о заданиях
| Этап | Задание |
|---|---|
| 0 | Перетащить кнопку в зону сброса |
| 1 | Заполнить профиль (имя, возраст, пол) |
| 2 | Выбрать текущие дату/время |
| 3 | Перевести DEC→BIN и DEC→OCT |
| 4 | Кликнуть правой кнопкой по области |
| 5 | Повторить случайный текст за 30 секунд |
| 6 | Изменить размер окна до целевых значений |
| 7 | Финиш |
Папка: /circle-canvas
Приложение для создания и управления кругами. Демонстрирует работу с графикой (QPainter), событиями мыши/клавиатуры и шаблонным контейнером.
Возможности:
- 🖱️ Левая кнопка — создать круг
- 🔴 Клик по кругу — выделить (красный)
- 🔵 Наведение курсора — подсветка (синий)
- 🧹
Delete— удалить выделенные круги - ➕
Ctrl + клик— множественное выделение
Папка: `/matrix-hierarchy``
Полноценная ООП-иерархия: базовый класс Matrix и производный SquareMatrix.
📐 Демонстрируемые концепции
- Шесть видов конструкторов (включая копирования/перемещения)
- Перегрузка операторов (на примере
operator<<) - Виртуальные методы (
transpose,resize) - Правило "трёх" (деструктор, копирование, присваивание)
- Шаблонный класс
MatrixCalculator - Класс-обёртка
MatrixWrapper
Папка: /mvc
Приложение, реализующее паттерн MVC. Поддерживает правило A ≤ B ≤ C. Данные синхронизируются между тремя типами виджетов: QLineEdit, QSpinBox, QSlider.
Что показывает:
- 📊 Чёткое разделение ответственности
- 🔄 Синхронизация данных через сигналы/слоты
- 💾 Сохранение состояния через
QSettings - ✅ Валидацию ввода и защиту от рекурсии
Папка: /shape-editor
Графический редактор фигур.
✏️ Функциональность
Поддерживаемые фигуры:
- ➖ Линия
- 📐 Прямоугольник
- 🟦 Квадрат
- 🟢 Круг
- 🟡 Эллипс
- 🔺 Треугольник
Действия:
- Выделение (одиночное/множественное через
Ctrl) - Перемещение
- Изменение размера (8 хендлов)
- Заливка цветом
- Групповые операции: выделить всё/по типу, удалить
Ты абсолютно прав! Нужно учесть и консольное приложение (matrix-hierarchy), и установку зависимостей для WSL/Linux. Вот исправленный раздел:
# Qt 6 (для графических проектов)
sudo apt update
sudo apt install qt6-base-dev qt6-tools-dev qt6-network-dev qt6-sql-dev
# Компилятор и утилиты
sudo apt install build-essential make g++
# Дополнительные библиотеки (при необходимости)
sudo apt install libgl1-mesa-dev libglu1-mesa-devСпособ 1 — Qt Creator (рекомендуется):
- Открыть файл
.proв Qt Creator - Нажать Build → Run (
Ctrl+R)
Способ 2 — командная строка:
cd <папка_проекта> # например, cd shape-editor
qmake6 # или просто qmake
make
./<название_программы>Сборка и запуск:
cd matrix-hierarchy
g++ -std=c++17 main.cpp -o matrix-hierarchy
./matrix-hierarchyИли с Makefile (если есть):
cd matrix-hierarchy
make
./matrix-hierarchy# Установка зависимостей (один раз)
sudo apt install qt6-base-dev build-essential
# Сборка графических проектов
for proj in challenge-road circle-canvas mvc shape-editor; do
cd $proj
qmake6 && make
cd ..
done
# Сборка консольного проекта
cd matrix-hierarchy
g++ -std=c++17 main.cpp -o matrix-hierarchy
cd ..| Проблема | Решение |
|---|---|
qmake6: command not found |
Установите qt6-base-dev или используйте qmake |
cannot find -lGL |
sudo apt install libgl1-mesa-dev |
| Графическое окно не открывается в WSL | Убедитесь, что установлен WSLg, или запустите через export DISPLAY=:0 |
Qt_6 not found |
Установите точную версию: sudo apt install qt6-base-dev |



