Až na to, že já OOP považuji za filozofii, vy to považujete za technické řešení. Zkuste se na to dívat jak na filozofii. Nebo třeba jako na návrhový vzor. Tam vůbec neřešíte, zda volání zprávy vypada jako
obj1 zprava obj2
nebo
obj1.getInterface<zprava>().send(obj2)
Zapisy jsou ekvivalentni (za předpokladu, že getInterface a send jsou nástroje pro zacílení a posílání zprávy).
OOP je filozofie, kterou lze aplikovat na jakýkoliv jazyk. Technické řešení je detail.