При разработке всякого частенько стоит выбор разных способов управления программными объектами: использовать методы или же рассылку сообщений. Методы проще и вроде бы нагляднее, но сообщения позволяют не ломать интерфейс каждый раз при добавлении новых возможностей.

И есть нужда различать эти способы методологически правильно, чтобы не ошибиться при проектировании. В разговорах-обсуждениях возникает такая логическая цепочка:

1) Мы имеем дело с программными системами.
2) Программные системы состоят из программных объектов (это не совсем ООП-объекты, а скорее, конструктивные элементы)
3) Чтобы система стала системой, эти самые объекты должны как-то взаимодействовать между собой.
4) Взаимодействие объектов можно рассматривать как коммуникационные акты, передачу и получение информации (что, в общем-то, в реальности и происходит)
5) Коммуникационные акты можно разбить на две категории - прямой и косвенный.

Прямое общение происходит путём использования методов, а прямым его можно назвать потому, что объекты непосредственно "видят" друг друга.

Косвенное общение происходит посредством сообщений, как например, по Generic Message Bus сообщение проходит по всем вложенным в друг друга виджетам, покуда его не обработает адресат.

И вот почему-то так получается, что использовать такие понятия при проектировании становится удобно. Как только есть подозрение, что объекты не смогут общаться непосредственно, так сразу же применяем сообщения.

Гугление на эту тему не даёт результатов, почему-то. Может быть, кто-нибудь встречал тексты про коммуникации программных объектов именно в данном разрезе?