1.1.1 GOPPRR concepts
GOPPRR (pronounced gop-ruh) is an acronym from
the words
Graph-Object-Property-Port-Role-Relationship.
Each of these is called a metatype. The GOPPRR metatypes may be described
as follows:
Graph
A
graph is a collection of
objects, relationships, roles, and
bindings of these to show which
objects a relationship connects via which roles. A graph also maintains
information about which graphs its elements explode too. Examples of graphs are
WatchApplication and
UML Class Diagram.
Object
An
object is an element that can
be placed on its own in a graph. Examples of objects are a
Button, a
State, and an
Action that belong to a WatchApplication or
Class and
Object that belong to an UML Class Diagram. All
instances of objects support reuse
functionality: an
existing object can be reused in other graphs by using the Add Existing
function.
Relationship
A
relationship is an
explicit
connection between two or more objects. Relationships attach to objects via
roles. An example of a relationship is a
Transition that belongs to a
WatchApplication or an
Inheritance and an
Association that can be
found from UML Class Diagram.
Role
A
role specifies how an object
participates in a relationship. Examples for a
Transition relationship in
WatchApplication are the roles
From and
To, which specify how the
objects at either end of the
Transition participate in the relationship.
Similarly, in
Inheritance relationships there are two kinds of roles:
Ancestors and
Descendants.
Port
A
port is an optional
specification of a specific part of an object to which a role can connect.
Normally, roles connect directly to objects, and the semantics of the connection
are provided by the role type. If you want a given role type to be able to
connect to different places on an object with different semantics, you can add
ports to the object’s symbol. For example, an Amplifier object might have
a port for analog input, a port for digital input, and an analog output port.
Roles connecting to each of these will have different semantics. Ports are
defined for an object type, and all instances share those same ports.
Property
A
property is a describing or
qualifying characteristic associated with the other types, such as a
name, an
identifier or a
description.
GOPPRR for types and instances
The GOPPRR metatypes are applied on both the type and the
instance level, e.g. a graph type could be WatchApplication, and an
instance of that would be a particular WatchApplication, e.g.
‘Stopwatch’. Graph types contain object types, whereas graphs
contain objects.
Concepts and representations
On the instance level, each of the GOPPRR concepts (apart from
property) can have multiple representations, even in different representational
paradigms (i.e. diagram, matrix, table). For more information about
representation independence, please refer to ‘MetaEdit+ User’s
Guide’ Section
6.2.2.