//******************************************************************** // // commission.cpp // CSCI 241 Inheritance and Polymorphism Example // //******************************************************************** #include #include "commission.h" using std::cout; using std::endl; using std::string; /** * Constructor for commission employee. * * @param first_name The employee's first name. * @param last_name The employee's last name. * @param ssn The employee's Social Security Number. * @param sales The employee's gross sales for the week. * @param rate The employee's commission rate. * * @note The first name, last name, and ssn are passed to the base * class constructor. ********************************************************************/ commission::commission(const string& first_name, const string& last_name, const string& ssn, double sales, double rate) : employee(first_name, last_name, ssn) { set_sales(sales); set_rate(rate); } /** * Accessor function for gross sales data member. * * @return The employee's gross sales for the week. ********************************************************************/ double commission::get_sales() const { return sales; } /** * Mutator function for gross sales data member. * * @param wage The new gross sales. * * @note If an attempt is made to set the sales to a negative value, * the sales will instead be set to 0. ********************************************************************/ void commission::set_sales(double sales) { this->sales = (sales < 0.0) ? 0.0 : sales; } /** * Accessor function for commission rate data member. * * @return The employee's commission rate. ********************************************************************/ double commission::get_rate() const { return rate; } /** * Mutator function for commission rate data member. * * @param wage The new commission rate. * * @note If an attempt is made to set the commission rate to an * impossible value, the rate will instead be set to 0. ********************************************************************/ void commission::set_rate(double rate) { this->rate = (rate > 0.0 && rate < 1.0) ? rate : 0.0; } /** * Computes the employee's earnings for the week. * * @return The computed earnings. ********************************************************************/ double commission::earnings() const { return rate * sales; } /** * Prints information for commission employee. ********************************************************************/ void commission::print() const { cout << "Commission employee:\n"; // Call employee version of print() to print name and ssn. employee::print(); // Print remaining information. cout << "Gross sales: $" << sales << endl; cout << "Commission rate: " << rate << endl; }