|
Программирование >> Структурное программирование
шел II C0MMIS1 .н Класс CoiranissionWorker, производный от Employee #1fndef C0MMIS1 H ttdefine C0MMIS1 H #include employ2 . h class CommissionWorker : public Employee { public: CommissionWorker( const char *, const char *, float = 0.0, float = 0.0, unsigned = 0); void setSalary (float) ; void setCommission(float); CT void setQuantity(unsigned); ШЯ virtual float earnings {) const; fln virtual void print() const; ЩЯк private: float salary; Базовая заработная плата за неделю float commission; Комиссионные от продажи одного изделия I unsigned quantity; Количество проданных изделий за неделю ЦР }; Н #endif Рис. 10.1. Класс CommissionWorker, производный от абстрактного базового класса Employee (часть 5 из 12) C0MMIS1.CPP Определения функций-элементов класса CommissionWorker #include <iostream.h> Iinclude commisl.h Конструктор класса CommissionWorker CommissionWorker::CommissionWorker(const char *first, const char *last, float s, float c, unsigned q) : Employee(first, last) вызов конструктора базового класса salary = s > О ? s : 0; commission = с > 0 ? с: 0; quantity = q > О ? q: 0; Установка еженедельного основного оклада для класса CommissionWorker void CommissionWorker::setSalary(float s) I { salary = s > 0 ? s : 0; } Л . Установка комиссионных для класса CommissionWorker void CommissionWorker::setCommission(float c) { commission = с > 0 ? с : 0; } Установка количества продаж изделий void CommissionWorker::setQuantity(unsigned q) лять заработную плату в классе Boss; виртуальную функцию print, которая выводит тип служащего и его имя. { quantity = q > О ? q : 0; } Определение заработной платы служащих из класса ComissionWorker float CommissionWorker::earnings() const { return salary + commission * quantity; ) Печать имени служащего из класса CommissionWorker void CommissionWorker::print() const { cout << endl Служащий на комиссионных: getFirstNameО getLastName(); Рис. 10.1. Определения функций-элементов класса ComissionWorker (часть б из 12) Класс ComissionWorker (части 5 и 6 рис. 10.1) является производным от класса Employee открытым наследованием. Открытые функции-элементы включают: конструктор, который принимает в качестве аргументов имя, фамилию, базовую недельную заработную плату, комиссионное вознаграждение и количество проданных изделий, а также передает имя и фамилию конструктору Employee; функцию set, которая присваивает новые значения скрытым данным-элементам salary, comission и quantity; виртуальную функцию earnings, в которой определено, как начислять заработную плату в классе ComissionWorker; виртуальную функцию print, которая выводит тип служащего и его имя. Класс Pieceworker (рис. 10.1, части 7 и 8) является производным от класса Employee с открытым наследованием. Открытые функции-элементы включают: конструктор, который принимает в качестве аргументов имя, фамилию, оплату за единицу продукции и количество произведенной продукции за неделю, а также передает имя и фамилию конструктору Employee; функцию set, которая присваивает новые значения скрытым данным-элементам wagePerPiece и quantity; виртуальную функцию earnings, в которой определено, как начислять заработную плату в классе Pieceworker; виртуальную функцию print, которая выводит тип служащего и его имя. PIECE1.H Класс Pieceworker, производный от Employee tifndef PIECE1 H tdefine PIECE1 H tinclude employ2.h class Pieceworker : public Employee { public: Pieceworker(const char*, const char*, float = 0.0,unsigned = 0); void setWage(float); void setQuantity(unsigned); virtual float earnings() const; virtual void print() const; private: float wagePerPiece; Оплата единицы продукции unsigned quantity; Число единиц продукции за неделю tendif Рис. 10.1. Класс PieceWorl<er, производный от абстрактного базового класса Employee (часть 7 из 12) i Установка сдельной заработной платы ;/oid Pieceworker:: setWage (float w) { wagePerPiece = w > 0 ? w : 0; ) Установка количество произведенных единиц продукции , void Pieceworker::setQuantity(unsigned q) { quantity = q > 0 ? q : 0; ) Опеределение заработной платы служащих из класса Pieceworker float Pieceworker: learnings О const ( return quantity * wagePerPiece; } Печать имени служащего из класса Pieceworker id Pieceworker::print() const -. cout endl Служащий на сдельной оплате: V. getFirstName() <<<< getLastName О ; Рис. 10.1. Определения функций-элементов класса Pieceworker (часть 8 из 12) HOURLY1. Н Класс HourlyWorker, производный от Employee fndef H0URLY1 H l tdefine H0URLY1 H . I tinclude employ2.h .jp I class HourlyWorker : public Employee { ? I public: HourlyWorker(const char *, const char *, float = 0.0, float = 0.0); void setWage(float); void setHours(float); virtual float earnings() const; virtual void print() const; fjJS-! private: lite float wage; Заработная плата за час f jfloat hours; Количество отработанных часов за неделю }; -i-* tend if Рис. 10.1. Класс HouriyWorker, производный от абстрактного базового класса Employee (чааь 9 из 12) PIECEl.CPP Определения функций-элементов класса Pieceworker tinclude <iostream.h> tinclude piecel.h Конструктор класса Pieceworker Pieceworker::Pieceworker (const char *first, const char last, float w, unsigned q) : Employee(first, last) Вызов конструктора базового класса wagePerPiece = w > О ? w : 0; quantity = q > О ? q : 0; Я }
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |