Всем привет!
Занялся разработкой программы, представляющей собой некое расписание дня преподавателя с БД. Планируется создать сущность Day и его наполнять объектами класса Lesson, которые содержат в себе время начала и продолжительность (Уроки могут быть разной длины). Вопрос заключается в реализации класса Day, а именно, как размещать в нем Lesson, чтобы не было накладок урока на урок, при этом всем между уроками может быть свободное время.
А почему именно Day должен содержать массив Lesson? То есть он должен отвечать и за хранение уроков и за контроль правильного распределения уроков в течении дня, а ещё за перерывы. Больше похоже на god объект. Возможно стоит ввести какой нибудь scheduler, который возьмёт на себя обязанности по контролю времени уроков и свободным временем. А Day рассматривать как просто свойство.
Непонятно с чем у вас проблема. Если задача просто избегать накладок, то сделайте в методе добавления урока в день проверку, что начало одного урока не меньше конца другого. Если нужно набить в один день как можно больше учебных часов без перекрытия, то подойдёт жадный алгоритм календарного планирования. Если между уроками есть зависимости, то топологическая сортировка.