// https://www.youtube.com/watch?v=zYPb7oBU5_E #include "time_interface.h" #include "output_interface.h" class alarm_clock { public: alarm_clock(const time_interface&, output_interface&) // ... private: // ... const time_interface& time_; output_interface& output_; }; void alarm_clock::check_alarm() { if (!is_active_) return; if (now_is_approx_alarm_time()) { ring_alarm(); } } bool alarm_clock::now_is_approx_alarm_time() const { auto diff = abs(time_.now() - alarm_time_); return (diff < 1s); } void alarm_clock::ring_alarm() { output_ << "Alarm\n"; }