//-------------------------------------------------------------------------------------------
// файл DateTime.h с определением интерфейса класса DateTime
//-------------------------------------------------------------------------------------------
#pragma once
#include <string>
#include <sstream>
#include "Date.h"
#include "Time.h"
using namespace std;
class DateTime
{
public:
DateTime();
DateTime(const Date& dt, Time tm);
DateTime(const DateTime& dt);
const Date& GetDate() const;
Time GetTime() const;
void SetDate(const Date& dt);
void SetTime(Time tm);
DateTime& operator=(const DateTime&);
bool operator==(const DateTime& dt) const;
bool operator!=(const DateTime& dt) const;
bool operator>(const DateTime& dt) const;
bool operator<(const DateTime& dt) const;
friend DateTime operator+ (const DateTime& dt, Time tm);
friend DateTime operator- (const DateTime& dt, Time tm);
DateTime& operator+=(const Time tm);
DateTime& operator-=(const Time tm);
static const Time MAX_TIME_IN_DAY;
static DateTime GetRandomDateTime(const Date& fromD,
const Date& toD, const Time from, const Time to);
wstring ToString() const;
|
|
private:
Date _date;
Time _time;
};
//-------------------------------------------------------------------------------------------
// файл DateTime.cpp с реализацией методов класса Date Time
//-------------------------------------------------------------------------------------------
#include "StdAfx.h"
#include "DateTime.h"
const Time DateTime::MAX_TIME_IN_DAY = Time(24,0);
DateTime::DateTime(): _date(), _time() {}
DateTime::DateTime(const Date& dt, Time tm): _date(dt), _time(tm) {}
DateTime::DateTime(const DateTime& dt): _date(dt._date), _time(dt._time)
{}
const Date& DateTime::GetDate() const
{ return _date;}
Time DateTime::GetTime() const
{ return _time;}
void DateTime::SetDate(const Date &dt)
{ _date = dt;}
void DateTime::SetTime(Time tm)
{
if (tm<DateTime::MAX_TIME_IN_DAY) _time = tm;
}
DateTime& DateTime::operator =(const DateTime & dt)
{
_date = dt._date;
_time = dt._time;
return *this;
}
bool DateTime::operator ==(const DateTime &dt) const
{
if (_date == dt._date && _time == dt._time) return true;
return false;
}
bool DateTime::operator!=(const DateTime &dt) const
{
if (_date!= dt._date || _time!= dt._time) return true;
return false;
}
bool DateTime::operator >(const DateTime &dt) const
{
if ((_date > dt._date) || (_date == dt._date && _time>dt._time))
return true;
return false;
}
bool DateTime::operator <(const DateTime &dt) const
{
if ((_date < dt._date) || (_date == dt._date && _time<dt._time))
return true;
return false;
}
DateTime operator+(const DateTime& dt, Time tm)
{
int days = Time::GetDaysAndTime(tm);
Time thisTime = dt._time + tm;
if (!Time::GetDaysAndTime(thisTime)) days++;
Date thisDate = dt._date + days;
return DateTime(thisDate,thisTime);
}
DateTime operator-(const DateTime& dt, Time tm)
{
int days = Time::GetDaysAndTime(tm);
Time thisTime;
if (dt._time < tm)
{
|
|
days++;
thisTime = dt._time + Time(24,0) - tm;
}
else thisTime = dt._time - tm;
Date thisDate = dt._date + (-days);
return DateTime(thisDate,thisTime);
}
DateTime& DateTime::operator +=(const Time tm)
{
DateTime temp = (*this) + tm;
_date = temp._date;
_time = temp._time;
return *this;
}
DateTime& DateTime::operator -=(const Time tm)
{
DateTime temp = (*this) - tm;
_date = temp._date;
_time = temp._time;
return *this;
}
DateTime DateTime::GetRandomDateTime(const Date &fromD,
const Date &toD, const Time from, const Time to)
{
Date dt = Date::GetRandomDate(fromD, toD);
Time tm;
if (from<DateTime::MAX_TIME_IN_DAY &&
to<DateTime::MAX_TIME_IN_DAY)
tm = Time::GetRandomTime(from,to);
return DateTime(dt,tm);
}
wstring DateTime::ToString() const
{
wostringstream os;
os<<L"Дата: "<<_date.ToString()<<
L" Время: "<<_time.ToString();
if (os) return os.str();
return wstring();
}
ЛИТЕРАТУРА
1. Лаптев В. С++.Экспресс-курс - СПб.: БХВ-Петербург, 2004. - 511 с.
2. Подбельский Вадим Валериевич Язык Си++: учеб. пособие для стуентов вузов/ Подбельский Вадим Валериевич. — М.: Финансы и статистика, 1996-2003.-559с.
3. Павловская Т.А. C/C++. Программирование на языке высокого уровня: учебник для вузов/ Т.А. Павловская. - СПб.: Питер, 2004. - 460 с.
4. Лафоре Р. Объектно-ориентированное программирование в C++. Классика Computer Science. 4-ое издание. — СПБ: Питер.2003.
5. Фаулер М., Скотт К. UML. Основы. - Пер. с англ. - СПб., 2002. - 192 с