namespace I3.Clocks { public class Clock { public const int HoursPerDay = 24; public const int MinutesPerHour = 60; protected int hour, minute; public int Hour { get {return hour;} } public int Minute { get {return minute;} } public static bool IsValidTime (int hour, int minute) { return 0 <= hour && hour < HoursPerDay && 0 <= minute && minute < MinutesPerHour; } [System.Diagnostics.Conditional("DEBUG")] // braucht man das? public virtual void Set (int hour, int minute) { System.Diagnostics.Debug.Assert(IsValidTime(hour, minute), "precondition"); this.hour = hour; this.minute = minute; System.Diagnostics.Debug.Assert(IsValidTime(this.hour, this.minute), "invariant"); } [System.Diagnostics.Conditional("DEBUG")] // braucht man das? public virtual void Tick () { System.Diagnostics.Debug.Assert(IsValidTime(hour, minute), "invariant"); minute = (minute + 1) % MinutesPerHour; if (minute == 0) { hour = (hour + 1) % HoursPerDay; } System.Diagnostics.Debug.Assert(IsValidTime(hour, minute), "invariant"); } } // end of Clock }