@startuml class PdmObjectHandle { name() fields(); referencingFields(); parentField(); template capability() void addCapability() --- std::vector m_fields; std::vector m_capabilities; } PdmObjectHandle --* "n" PdmObjectCapability class PdmUiItem{ } PdmObjectCapability <|- PdmUiObjectHandle PdmUiItem <|- PdmUiObjectHandle class PdmUiObjectHandle { uiOrdering() = ?; uiTreeOrdering() = ? ; editorAttribute() = ?; objectEditorAttribute() = ? ; userDescriptionField(); objectToggleField() calculateValueOptions() = ?; fieldChangedByUi() = 0; --- m_descriptionField; m_objectToggleField; } PdmUiObjectHandle <|-- PdmObject PdmObjectHandle <|-- PdmObject PdmXmlObjectHandle <|-- PdmObject class PdmXmlObjectHandle { classKeyword() = 0; readFields (); writeFields(); } PdmObjectCapability <|- PdmXmlObjectHandle package FieldHandle{ PdmObjectHandle --> "n" PdmFieldHandle class PdmFieldHandle{ name() setOwnerObject(); ownerObject(); hasChildObjects() = 0; childObjects( ) = 0; --- std::vector m_attributes; } PdmFieldHandle --* "n" PdmFieldCapability class PdmUiFieldHandle{ uiValue() setValueFromUi() valueOptions( ) = 0; } PdmFieldCapability <|- PdmUiFieldHandle PdmUiItem <|- PdmUiFieldHandle class PdmXmlFieldHandle { setKeyword(); keyword(); readFieldData() = 0; writeFieldData() = 0; isIOReadable() isIOWritable() setIOWritable() setIOReadable() --- bool m_isReadable; bool m_isWritable; } PdmFieldCapability <|- PdmXmlFieldHandle } PdmFieldHandle <|- "PdmPtrField" PdmFieldHandle <|- "PdmChildField" PdmFieldHandle <|- PdmValueField PdmValueField <|-- "PdmDataValueField" PdmValueField <|-- "PdmProxyValueField" PdmFieldHandle <|- PdmChildArrayFieldHandle PdmChildArrayFieldHandle <|-- "PdmChildArrayField" PdmField ..u.. PdmValueField class PdmField { Macro used to replace PdmField with PdmValueField (used in ResInsight) } @enduml