The Conceptual Object Oriented Model
- Objects are robots.
- Methods are orders that robots can execute.
- Objects are known by reference variables.
- A reference value is like a telephone number.

Basic Operations

Method Invocation
A method invocation of an object is conceptually a telephone
call which gives a specific order to an object.

A method invocation is synchronous: the caller must wait until
the callee executes the order.
Non Standard Operations

Classes
- A class is a factory which builds objects sharing the same methods.
The class specifies the concrete implementation of objects:
- Data structure: instance variables.
- code.
- Subclasses.
- Inheritance of instance variables and methods.
- Method redefiniton (overriding).
- Dynamic binding of methods.
- Static and dynamic type checking.
- Unlimited object lifetime.
The Concurrent Object Oriented Model
- Multiple threads of execution.
- All threads share the same adress space.
- Any thread can invoke the methods of any object.
- Several threads can manipulate the same object concurrently.
- The programmer must use synchronization tools (monitors, semaphores, etc.)
to ensure mutual exclusion when necessary.
The Distributed Object Oriented Model
- Threads can run on different address spaces.
- The runtime must provide a mechanism for finding objects in
remote address spaces.
- Full location transparency: the programmer does not care where
an object lives when invoking methods, accessing instance variables,
copying references and testing identity.
- Location transparency for method invocation: the programmer does
not care where an object lives when invoking methods.
Full location transparency => Invocation
transparency
Example: Java/RMI
RBuffer rbuf= ...; // RBuffer is a remote interface
...
rbuf.put( ... ); // Don't care if rbuf is a remote object
BufferImpl bufImpl= (BufferImpl)rbuf; // rbuf must be local!
// rbuf
In RMI the code above executes correctly only when rbuf references a local
object.
RMI does not provide full location transparency, but does provide
transparency for invocation (excepting for remote exceptions) and
identity test.