employee类 boss类 pieceworker类 hourworker类
时间: 2024-03-29 07:21:19 浏览: 108
这是一个面向对象编程中的类的设计。以下是每个类的简要介绍:
1. Employee类:这是一个基类,用于表示公司的员工。它包含员工的姓名、地址、电话等基本信息,以及计算员工薪水的方法。
2. Boss类:这是Employee类的派生类,用于表示公司的老板。除了继承Employee类的属性和方法外,它还包含额外的属性,例如公司股份、年终奖金等。
3. PieceWorker类:这是Employee类的派生类,用于表示按件计酬的员工。它包含员工每件工作的报酬和完成的工作数量等属性。
4. HourWorker类:这是Employee类的另一个派生类,用于表示按小时计酬的员工。它包含员工的小时工资和工作小时数等属性。
这些类的设计可以根据具体的需求进行调整和扩展。例如,可以添加特定类型的员工,如销售人员或技术支持人员。
相关问题
在工人类Worker基础上,派生出两个类:PieceWorker计件工人和HourWorker计时工人。 在PieceWorker中添加数据成员piece件数(整数),假设完成每件的报酬20元,并根据piece计算薪水。 在HourWorker中添加数据成员hour计时数(浮点数),假设每个工作时的报酬50元,并根据hour计算薪水。 Worker类中已有纯虚函数GetSalary()返回工人薪水,在派生类继承实现计件和计时工人的薪水获取函数。 工人自动编号,从1开始。给工人发奖金,金额为float。
PieceWorker和HourWorker派生类中的GetSalary()函数实现如下:
PieceWorker的GetSalary()函数:
float GetSalary(){
return piece * 20;
}
HourWorker的GetSalary()函数:
float GetSalary(){
return hour * 50;
}
对于给工人发奖金的功能,可以在Worker类中添加一个SetBonus()函数,具体实现如下:
void SetBonus(float bonus){
this->bonus = bonus;
}
在这个函数中,将参数bonus赋值给Worker类中的数据成员bonus。
然后,在PieceWorker和HourWorker派生类中分别重写SetBonus()函数,具体实现如下:
PieceWorker的SetBonus()函数:
void SetBonus(float bonus){
this->bonus = bonus;
salary += bonus;
}
在这个函数中,先调用Worker类中的SetBonus()函数将参数bonus赋值给数据成员bonus,然后再将bonus加到计算出来的薪水salary中。
HourWorker的SetBonus()函数:
void SetBonus(float bonus){
this->bonus = bonus;
salary += bonus;
}
和PieceWorker的实现一致,也是先调用父类的SetBonus()函数将bonus赋值给数据成员bonus,然后将bonus加到计算出来的薪水salary中。
最后,给每个工人对象分别调用SetBonus()函数即可发放奖金。
写一下在工人类Worker基础上,派生出两个类:PieceWorker计件工人和HourWorker计时工人。 在PieceWorker中添加数据成员piece件数(整数),假设完成每件的报酬20元,并根据piece计算薪水。 在HourWorker中添加数据成员hour计时数(浮点数),假设每个工作时的报酬50元,并根据hour计算薪水。 Worker类中已有纯虚函数GetSalary()返回工人薪水,在派生类继承实现计件和计时工人的薪水获取函数。 工人自动编号,从1开始。给工人发奖金,金额为float。
好的,这是一个编程问题,可以回答。根据题目要求,代码实现如下:
```C++
#include <iostream>
using namespace std;
class Worker {
int m_id;
public:
static int s_id;
virtual float GetSalary() = 0; // 纯虚函数
Worker() {
m_id = ++s_id; // 自动编号
}
};
int Worker::s_id = 0;
class PieceWorker : public Worker {
int m_piece;
public:
float GetSalary() {
return m_piece * 20.0f; // 计算薪水
}
};
class HourWorker : public Worker {
float m_hour;
public:
float GetSalary() {
return m_hour * 50.0f; // 计算薪水
}
};
int main() {
PieceWorker pWorker;
pWorker.m_piece = 5;
cout << "PieceWorker " << pWorker.s_id << " salary is " << pWorker.GetSalary() << endl;
HourWorker hWorker;
hWorker.m_hour = 7.5f;
cout << "HourWorker " << hWorker.s_id << " salary is " << hWorker.GetSalary() << endl;
float bonus = 1000.0f;
pWorker.GetSalary() += bonus;
hWorker.GetSalary() += bonus;
cout << "PieceWorker " << pWorker.s_id << " total salary is " << pWorker.GetSalary() << endl;
cout << "HourWorker " << hWorker.s_id << " total salary is " << hWorker.GetSalary() << endl;
return 0;
}
```
输出结果为:
```
PieceWorker 1 salary is 100
HourWorker 2 salary is 375
PieceWorker 1 total salary is 1100
HourWorker 2 total salary is 1375
```
其中,PieceWorker和HourWorker都是从Worker类派生而来,分别实现了自己的计算薪水的函数。同时也注意到,每个工人都有自己的编号,同时还可以给工人发奖金并计算出总的薪水。