Transformations

Before an Qompass component can be deployed, there is a set of transformations that is applied
  1. Each port is translated into a tripel of a property, an operation returning a reference to the interface provided by the port (if any) and an operation allowing to connect the port (if port has a required interface).
  2. Parts: if a part is typed with an abstract component implementation or a component type, it cannot directly be instantiated in some programming languages, notably C++ (in Java, attributes typed with a class are always implictly references). For these, there are basically two options:
A component might either be a type or an implementation. The former is mainly a class with a set of ports and no internal structure. It may inherit from other component types, but not from implementations. The latter has to realize at least a subset of the services that are provided at its ports (if it does not define all, it needs to be declared as abstract). The realization could be either done by an implementation written in a specific programming language or the UML action language or by a delegation to an inner part.