static void Main(string[] args)
        {
            // Create timer, and set the time for five seconds through the constructor
            CustomerTimer timer = new CustomerTimer(5);

            // Creating a object OVEN without signing up for an event from the constructor
            Oven oven = new Oven();

            // Creating a object WASHING MACHINE with signing up for an event from the constructor
            WashingMachine wm = new WashingMachine(timer);

            // Creating a object ALARM CLOCK with signing up for an event from the constructor
            AlarmClock ac = new AlarmClock(timer);

            //Signing of the object OVEN to the event using interface method
            oven.SubscribeToEventTimerAlarm(timer);

            // Timer start
            timer.StartTimer();

            Console.ReadKey();
        }
 public void UnsubscribeToEventTimerAlarm(CustomerTimer timer)
 {
     if (timer == null)
         throw new ArgumentNullException("CustomerTimer is null");
     timer.Alarm -= ProcessingEventAlarmClassOven;
 }
 public Oven(CustomerTimer timer)
 {
     if (timer != null)
         SubscribeToEventTimerAlarm(timer);
 }
 public void SubscribeToEventTimerAlarm(CustomerTimer timer)
 {
     if (timer == null)
         throw new ArgumentNullException("Timer is null");
     timer.Alarm += ProcessingEventAlarmClassWashingMachine;
 }
 public WashingMachine(CustomerTimer timer)
 {
     if (timer != null)
         SubscribeToEventTimerAlarm(timer);
 }