Když mám objekt Test např. s metodou helloWorld(), můžu napsat (v C#):
var obj = new Test(); obj.helloWorld();
To se přeloží se statickou vazbou a překladač kontroluje existenci metody a typy. U distribuovaných objektů napíšu:
var obj = ObjectBroker.createObject("Test"); obj.helloWorld();
V tomto případě bude obj instance nějaké proxy třídy a instance třídy Test je fyzicky někde jinde (typicky na jiném počítači). Podstatné je, že zbytek kódu se nemění a ani nepotřebuju žádný interface (většinou se používá rozhraní kvůli typové kontrole, ale není nutné).
V ObjC bych napsal v obou případech [obj helloWorld], ve Smalltalku dtto (bez hranatých závorek). U vzdáleného objektu se zpráva zabalí (jméno metody se vezme z NSStringFromSelector) a pošle přes síť. V C# se zase použije InvokeMemberBinder.Name.
V C++ to takto elegantně nejde (ani v Javě).
Autor se zabývá vývojem kompilátorů a knihoven pro objektově-orientované programovací jazyky.
Přečteno 36 201×
Přečteno 25 361×
Přečteno 23 795×
Přečteno 20 177×
Přečteno 17 874×