Вот есть, например такая "пирамида": класс А включает в себя объекты класса В, В вкл в себя объекты класса С, С включает в себя объекты класса D. Как грамотно и по-научному послать сообщение от объекта класса D "наверх" к объекту класса А(например, если у D что-то произошло, то он должен тут-же оповестить об этом A)? За время обдумывания проблемы появилась лишь по-моему не очень удачная идея вызвать из D глобальную функцию, которая вызовет соответствующий метод A... Подразумеваю, что можно помудрить с сообщениями, но каких-то конкретных мыслей нет

Буду признателен, если подкините идеи, как это осуществить! Заранее благодарю!
... согласно пророчеству