题目:16版.雇员的工作职责(一)
1、实验要求
本实验要求:以雇员的日常工作为背景,体验“继承”与“属性复用技术”的运用场景。1-1. 业务说明:1-1.1. 本实验以公司雇员的日常工作模式为业务背景。1-1.2. 公司每个雇员每天都需要进行日常的常规工作。 1-1.3. 人事人员既是公司雇员,同时也具有特定的工作职责。1-1.4. 人事除了日常的常规工作外,还具有为员工发放薪水的工作职责。1-2. 创建工程并配置环境:1-2.1. 限制1. 创建实验工程,命名为:SE_JAVA_EXP_E032;1-2.2. 限制2. 创建包,命名为:cn.campsg.java.experiment;1-2.3. 限制3. 创建包,命名为:cn.campsg.java.experiment.entity。1-3. 创建雇员实体类及其相关属性:1-3.1. 限制1. 在cn.campsg.java.experiment.entity 包中创建雇员类:Employe。1-3.2. 为Employe类创建如下属性:1)雇员姓名:字符类型;2)雇员职级:整数类型;3)雇员薪水:整数类型。1-3.3. 为Employe类的属性创建getter/setter方法。1-3.4. 为Employe类创建0参构造函数。1-3.5. 为Employe类创建3参构造函数。1)在3参构造器中,对雇员类的三个属性进行初始化。1-3.6. 为Employe类创建日常的常规工作方法:1)限制1. 方法名为:work。2)限制2. work方法可设定为0参,无返回公共函数。3)work方法的作用是,模拟雇员的常规工作。4)work方法需在控制台输出信息:雇员名称 +“ 做好了本职工作! ”1-4. 创建人事实体类及其相关属性:1-4.1. 限制1.在cn.campsg.java.experiment.entity包中创建人事类:Hrstaff;1)Hrstaff类需继承Employe类,以此获取雇员类的所有属性和特征。1-4.2. 为Hrstaff创建0参构造函数。1-4.3. 为Hrstaff创建1参构造函数:1)参数为:人事姓名(字符串类型)。2)Hrstaff利用继承技术特有的属性共用特性,实现初始化。3)Hrstaff调用父类Employe的3参构造函数,参数如下:Employe类的雇员姓名属性 = Hrstaff类的雇员姓名属性。Employe类的雇员职级属性 = 5(人事雇员等级默认为5)。Employe类的雇员薪水属性 = 5000(人事雇员薪水默认为5000)。1-5. 实现人事为雇员发放薪水的操作:1-5.1. 为Hrstaff类创建发放薪水方法:1)限制1. 方法名为:paySalary;2)限制2. paySalary方法带有1个Employe类型参数,用于表述为哪位员工发放工资。3)限制3. paySalary方法可设定为无返回公共函数。4)paySalary根据Employe的雇员等级实现薪水发放,发放规则如下:职级在[1-5]之间,雇员薪水 = 雇员薪水 + 500;职级在[6-9]之间,雇员薪水 = 雇员薪水 + 800;职级在[10-15]之间,雇员薪水 = 雇员薪水 + 1000;超出职级范围,提示:“不存在对应的职级,无法发放额外浮动薪水”1-6. 显示雇员工作内容和薪水:1-6.1. 限制1. 在cn.campsg.java.experiment包中创建主类:MainClass;1-6.2. 为MainClass创建入口主方法:main;1-6.3. 在main方法中,创建3个不同雇员对象和1个人事对象。1-6.4. 在main方法中,显示所有雇员和人事的常规工作情况(调用work)。1-6.5. 在main方法中,实现人事对所有雇员(包括自己)发放薪水的操作。1-6.6. 工资发放后,在main方法中输出雇员的发薪信息(包括人事):1)输出信息格式为:员工姓名 +“ 的薪水: ”+ 员工类的雇员薪水
2、实现思路
2-1. 创建工程并配置环境。2-2. 创建雇员实体类及其相关属性:2-2.1. 在cn.campsg.java.experiment.entity 包中创建雇员类:Employe;2-2.2. 为Employe定义如下私有属性成员变量1)雇员姓名:String name;2)雇员职级:int level;3)雇员薪水:int salary。2-2.3. 为Employe类的属性创建对应的getter/setter方法。2-2.4. 为Employ类创建默认构造器。2-2.5. 为Employe类创建3参构造器,创建规则如下:1)构造器的参数分别对应Employe的三个属性变量;2)在3参构造器内完成对Employe类三个属性的赋值。2-2.6. 为Employe创建常规工作方法:work,其形式如下:
- 提示
public void work() {
}
1)在方法体内向控制台输出信息,格式:雇员姓名 +“ 做好了本职工作! ”;2-3. 创建人事实体类及相关属性:2-3.1. 在cn.campsg.java.experiment.entity包中创建人事类:Hrstaff。1)人事类Hrstaff继承自雇员类Employe。2-3.2. 为人事类Hrstaff创建默认构造器。2-3.3. 为人事类Hrstaff创建1参构造器,参数为人事的姓名:1)在1参构造器内调用Employe的3参构造器,实现人事的属性初始化。2)Hrstaff类属性的初始化可按如下规则设置:Employe的name属性 = Hrstaff的name属性;Employe的level属性 = 5;Employe的salary属性 = 5000。2-4. 实现人事为雇员发放薪水的操作:2-4.1. 为Hrstaff类创建特有的发薪方法paySalary,其形式如下:
- 提示
public void paySalary(Employe em) {
}
2-4.2. 实现薪水发放的业务逻辑:1)在方法内,首先获取通过参数传入的雇员对象职级:int level = em.getLevel();2)按实验要求,根据雇员的职级在原有薪水基础上增加额外的补贴金额。3)超出职级时提示信息为:“不存在对应的职级,无法发放额外浮动薪水”。2-5. 显示雇员工作内容和薪水:2-5.1. 在包cn.campsg.java.experiment中创建业务主类:MainClass;2-5.2. 在MainClass中定义主函数main。2-5.3. 在main方法中创建3个不同的雇员对象和1个人事对象。2-5.4. 调用4个对象的work函数,输出所有雇员(包括人事)的工作内容。2-5.5. 模拟实现人事为雇员(包括自己)发放薪水的操作:1)调用Hrstaff对象的paySalary方法,并分别传入三个雇员对象。2)调用Hrstaff对象的paySalary方法,并传入人事对象自己。3)依次向控制台输出所有雇员的发薪信息,信息格式如下:雇员对象.getName() +“的薪水:”+ 雇员对象.getSalary()。
3、验证与测试
3-1. 在工程中定位主类MainClass。3-2. 右键点击MainClass类,依次选择:Run As->Java Application。3-3. 运行程序,查看输出结果是否符合预期。
package cn.campsg.java.experiment.entity;public class Employe {String name ;int level;int salary;public void setLevel(int level) {this.level = level;}public int getLevel() {return level;}public void setName(String name) {this.name = name;}public String getName() {return name;}public void setSalary(int salary) {this.salary = salary;}public int getSalary() {return salary;}public Employe() {//创建默认构造器super();}public Employe(String name,int level,int salary)//创建三参构造器{super();this.name = name;this.level = level;this.salary = salary;}public void work()//函数{System.out.println(name+"做好了本职工作!");}
}
package cn.campsg.java.experiment.entity;public class Hrstaff extends Employe{//继承public Hrstaff(){super();}public Hrstaff(String name){super(name,5,5000);//初始化}public void paySalary(Employe em){int level = em.getLevel();if (level>=1&&level<=5) em.setSalary(em.getSalary() + 500);else if (level>=6&&level<=9) em.setSalary(em.getSalary() + 800);else if (level>=10&&level<=15) em.setSalary(em.getSalary() + 1000);else {System.out.println("不存在对应的职级,无法发放额外浮动薪水");}System.out.println("员工" + em.getName() + "的薪水:" + em.getSalary());}
}
package cn.campsg.java.experiment;import cn.campsg.java.experiment.entity.Employe;
import cn.campsg.java.experiment.entity.Hrstaff;public class MainClassMainClass {public static void main(String[] args) {// TODO Auto-generated method stubEmploye employe1 = new Employe("洪吉江",1,1000);Employe employe2 = new Employe("李俊生",6,2000);Employe employe3 = new Employe("赵子万",11,3000);Hrstaff hr=new Hrstaff("HR");employe1.work();employe2.work();employe3.work();hr.work();System.out.println(hr.getName()+"开始发放工资:");hr.paySalary(employe1);hr.paySalary(employe2);hr.paySalary(employe3);hr.paySalary(hr);}
}