Skip to content

EpicWhal3/CreationalPatterns

Repository files navigation

Educational Program Builder

Учебный проект на C#, посвящённый моделированию конструктора образовательных программ.
Основной фокус работы — объектно-ориентированное проектирование, применение SOLID/GRASP, порождающих паттернов и покрытие ключевой бизнес-логики тестами.

О проекте

В рамках лабораторной реализована предметная область системы, в которой можно создавать и редактировать:

  • пользователей;
  • лабораторные работы;
  • лекционные материалы;
  • предметы;
  • образовательные программы.

Проект построен вокруг доменной модели с авторством, поддержкой создания сущностей на основе уже существующих объектов и in-memory репозиториями для хранения и поиска.

Что реализовано

  • модель пользователя с идентификатором и именем;
  • лабораторные работы с описанием, критериями оценивания и количеством баллов;
  • лекционные материалы с описанием и контентом;
  • предметы со списками лабораторных и лекционных материалов;
  • образовательные программы со списком предметов по семестрам и руководителем программы;
  • создание новых сущностей на основе уже существующих;
  • сохранение ссылки на исходную сущность при копировании;
  • ограничения на изменение сущности только её автором;
  • проверки доменных инвариантов, включая суммарное количество баллов по предмету;
  • in-memory репозитории для хранения объектов и поиска по идентификатору;
  • unit-тесты для ключевых сценариев.

Архитектурные особенности

В реализации использован подход с акцентом на чистую доменную модель и разделение ответственности между объектами.

Проект демонстрирует:

  • применение порождающих паттернов для создания сущностей;
  • использование прототипирования/копирования для создания объектов на основе существующих;
  • инкапсуляцию бизнес-ограничений внутри доменной логики;
  • отказ от прямого “ручного” конструирования сложных сущностей в пользу фабрик/билдеров и абстракций;
  • отсутствие необходимости повторно задавать автора при работе через соответствующие абстракции создания.

Бизнес-правила

  • сущность может изменять только её автор;
  • копия сущности должна хранить идентификатор исходного объекта;
  • количество баллов лабораторной работы остаётся неизменным при редактировании;
  • для предмета с экзаменом и набором работ суммарное количество баллов должно составлять 100;
  • у предмета сохраняется логика разных форм аттестации: экзамен и зачёт.

Тестирование

Покрыты основные сценарии, в том числе:

  • попытка изменить сущность не её автором;
  • создание сущности на основе существующей с сохранением ссылки на исходник;
  • ошибка при создании предмета с некорректной суммой баллов.

About

A model of an educational program constructor with domain entities, authorship, object copying, and in-memory repositories.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages