Metodele sunt declarate in Employee si accesate din afara clasei.
Code: Select all
#include <iostream>
#include <sstream>
using namespace std;
class Employee
{
protected:
string name;
double pay;
public:
Employee();
Employee(string, double);
string getName();
void setName(string);
double getPay();
void setPay(double);
string toString();
double grossPay(int);
};
class Manager:public Employee
{
private:
bool salaried;
public:
Manager(string name, double payRate, bool isSalaried):Employee(name, payRate)
{
salaried = isSalaried;
}
bool getSalaried()
{
return salaried;
}
double grossPay(int hours)
{
if (salaried)
return pay;
else
return pay * hours;
}
string toString()
{
stringstream stm;
string salary;
if (salaried)
salary = "Salaried";
else
salary = "Hourly";
stm << name << ": " << pay << ": " << salary << endl;
return stm.str();
}
};
int main()
{
Employee emp1("Mary Smith", 15.00);
cout << "\n Employee name: " << emp1.getName() << endl;
cout << "\n Employee pay rate: " << emp1.getPay() << endl;
cout << "\n Employee gross pay: " << emp1.grossPay(40) << endl;
Manager emp2("Bob Brown", 1500, true);
cout << "\n " << emp2.toString();
cout << "\n emp2's gross pay: " << emp2.grossPay(100) << endl;
return 0;
}
Employee::Employee()
{
name = "";
pay = 0;
}
Employee::Employee(string empName, double payRate)
{
name = empName;
pay = payRate;
}
string Employee::getName()
{
return name;
}
void Employee::setName(string empName)
{
name = empName;
}
double Employee::getPay()
{
return pay;
}
void Employee::setPay(double payRate)
{
pay = payRate;
}
string Employee::toString()
{
stringstream stm;
stm << name << ": " << pay;
return stm.str();
}
double Employee::grossPay(int hours)
{
return pay * hours;
}