Дорогой мой, Архитектор, если ты потратишь 5 минут своего времени и взглянешь на этот пример, то будешь удачлив весь год, обещаю ;). p.s.: а так же я буду очень рад.
Дело в том, что у меня с трудом получается спроектировать структуру для приложения, но я все же сделал это, пока требования не изменились. Ниже я покажу самую краткую выжимку и скажу что поменялось..помоги!
Вроде как картинка не работает, если так, то вот ссылка на яндекс.диск -"
https://yadi.sk/i/wo4vavo8g7iuT"
Была заданна задача, которая реализована в схеме выше:
Заказчик делает заказ(CustomerOrder). В заказ входит следующая информация: заказчик(customer), дата заказа(date), задача - которую необходимо выполнить (task), примечание к заказу (note).
Этот заказ, в общем случае, разделяют на "подзаказы" (EmployeeOrder), которые раздают сотрудникам. Эти "подзаказы" так же содержат date и task, а так же сотрудника, кто делает (employee).
Должна быть возможность добавления "подзаказов" к заказу, удаления.
Задача - Task - это один из множество классов наследующий общий интерфейс.
Все получилось может быть и криво, но рабочим.
Теперь появилось дополнительное требование - к одному из видов задач, а именно "InterpretationTask", нужно добавить возможность указывать сверхурочную работу по этому заказу. Сверхурочная работа представляет собой очередной вид задачи - "OverWorkInterpretationTask".
Но вот вопрос: Куда положить и как связать эту сверхурочную работу с основным заказом. Получается сверхурочная работа имеет предпосылки стать отдельным заказом - основана на отдельном OverWorkInterpretationTask, и должна обрабатываться в программе как отдельная единица, но так же она содержит много общего да и вообще строится на основе первичного заказа - заказчик тот же, дата та же, исполнитель тот же но task другая.
Архитектор, жду твоего отклика!