Remote Objects sind, wie der Name schon sagt, entfernte Objekte, die eine Form von Daten darstellen, die sich nicht auf dem lokalen, sondern einem entfernten Rechner befinden. Die Verbindung zu einem entfernten Rechner muß physikalisch hergestellt werden. Die Rechner müssen sich aber auch auf einer logischen Ebene verständigen können. Was nichts anderes heißt, als daß sie die gleiche Sprache sprechen müssen. Diese Funktion übernimmt CORBA.
Der Unterschied zwischen nahen und fernen Objekten besteht in der Art des Zugriffs, den man auf ein Objekt hat. Nahe Objekte teilen sich den gleichen Speicher. Ferne Objekte sind auf Kommunikationsprotokolle angewiesen (CORBA, TCP, IP). Eine Manipulation der Datenbereiche von entfernten Objekten ist nicht erlaubt.
Um bei einem entfernten Objekt eine Operation auszulösen, muß vom Client eine Anfrage (request) gesendet und eine Antwort (reply) empfangen werden. Daraus folgt, daß eine Operation als ein Dienst (Service) zu betrachten ist (elementarer Bestanteil einer Client/Server-Plattform).
Um die Objektorientierung durchgängig weiter zu betreiben, muß darauf geachtet werden, daß die lokale Anwendung, für die Nutzung von entfernten Objekten, nur ein minimales Wissen über diese haben sollte. Um dies zu realisieren, wird für jedes ferne Objekt ein korrespondierendes Proxy-Objekt implementiert.[16] Ein Proxy-Objekt konstruiert einen Request, der zumindest den Operationsnamen sowie alle Eingabeparameter enthält. Diese Nachricht wird an das entfernte Objekt gesendet und erwartet anschließend die Antwort, die (mindestens) den Rückgabewert enthalten muß. Die Daten werden an die aufrufende Anwendung weitergeleitet.
Daraus folgt, daß eine Anwendung Methoden lokal im Proxy aufruft und die Entfernung des Zielobjektes verborgen bleibt.
Der nicht erlaubte Zugriff und die ebenfalls nicht erlaubte Manipulation von public Attributen ist für C++-Programmierer eine ungewohnte Einschränkung, das aber nach Richard S. Wiener (University of Colorado)[17] ein gelungenes objektorientiertes Konzept bestätigt.
Abb. 22: Schema der Proxy-Kommunikation.
Proxy entspricht dem Begriff "Stellvertretung"
[17] Wiener, Richard S. (Objective-C Object-Oriented Programming Techniques).