Názor ke článku Nerozumím... od PH - Když mám objekt Test např. s metodou helloWorld(),...

  • 24. 11. 2011 13:37

    PH (neregistrovaný)

    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.cre­ateObject("Tes­t"); 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 NSStringFromSe­lector) a pošle přes síť. V C# se zase použije InvokeMemberBin­der.Name.
    V C++ to takto elegantně nejde (ani v Javě).