Show in Frame No Frame
Up Previous Next Title Page Index Contents Search

Graph
Object
Relationship
Role
Port
Property
GOPPRR for types and instances
Supertypes and subtypes
Concepts and representations

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 briefly as follows (more details are given in the next sections):

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 a WatchApplication and a 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 a Class and an Object that belong to a 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 a 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 an Aggregation relationships there are two kinds of roles: one Whole role and possible many Part roles.

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. The data type of a property can be String, Number, Text, Boolean etc., or then a property can contain an object, graph etc., or a collection of these.

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.

Supertypes and subtypes

A GOPPRR type may be created as a subtype of another, its supertype. The subtypes inherit the properties of the supertype. Types in the hierarchy may be marked as abstract (not instantiable) or hidden (not shown to modelers).

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.

Show in Frame No Frame
Up Previous Next Title Page Index Contents Search