Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы ООП - 2014.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
82.43 Кб
Скачать

Лабораторная работа 8. «Дерево объектов»

Тип приложения: GUI; язык: без ограничений.

Развитие приложения из Л.Р.7:

  • Добавить на форму приложения объект TreeView для отображения текущего содержания хранилища

  • Реализовать синхронизацию объекта TreeView с хранилищем с помощью паттерна Observer

Объект TreeView должен уметь полностью перестроить свое содержимое исходя из текущего содержимого хранилища, в котором могут в произвольных комбинациях встречаться отдельные объекты и группы объектов. Для этого нужна рекурсивная функция processNode(TreeNode tn, StorageObject o), алгоритм работы которой в общих чертах выглядит так:

processNode(TreeNode tn, StorageObject o)

{

Создай у узла дерева tn новый дочерний узел t;

Если объект o является группой, то:

Для всех объектов oo из группы o:

processNode(t, oo);

}

Объект TreeView должен автоматически узнавать, когда в хранилище происходят изменения. Для этого в рамках паттерна Observer, объект TreeView должен «подписаться» на объект Storage и, получая уведомления, перестраивать свое содержимое при любых изменениях в объекте Storage.