Real-time object-oriented modeling (ROOM) handles objects as either actors or data classes. When developing in ROOM, you usually turn larger objects -- such as systems and processes -- into actors. Passive objects that either manipulate or encapsulate data become data classes. Both actors and data classes have methods and support full inheritance, with optional overrides and exclusions.
You can think of an actor as the fundamental execution unit within ROOM. An actor is an object that encapsulates data (in this case, state variables) as well as actions (or what the ROOM methodology refers to as the actor's behavior). To put it simply, actors do things.
Actors communicate
with their e
nvironment via ports. (You might find it helpful to think of an actor's ports as being analogous to the I/O ports on your computer.) A port is an interface into the actor through which messages pass. It's the medium of communication among actors. A message is composed of an identifier (i.e., this is a SetThermostat message), as well as message data (i.e., what temperature to set the thermostat to). The valid message types that are able to move through a port define a protocol.
Another important feature of ROOM's actors is that they can be nested; a single large actor that performs various jobs can actually be a container of multiple smaller actors. The internal actors are bound to one another by their ports. Ultimately, some of the internal actors' ports are exposed to the outside world, where they appear as the ports of the container actor.
screen
_link (49 Kbytes)

In a ROOM-based system, an application consists of communicating actors. The entire application is therefore treated as an actor that contains other actors. Actors communicate via bound ports -- shown as solid lines connecting the representative boxes.
Notice that, in the ObjecTime run-time system, bindings flash to show the exchange of a message between actors.