Composite components are the other available realisation for implementation component types. Their internal realisation is not done by the composite component itself, but through the use of further components and through a structure that describes how those components are wired (see figure 3.6). A composite component has no realisation via source code. Its behaviour is a sole result of the behaviour of inner components. Composite components subsume a set of components, that belong together in a logical or functional way, and result in a new component type. Since composite components are usual component types they are available in a repository (c. f. section ) after their creation. From the repository they can be used like all other component types.
All internal components of a composite component are parts of a contains-relation for the outer composite component. To allow reuse of component types without side-effects the contains-relation is only a reference from one composite component to one inner component type. In so doing, component types, which are part of a repository, do not need to store information about their usage (in assemblies or composite components).
Recursive nesting of composite components is disallowed. Otherwise infinite component structures could be realised.