System objects collaborate by exchanging events and invoking
operations.
Objects can access other objects in various ways:
- Inheritance objects can inherit from one
another.
- Dependencies objects can directly access
a global object by referencing its package namespace. A dependency
from an object to a package familiarizes the object with the package
namespace. See Dependencies for
more information.
- Composition objects can access their subobjects
and subobjects can access their owner objects. See Compositions for more information.
- Parameters objects can receive references
to other objects as arguments of operations or events. This requires
the definition of object types. See Object types for more
information.
- Links objects that reside inside other objects
must be accessed through a link, because they do not have a global
identity. Links bind roles, which are the structural slots through
which an object refers to a link. See Links for
more information.
- Interfaces objects can have an interface,
which is a kind of classifier that specifies a contract consisting
of a set of public services. An interface is a non-instantiable entity
that is realized by a class, object, block, file, and so on, and might
be realized by any number of these entities.
- Ports objects can have ports. A port is
a distinct interaction point between a class and its environment or
between (the behavior of) a class and its internal parts.