//File Date.h

class Date {

public:
	Date(int aDay, int aMonth, int aYear)
		: day(aDay), month(aMonth), year(aYear){
		//All initialization done in list
	}
	Date(const Date & d)
		: day(d.day), month(d.month), year(d.year){
		//All initialization done in list
	}
	~Date(){
		//No code needed
	}
	Date & operator=(const Date & d){
		day = d.day;
		month = d.month;
		year = d.year;
		return *this;
	}
	void printOn(ostream & o) const {
		switch(month){
			case 1:
				o << "January";
				break;
			case 2:
				o << "February";
				break;
			case 3:
				o << "March";
				break;
			case 4:
				o << "April";
				break;
			case 5:
				o << "May";
				break;
			case 6:
				o << "June";
				break;
			case 7:
				o << "July";
				break;
			case 8:
				o << "August";
				break;
			case 9:
				o << "September";
				break;
			case 10:
				o << "October";
				break;
			case 11:
				o << "November";
				break;
			case 12:
				o << "December";
				break;
			default:
				o << "Invalid Month";
				break;
		}
		o << " " << day << ", " << year;
	}

private:
	int day;		//1-31
	int month;		//1-12
	int year;		//C.E.
};

ostream & operator<<(ostream & ostr, const Date & d) {
     d.printOn(ostr);
     return ostr;
} 