Skip to content
/ OOP Public

IU7 4 - semester Object Oriented Programming

Notifications You must be signed in to change notification settings

Neratus/OOP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OOP

IU7 4 - semester Object Oriented Programming

Лабораторные работы:

Лабораторная работа # 1

"Каркасный 3d viewer"

Реализовать 3d-viewer для просмотра трехмерных фигур.

Действия над фигурой:

  • смещение
  • масштабирование
  • поворот

Используется правила структурного программирования, основные:

  • Не дублировать код;
  • Зависимых подзадач не должно быть больше 7;
  • Глубина вложенностей конструкций не должны быть больше 3;
  • if then - короткий, else - длинный;
  • Из цикла один выход;
  • Ресурсы выделять и освобождать на одном уровне абстракции
  • Если функция не может выполниться, она не должна закладывать ресурсы
  • goto запрещён.
  • Интерфейсный домен (форма с компонентами) - среда любая;
  • Если константа может быть вычислена на этапе компиляции, то ее можно записывать в заголовочном файл .h, иначе когда константа вычисляется во время выполнения, объявлять ее в заголовочном файле - нельзя.

Параметры:

  • выходные;
  • изменяемые;
  • остальные

Обязательно используем алиасы для передачи параметров везде, где это возможно, например type_t &t.

Если параметр - входной, пишем модификатор const; Изменяемый отличается от выходного тем, что первый - инициализирован при передачи в функцию; Выходной параметр - должен быть инициализирован для внешней стороны, но считаться неинициализирован для самой функции. Общее

Если функция не может выполнится (rc != 0) данные (изменяемые и выходные переменные) менять нельзя; Нельзя возвращать ссылку на локальную переменную, т.к. она разрушится в стеке после выхода из функции; Стремиться уменьшать количество параметров, передаваемых в функцию; Обязательно сразу инициализировать при определении (использование непроинициализированных переменных опасно).

Лабораторная работа # 2

Варианты ЛР2

  • 1 - матрица
  • 2 - односвязанный список прямого доступа
  • 3 - вектор
  • 4 - множество Вариант можно уточнить у преподавателя (идут циклично по нашим спискам). В каждом варианте можно добыть +1 балл за корректное использование ranges

Дополнительный вариант - хеш-таблица. Принимается у первых 5 человек в каждой группе и дает +3 балла по сравнению с обычным вариантом. Условие для хеш-таблицы:

  • при конфликтах - связный список
  • ranges
  • метод для вычисления load factor
  • перестройка таблицы при превышении порога load factor

Лабораторная работа # 3

"Каркасный 3D viewer - ООП"

!! Внимание !! - код не проверен Тассовым, заимствовать осторожно

Переализовать первую лабораторную работу, используя объектно-ориентированное программирование.

Построить модель, которую можно было бы модифицировать, не изменяя написанный код. Надо проектировать таким образом, чтобы продумывать дальнейшую модификацию - выделять абстракции. Появится много посредников, поскольку потребуется разделение обязанностей - один объект иожет выполнять несколько ролей. Надо сразу проектировать таким образом, чтобы в дальнейшем использовать в курсовой работе. Работа лабораторной состоит из двух задач:

Сделать диаграмку для написания программы (нужно отвердить ее, потом приступать к написанию кодв) Написать код программы по диаграмме

Лабораторная работа # 4

Написать программу эммулирующую работу лифта, выделить основные сущности для работы лифта и построить ДПС и ТПС(желательно). Учесть, что состояние должны соотвествовать днаписанной диаграмме и работать, так чтобы каждое событие выполгняло один переход в нудное соотношение.

Доп задания:

  • кнопки вверх и вниз
  • два параллельных лифта на один пулл вызовов

Лабораторная работа # 5

"Диаграммы работоспособности электроприбора"
Пример: пылесос.

Материалы

Материалы по ООП от Кирилла Леонидовича:

Ссылка на видео лекций 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]

About

IU7 4 - semester Object Oriented Programming

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published