@startuml
class Clock {
  virtual uint32_t getFrequency() = 0;
  virtual bool setFrequency(uint32_t frequency) = 0;
  virtual bool setClockSource(Clock& clockSource) = 0;
  virtual Clock& getClockSource() = 0;
}
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