@startuml
class Clock {
  #Clock* clockSource;
  virtual uint32_t getFrequency() = 0;
  virtual bool setFrequency(uint32_t frequency) = 0;
  virtual bool setClockSource(Clock& clockSource) = 0;
  Clock* getClockSource() { return clockSource; }
}
note right: This is the basic abstract interface describing a clock

Clock <|-- FixedClock

class FixedClock {
  #const uint32_t frequency;
}
note right: This is the ready-to-use utility class for describing fixed clocks.

@enduml