Блок задач

8. Чёрные ящики

Темы
Сложность 4

Задача «Класс Time»

Справка:

http://doc.crossplatform.ru/qt/4.7.x/qtime.html

Задача

Реализовать класс Time. Примерный интерфейс:

class Time {
public:
    TIme();
    Time(int hours, int min, int sec, int msec);
    Time addMSecs(int ms) const; // порождает новый объект со сдвигом в миллисекундах
    Time addSecs(int s) const; // порождает новый объект со сдвигом в секундах
    int hour() const; // возвращает кол-во часов
    int minute() const; // возвращает кол-во минут
    int second() const; // возвращает кол-во секунд
    int msec() const; // возвращает кол-во миллисекунд
    bool isValid() const; // валидна ли дата
    int msecsTo(const Time & t) const // возвращает кол-во мсек до события
    int secsTo(const Time & t) const // возвращает кол-во сек до события 
    bool setHMS(int h, int m, int s, int ms = 0) // установить новую дату
    std::string toString(const std::string & format) const; // преобразует в строку, согласно заданному формату
    bool operator!=(const Time & t) const
    bool operator<(const Time & t) const
    bool operator<=(const Time & t) const
    bool operator==(const Time & t) const
    bool operator>(const Time & t) const
    bool operator>=(const Time & t) const

    static currentTime(); // возвращает текущее время
    Time fromString ( const std::string& str, const std::string & format )
} 

Также нужно реализовать ввод/вывод из/в поток в фиксированном формате hh:mm:ss:msmsms

Интерфейс аналогичен интерфейсу класса QTime (ссылка в справке), одноименные методы делают одно и то же