05 классы 3
.pdf05 – 11
int main()
{
Inc ob(10,5);
cout << ”Перед приращением: ”; ob.print();
for(int i=1; i<=2; i++) { ob.add();
cout << ”После приращения: ”; cout << i << ”:”;
05 – 12
ob.print();
}
return 0;
}
Перед приращением: count = 10, delta = 11 После приращения 1: count = 21, delta = 11 После приращения 2: count = 32, delta = 11
05 – 13
2.11. Композиция
Пример:
//Класс Worker, представляющий
//сотрудников, включает два объекта
//класса Date, представляющего дату
05 – 14
class Date { int day; int month; int year;
int check(int); // утилита public:
Date(int=1, int=1, int=2004); void print();
};
05 – 15
Date::Date(int d, int m, int y)
{
year = y; |
// |
год без |
проверки |
if(m>0 && m<=12) // |
месяц с |
проверкой |
|
month = m; |
|
|
|
else { |
|
|
|
cout << ”Месяц ”<< m <<” неверный”; cout << ”Месяц пусть = 1” << endl; month = 1;
}
05 – 16
day = check(d);
cout <<”Объект Date получил значение: ”;
print();
}
void Date::print()
{
cout << day << ”-” << month << ”-” << year << endl;
}
05 – 17
//Утилита для проверки соответствия дня
//месяцу и году
int Date::check(int x)
{
int days[13] = {0,31,28,31,...,31};
if(x>0 && x<=days[month]) return x;
05 – 18
// если февраль високосного года
if(x==29 && month==2 && (year%400==0 ||
(year%4==0 && year%100!=0))) return x;
cout << ”День ” << x << ” неверный”; cout << ”День пусть = 1” << endl; return 1;
}
05 – 19
class Worker { |
// фамилия |
|
char fam[25]; |
||
char name[25]; |
// имя |
|
Date birth; |
// |
дата рождения |
Date hire; |
// |
дата приема |
public:
Worker(char *, char *,
int, int, int, int, int, int); void print();
};
05 – 20
//конструктор со списком инициализаторов
//элементов после списка параметров
Worker::Worker(char *f, char *n, int bd, int bm, int by, int hd, int hm, int hy): birth(bd, bm, by),
hire (hd, hm, hy)
{
int l;