类的运用 某公司雇员(employee)
某公司雇员(employee)包括经理(Manager)、技术人员(Technician)和销售员(Saleman)。开发部经理(developermanager)既是经理也是技术人员,销售部经理(salesmanager)既是经理也是销售员。 以employee类为虚基类,派生出manager、technician和saleman类,再进一步派生出developermanager和salesmanager类。 Employee类的属性包括姓名、职工号、工资级别、月薪(实发基本工资加业绩工资);操作包括月薪计算函数pay(),该函数要求输入请假天数,扣除应扣工资后,得出实发基本工资。 Technician类派生的属性有每小时附加酬金和当月工作时数,以及研究完成进度系数,业绩工资为三者之积。也包括同名的pay函数,工资总额为基本工资加业绩工资。 Saleman类派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积。也包括同名的pay函数,工资总额为基本工资加业绩工资。 Manager类派生的属性有固定奖金额和业绩系数,业绩工资为两者之积。工资总额也为基本工资加业绩工资。而在developermanager类中,pay函数是将作为经理和作为技术人员业绩工资之和的一半作为业绩工资。在salesmanager类中,pay函数则是经理的固定奖金额的一半,加上部门总销售额与提成比例之积,这是业绩工资。 在IT行业中,面向对象编程(OOP)是一种常见的软件设计方法,它允许我们通过类来组织和抽象数据。在这个特定的场景中,我们有一个员工(Employee)类,它是其他类的基类,如经理(Manager)、技术人员(Technician)和销售员(Saleman)。这个例子展示了如何使用继承和多态性来构建一个层次化的类结构。 我们有Employee类,它具有以下属性: 1. 姓名(em_name):存储员工的名字。 2. 职工号(em_num):标识员工的唯一编号。 3. 工资级别(em_level):表示员工的工资等级,例如'A'、'B'或'C'。 4. 基本工资(em_base_pay):员工的基本月薪。 5. pay() 函数:计算员工的月薪,考虑请假天数并扣除相应工资。 Employee类的构造函数允许初始化这些属性,而pay()函数则根据工资级别计算基本工资,并根据请假天数调整。这是一个虚函数,因此可以被派生类重写以实现不同的计算逻辑。 接下来,我们派生了三个类: 1. Technician类:代表技术人员,它从Employee类虚拟继承。Technician类增加了额外的属性: - 每小时附加酬金(te_hour_pay):技术人员每小时额外的报酬。 - 当月工作时数(te_hours):技术人员一个月的工作小时数。 - 研究完成进度系数(te_coe):表示项目进度的系数。 - 业绩工资(te_coe_pay):基于上述三个属性计算的奖金。 - 总工资(te_total_pay):基本工资加上业绩工资。 Technician类重写了show()和show1()函数,分别展示完整的员工信息和只展示与技术人员相关的属性。 2. Saleman类:代表销售员,同样从Employee类虚拟继承。Saleman类的属性包括: - 当月销售额(sa_sales_volume):销售员在一个月内实现的销售额。 - 酬金提取百分比(sa_reward_percent):销售员从销售额中获得的提成比例。 - 业绩工资(sa_coe_pay):基于销售额和提成比例计算的奖金。 - 总工资(sa_total_pay):基本工资加上业绩工资。 Saleman类同样重写了show()函数来展示销售员的详细信息。 3. Manager类:代表经理,也从Employee类虚拟继承。Manager类可能有额外的属性,如固定奖金额和业绩系数,用于计算业绩工资。 我们有Developermanager和Salesmanager两个类,它们分别从Manager和Technician或Saleman类派生。Developermanager类的pay()函数结合了经理和技术人员的业绩工资来计算业绩工资,而Salesmanager类的pay()函数则将固定奖金额的一半加上部门总销售额与提成比例之积作为业绩工资。 这个类结构很好地演示了面向对象编程中的继承和多态性概念。通过继承,我们可以复用基类的代码,并根据需要添加或修改特定类的行为。多态性使得我们可以调用子类的方法,而无需关心其具体的类型,增强了代码的灵活性和可扩展性。在实际的公司管理软件中,这样的设计可以帮助我们高效地管理和计算员工的薪资。
- liangdong1112013-01-09很好用 不过界面一般,要是再人性化一些就更好了
- lhl3712928822011-12-05缺乏注释啊,要是能手动输入信息就好啦
- leonyoung11182012-11-30还不错,可以对付课程设计了。
- axiaoyy2018-06-01给了我很多帮助,谢谢原作者
- 粉丝: 3
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助