Объектный интерфейс ресурса проекта |
Объектный интерфейс, описывающий обобщенный ресурс проекта, определяет общее поведение всех ресурсов, входящих в проект:
ресурс проекта должен сообщать в вышестоящий интерфейс (интерфейс-контейнер) обо всех изменениях своей стоимости;
интерфейс-контейнер должен сообщать встроенному объекту-ресурсу об изменении текущего этапа;
интерфейс-контейнер должен сообщать встроенному объекту-ресурсу о необходимости удалить все ресурсы, относящиеся к текущему этапу;
интерфейс-контейнер должен уметь спросить у встроенного объекта-ресурса есть у заданного этапа ресурсы или нет;
для перерасчета стоимости обход иерархии владельцев ресурсов должен выполнять контейнер, а непосредственно обработку ресурсов - объект-ресурс.
Как видим, он похож на объектный интерфейс ресурса. Тем не менее использовать наследование в данном случае нецелесообразно.
Сообщение об изменении стоимости ресурса передается для корректировки стоимости соответствующих этапов и для визуализации изменения стоимости этапов. Сообщение об изменении стоимости передается в контейнер (интерфейс работы с проектами) через механизм событий. Ресурс генерирует событие "изменилась стоимость" с параметром "величина изменения стоимости", а контейнер может подключить обработчик данного события. Изменение стоимости относится к текущему этапу в интерфейсе-контейнере.
Сообщение об изменении текущего этапа в интерфейсе-контейнере передается для корректного отображения ресурсов, относящихся к текущему этапу. Т.к. изменение текущего этапа происходит по инициативе интерфейса-контейнера, то сообщение передается вызовом метода объекта-ресурса "Изменился хозяин ресурсов" с параметром "NRec текущего этапа".
Сообщение о необходимости удалить все ресурсы, относящиеся к текущему этапу, передается при удалении текущего этапа. Сообщение передается вызовом метода объекта-ресурса "Удалить все ресурсы" с параметром "NRec владельца удаляемых ресурсов".
Проверка наличия ресурсов у заданного этапа потребуется для реализации разумного поведения в ряде ситуаций. Например, при удалении этапа. Проверка выполняется вызовом метода объекта-ресурса "Есть ресурсы?" с параметром "NRec владельца ресурсов".
Для перерасчета стоимости у ресурса вводится метод "Скопировать ресурсы".
Описание интерфейса ресурса проекта приведено в разделе "IPrjResources. Интерфейс к ресурсам проекта. ".