// CS2310 Chapter 11 Excise // Taken from textbook p624 - 12 // // Reimplement the TimeType class so that the private data // representation is a single variable: // // long secs; // // This variable represents time as the number of seconds since // midnight. Do not change the public interface in any way. The // user's view is still hours, minutes, and seconds, but the // class's view is seconds since midnight. // // Use auxiliary functions, hidden inside the implementation file, // to perform convertions seconds back and forth to hours, // minutes, and seconds, instead of duplicating the algorithms in // in several places. // //****************************************************************** // SPECIFICATION FILE (timetyp2.h) // // (This is for the 2nd version of the TimeType class in Chap. 11. // It includes two class constructors.) // // This file gives the specification // of a TimeType abstract data type //****************************************************************** class TimeType { public: void Set( /* in */ int hours, /* in */ int minutes, /* in */ int seconds ); // Precondition: // 0 <= hours <= 23 && 0 <= minutes <= 59 // && 0 <= seconds <= 59 // Postcondition: // Time is set according to the incoming parameters void Increment(); // Postcondition: // Time has been advanced by one second, with // 23:59:59 wrapping around to 0:0:0 void Write() const; // Postcondition: // Time has been output in the form HH:MM:SS bool Equal( /* in */ TimeType otherTime ) const; // Postcondition: // Function value == true, if this time equals otherTime // == false, otherwise bool LessThan( /* in */ TimeType otherTime ) const; // Precondition: // This time and otherTime represent times in the // same day // Postcondition: // Function value == true, if this time is earlier // in the day than otherTime // == false, otherwise TimeType( /* in */ int initHrs, /* in */ int initMins, /* in */ int initSecs ); // Precondition: // 0 <= initHrs <= 23 && 0 <= initMins <= 59 // && 0 <= initSecs <= 59 // Postcondition: // Class object is constructed // && Time is set according to the incoming parameters TimeType(); // Postcondition: // Class object is constructed && Time is 0:0:0 private: long secs; void HrsMinsSecsToSecs(/* in */ int hours, /* in */ int minutes, /* in */ int seconds, /* out */ long& secs); // Precondition: // 0 <= hours <= 23 && 0 <= minutes <= 59 // && 0 <= seconds <= 59 // Postcondition: // secs = 3600 * hours + 60 * minutes + seconds void SecsToHrsMinsSecs(/* in */ long secs, /* out */ int& hours, /* out */ int& minutes, /* out */ int& seconds) const; // Precondition: // 0 <= secs <= 24 * 3600 - 1 // Postcondition: // hours = secs / 3600 // minutes = secs % 3600 / 60 // seconds = secs % 3600 % 60 };