IU7 4 - semester Object Oriented Programming
"Каркасный 3d viewer"
Реализовать 3d-viewer для просмотра трехмерных фигур.
Действия над фигурой:
- смещение
- масштабирование
- поворот
Используется правила структурного программирования, основные:
- Не дублировать код;
- Зависимых подзадач не должно быть больше 7;
- Глубина вложенностей конструкций не должны быть больше 3;
- if then - короткий, else - длинный;
- Из цикла один выход;
- Ресурсы выделять и освобождать на одном уровне абстракции
- Если функция не может выполниться, она не должна закладывать ресурсы
- goto запрещён.
- Интерфейсный домен (форма с компонентами) - среда любая;
- Если константа может быть вычислена на этапе компиляции, то ее можно записывать в заголовочном файл .h, иначе когда константа вычисляется во время выполнения, объявлять ее в заголовочном файле - нельзя.
Параметры:
- выходные;
- изменяемые;
- остальные
Обязательно используем алиасы для передачи параметров везде, где это возможно, например type_t &t.
Если параметр - входной, пишем модификатор const; Изменяемый отличается от выходного тем, что первый - инициализирован при передачи в функцию; Выходной параметр - должен быть инициализирован для внешней стороны, но считаться неинициализирован для самой функции. Общее
Если функция не может выполнится (rc != 0) данные (изменяемые и выходные переменные) менять нельзя; Нельзя возвращать ссылку на локальную переменную, т.к. она разрушится в стеке после выхода из функции; Стремиться уменьшать количество параметров, передаваемых в функцию; Обязательно сразу инициализировать при определении (использование непроинициализированных переменных опасно).
Варианты ЛР2
- 1 - матрица
- 2 - односвязанный список прямого доступа
- 3 - вектор
- 4 - множество Вариант можно уточнить у преподавателя (идут циклично по нашим спискам). В каждом варианте можно добыть +1 балл за корректное использование ranges
Дополнительный вариант - хеш-таблица. Принимается у первых 5 человек в каждой группе и дает +3 балла по сравнению с обычным вариантом. Условие для хеш-таблицы:
- при конфликтах - связный список
- ranges
- метод для вычисления load factor
- перестройка таблицы при превышении порога load factor
"Каркасный 3D viewer - ООП"
!! Внимание !! - код не проверен Тассовым, заимствовать осторожно
Переализовать первую лабораторную работу, используя объектно-ориентированное программирование.
Построить модель, которую можно было бы модифицировать, не изменяя написанный код. Надо проектировать таким образом, чтобы продумывать дальнейшую модификацию - выделять абстракции. Появится много посредников, поскольку потребуется разделение обязанностей - один объект иожет выполнять несколько ролей. Надо сразу проектировать таким образом, чтобы в дальнейшем использовать в курсовой работе. Работа лабораторной состоит из двух задач:
Сделать диаграмку для написания программы (нужно отвердить ее, потом приступать к написанию кодв) Написать код программы по диаграмме
Написать программу эммулирующую работу лифта, выделить основные сущности для работы лифта и построить ДПС и ТПС(желательно). Учесть, что состояние должны соотвествовать днаписанной диаграмме и работать, так чтобы каждое событие выполгняло один переход в нудное соотношение.
Доп задания:
- кнопки вверх и вниз
- два параллельных лифта на один пулл вызовов
"Диаграммы работоспособности электроприбора"
Пример: пылесос.
Материалы по ООП от Кирилла Леонидовича:
Ссылка на видео лекций 2025г.: https://www.youtube.com/playlist?list=PLZ8Sl-GV4E_X7SAhECZDR8mH9g_iCYcE1
Ссылка на примеры к лекциям 2024г.: https://cloud.mail.ru/public/92Nu/yr4TWjZDJ
Ссылка на паттерны проектирования: https://y2kot.gitbook.io/untitled
Еще больше паттернов: https://refactoring.guru/ru
Wiki - [TODO]