09 полиморфизм
.pdf09 – 11
Worker::~Worker()
{
delete [] name; delete [] fam;
}
char * Worker::getName() { return name; }
char * Worker::getFam() { return fam; }
09 – 12
class Boss: public Worker { float salary;
public:
Boss(char *, char *, float = 0.0); void setSalary(float);
float earnings(); void print();
};
09 – 13
Boss::Boss(char *n, char *f, float s): Worker(n, f)
{ setSalary(s); }
void Boss::setSalary(float s) { salary = s > 0 ? s : 0; }
float Boss::earnings() { return salary; }
09 – 14
void Boss::print()
{
cout << ”Администратор ”
<<getName() << ’ ’
<<getFam();
}
09 – 15
class Comm: public Worker {
// базовый оклад за неделю
float salary;
// процент комиссионных
float commission;
// объем продаж за неделю
float quantity;
09 – 16
public:
Comm(char *, char *, float = 0.0, float = 0.0, float = 0.0);
void setSalary(float); void setCommission(float); void setQuantity(float); float earnings();
void print(); };
09 – 17
Comm::Comm(char *n, char *f, float s, float c, float q): Worker(n, f)
{
setSalary(s);
setCommission(c);
setQuantity(q);
}
09 – 18
void Comm::setSalary(float s) { salary = s > 0 ? s : 0; }
void Comm::setCommission(float c) { commission = c > 0 ? c : 0; }
void Comm::setQuantity(float q) { quantity = q > 0 ? q : 0; }
09 – 19
float Comm::earnings()
{
return salary + commission * quantity / 100;
}
09 – 20
void Comm::print()
{
cout << ”Комиссионный служащий ”
<<getName() << ’ ’
<<getFam();
}