namespace utility { using Console = System.Console; /// /// A class that implements the Date interface. /// public class DateImpl:Date { private int iYear; private int iMonth; private int iDay; private static int iCount; public static int Count { get { return iCount; } set { iCount = value; } } public DateImpl(int pYear, int pMonth, int pDay) { iYear = pYear; iMonth = pMonth; iDay = pDay; // Console.WriteLine(iYear*10000+iMonth*100+iDay); } public DateImpl(string pDateString) { string[] tokens = pDateString.Split(new char[] {'-'}); if (tokens.Length==3) { iYear = int.Parse(tokens[0]); iMonth = int.Parse(tokens[1]); iDay = int.Parse(tokens[2]); } else { throw new System.ArgumentException("two hyphens expected"); } } public int Year { get { return iYear; } set { iYear = value; } } public int Month { get { return iMonth; } set { iMonth = value; } } public int Day { get { return iDay; } set { iDay = value; } } public override bool Equals(object pObject) { iCount++; DateImpl tDateImpl = (DateImpl)pObject; return this.iYear == tDateImpl.iYear && this.iMonth == tDateImpl.iMonth && this.iDay == tDateImpl.iDay; } public override int GetHashCode() { Console.WriteLine(iYear*10000+iMonth*100+iDay); return iYear*10000+iMonth*100+iDay; } public int CompareTo(object pObject) { return 0; } public override string ToString() { return Year + "-" + Month/10 + Month%10 + "-" + Day/10 + Day%10; } } }