@startuml left to right direction package "Surf Interface" { abstract class Model abstract class Resource abstract class Action } package "Surf Cpu" { abstract class CpuModel <|-- Model abstract class Cpu <|-- Resource abstract class CpuAction <|-- Action } package "Surf Cpu TI" { class CpuTiModel <|-- CpuModel class CpuTi <|-- Cpu class CpuTiAction <|-- CpuAction } package "Surf Cpu Cas01" { class CpuCas01Model <|-- CpuModel class CpuCas01 <|-- Cpu class CpuCas01Action <|-- CpuAction } package "Surf Network" { abstract class NetworkModel <|-- Model abstract class NetworkLink <|-- Resource abstract class NetworkAction <|-- Action } package "Surf Network Cm02" { abstract class NetworkCm02Model <|-- NetworkModel abstract class NetworkCm02Link <|-- NetworkLink abstract class NetworkCm02Action <|-- NetworkAction } package "Surf Network Constant" { abstract class NetworkConstantModel <|-- NetworkModel abstract class NetworkConstantLink <|-- NetworkLink abstract class NetworkConstantAction <|-- NetworkAction } package "Surf Network Smpi" { abstract class NetworkSmpiModel <|-- NetworkModel abstract class NetworkSmpiLink <|-- NetworkLink abstract class NetworkSmpiAction <|-- NetworkAction } package "Surf Network Ns3" { abstract class NetworkNs3Model <|-- NetworkModel abstract class NetworkNs3Link <|-- NetworkLink abstract class NetworkNs3Action <|-- NetworkAction } package "Surf Storage" { abstract class StorageModel <|-- Model abstract class Storage <|-- Resource abstract class StorageAction <|-- Action } package "Surf Storage N11" { abstract class StorageN11Model <|-- StorageModel abstract class StorageN11 <|-- Storage abstract class StorageN11Action <|-- StorageAction } package "Surf Workstation" { abstract class WorkstationModel <|-- Model abstract class Workstation <|-- Resource abstract class WorkstationAction <|-- Action } package "Surf Workstation Clm03" { abstract class WorkstationClm03Model <|-- WorkstationModel abstract class WorkstationClm03 <|-- Workstation abstract class WorkstationClm03Action <|-- WorkstationAction } package "Surf Workstation ptask L07" { abstract class WorkstationL07Model <|-- WorkstationModel abstract class WorkstationL07 <|-- Workstation abstract class WorkstationL07Action <|-- WorkstationAction } package "Surf WorkstationVM" { abstract class WorkstationVMModel <|-- WorkstationModel abstract class WorkstationVM <|-- Workstation abstract class WorkstationVMAction <|-- WorkstationAction } package "Surf WorkstationVM HL13" { abstract class WorkstationVMHL13Model <|-- WorkstationModel abstract class WorkstationVMHL13 <|-- Workstation abstract class WorkstationVMHL13Action <|-- WorkstationAction } @enduml