Лабораторная работа 8. «Дерево объектов»
Тип приложения: GUI; язык:
без ограничений.
Развитие приложения из Л.Р.7:
Объект TreeView должен уметь
полностью перестроить свое содержимое
исходя из текущего содержимого хранилища,
в котором могут в произвольных комбинациях
встречаться отдельные объекты и группы
объектов. Для этого нужна рекурсивная
функция processNode(TreeNode
tn, StorageObject
o), алгоритм работы которой
в общих чертах выглядит так:
processNode(TreeNode
tn, StorageObject o)
{
Создай
у узла дерева tn
новый дочерний узел t;
Если
объект o
является группой, то:
Для
всех объектов oo
из группы o:
processNode(t,
oo);
}
Объект TreeView должен
автоматически узнавать, когда в хранилище
происходят изменения. Для этого в рамках
паттерна Observer, объект
TreeView должен «подписаться»
на объект Storage и, получая
уведомления, перестраивать свое
содержимое при любых изменениях в
объекте Storage.