[Meyer93] notes that "In ordinary sequential computation, there is
only one processor, which is why it tends to remain implicit" (meaning
by processor a "virtual thread of control"). We generalize this
interesting idea by saying that there is no model of time (and thus
that time is implicit): functions have no duration. The elimination of
time is actually unfortunate, as communication needs disclose it.
In an object-oriented language, a type may be bound to any concept
relevant in the application domain, and we may define types with a
temporal dimension. At first glance, this should remind of tasks, as
used in operating system design.
These temporal classes can also be considered a generalization of
transactions: transactions are very attractive as a building block for
composition, thank to their semantical simplicity -they leave the
system in either of two states, both known in advance. However,
transactions are unfortunately too restrictive to be used
systematically to define interfaces (some trivial long-term
interactions between objects never commit; this could be e.g. the case
of objects maintaining a representation of others).
We decide to call these entities operations, choosing the most
generic word to emphasize the fact that we intend to use them
systematically to represent any identifiable behaviour of objects.
Operations are typed, meaning that they are specialized for some
purpose.