Example by: Ira Oldham, References: Savitch eighth edition, section 10.2; Gaddis seventh edition, not found
We can fix the Date class by validating the dates before storing them.
1 class Date
2 {
3 int day;
4 int month;
5 int year;
6 bool validate(int day_parm, int month_parm, int year_parm);
7 public:
8 bool set_date(int day_parm, int month_parm, int year_parm);
9 int get_day() {return day;}
10 int get_month() {return month;}
11 int get_year() {return year;}
12 };
13 int main(void)
14 {
15 Date today;
16 int day;
17 int month;
18 int year;
19 bool valid;
20 cout << "Input date:\nday: ";
21 cin >> day;
22 cout << "month: ";
23 cin >> month;
24 cout << "year: ";
25 cin >> year;
26 valid = today.set_date(day, month, year);
27 if (valid)
28 {
29 day = today.get_day();
30 month = today.get_month();
31 year = today.get_year();
32 cout << "Date: " << month << '/' << day << '/' << year << endl;
33 }
34 else
35 {
36 cout << "Not a valid date\n";
37 }
38 return 0;
39 }
40 bool Date::set_date(int day_parm, int month_parm, int year_parm)
41 {
42 bool valid = validate(day_parm, month_parm, year_parm);
43 if (valid)
44 {
45 day = day_parm;
46 month = month_parm;
47 year = year_parm;
48 }
49 return valid;
50 }
51 bool Date::validate(int day_parm, int month_parm, int year_parm)
52 {
53 const int DAY_MIN = 1;
54 const int DAY_MAX = 31;
55 const int MONTH_MIN = 1;
56 const int MONTH_MAX = 12;
57 return day_parm >= DAY_MIN &&
58 day_parm <= DAY_MAX &&
59 month_parm >= MONTH_MIN &&
60 month_parm <= MONTH_MAX ;
61 }
Input date: day: 32 month: 13 year: 1234 Not a valid date
Input date: day: 31 month: 12 year: 1234 Date: 12/31/1234
There are two principal kinds of methods: