#include <iostream>
#include "Clock.h"
#include "Observer.h"
#include "Subject.h"

class ObservedClock : public Clock, public Subject {
public:
  virtual void Tick() {
    Clock::Tick();
    Notify();
 }
};

class Display : public Observer {
public:
  virtual void Update() {
    std::cout << "tick! " << std::flush;
  }
};

int main() {
  ObservedClock clock;
  Display       display;
  clock.Register(display);
  clock.Tick();
  clock.Tick();
  clock.Tick();
  clock.Tick();
  clock.Tick();
  return 0;
}

