OPC UA defines a type model supporting one object-oriented type hierarchy for ObjectTypes. Although the specification does not restrict those hierarchies to be single inheritance (i.e. a type can only have one super-type) it only specifies the semantic (inheritance rules) for single inheritance.
In general, good object-oriented design is accomplished by using composition to aggregate an object which provides several functions instead of over-using inheritance [GH95], [FF04] .
Interfaces and AddIns complement the type model and can be used when subtyping is not suitable for the required extension. They:
- allow enhancing multiple types at arbitrary positions in the type hierarchy.
- also allow enhancing just instances.