题目:16版.雇员的工作职责(一)

这篇博客介绍了如何使用Java编程实现雇员和人事类的继承关系,以及属性复用技术。实验内容包括创建雇员实体类、人事实体类,实现工作方法和发薪功能,最后在主类中展示雇员工作内容和薪水发放情况。通过这个例子,读者可以理解面向对象编程中的继承概念和实际应用。
摘要由CSDN通过智能技术生成

题目: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 stub
		Employe 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);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值