题目:
在某公司有很多员工(Employee)
1.按照工作内容不同分教研部员工(Teacher)和行政部员工(AdminStaff)
2.教研部根据教学方式不同又分为讲师(Lecturer)和助教(Tutor)
3.行政部根据负责事项不同,又分为维护专员(MainTainer)和采购专员(Buyer)
4.公司的每个员工都有其编号、姓名和其负责的工作
5.每个员工都有工作的功能,但是具体的工作内容不一样
首先开始根据题目绘图(绘图应从下往上):

完整关系如上
根据关系图开始编码(编码应根据关系图由上向下):
员工Employee类:
public class Employee {
private String id;
private String name;
private String work;
public void work() {
System.out.println("工号为:" + this.getId() + "的员工:" + this.getName() + "在进行工作:" + this.getWork());
}
public Employee() {
}
public Employee(String id, String name, String work) {
this.id = id;
this.name = name;
this.work = work;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWork() {
return work;
}
public void setWork(String work) {
this.work = work;
}
}
教研部员工Teacher类:
public class Teacher extends Employee {
//添加部门属性
private String department;
public Teacher() {
//默认初始化工作为教研部工作(讲师或助教)
this.setWork("教研部工作(讲师或助教)");
//默认初始化部门为教研部
this.setDepartment("教研部");
}
//创建对象时部门和工作已经确定,直接初始化赋值
public Teacher(String id, String name) {
//对教研部员工工作直接赋值
super(id, name, "教研部工作(讲师或助教)");
this.setDepartment("教研部");
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
行政部员工AdminStaff类:
public class AdminStaff extends Employee {
//添加部门属性
private String department;
public AdminStaff() {
//默认初始化工作为行政部工作(维护专员或采购专员)
this.setWork("行政部工作(维护专员或采购专员)");
//默认初始化部门为行政部
this.setDepartment("行政部");
}
//创建对象时部门和工作已经确定,直接初始化赋值
public AdminStaff(String id, String name) {
//对行政部员工工作和部门直接赋值
super(id, name, "行政部工作(维护专员或采购专员)");
this.setDepartment("行政部");
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
讲师Lecturer类:
public class Lecturer extends Teacher {
public Lecturer() {
//初始化工作为讲师工作
this.setWork("讲师工作");
}
public Lecturer(String id, String name) {
super(id, name);
//重新给工作赋值
this.setWork("讲师工作");
}
}
助教Tutor类:
public class Tutor extends Teacher {
public Tutor() {
//初始化工作为助教工作
this.setWork("助教工作");
}
public Tutor(String id, String name) {
super(id, name);
//重新给工作赋值
this.setWork("助教工作");
}
}
维护专员Maintainer类:
public class Maintainer extends AdminStaff {
public Maintainer() {
//初始化工作为维护专员工作
this.setWork("维护专员工作");
}
public Maintainer(String id, String name) {
super(id, name);
//重新给工作赋值
this.setWork("维护专员工作");
}
}
采购专员Buyer类:
public class Buyer extends AdminStaff {
public Buyer() {
//初始化工作为采购专员工作
this.setWork("采购专员工作");
}
public Buyer(String id, String name) {
super(id, name);
//重新给工作赋值
this.setWork("采购专员工作");
}
}
最后编写测试类展示所有功能
public class Test {
public static void main(String[] args) {
//讲师
Lecturer lct = new Lecturer("001", "xiaobai");
lct.work();
System.out.println("工号:" + lct.getId() + ", 姓名:" + lct.getName()
+ ", 工作:" + lct.getWork() + ", 部门:" + lct.getDepartment());
System.out.println("----------------------------------------");
//助教
Tutor tt = new Tutor("011", "xiaohei");
tt.work();
System.out.println("工号:" + tt.getId() + ", 姓名:" + tt.getName()
+ ", 工作:" + tt.getWork() + ", 部门:" + tt.getDepartment());
System.out.println("----------------------------------------");
//维护专员
Maintainer mt = new Maintainer("021", "xiaohuang");
mt.work();
System.out.println("工号:" + mt.getId() + ", 姓名:" + mt.getName()
+ ", 工作:" + mt.getWork() + ", 部门:" + mt.getDepartment());
System.out.println("----------------------------------------");
//采购专员
Buyer by = new Buyer("031", "xiaolv");
by.work();
System.out.println("工号:" + by.getId() + ", 姓名:" + by.getName()
+ ", 工作:" + by.getWork() + ", 部门:" + by.getDepartment());
}
}
运行结果:

深知自己的水平还差很多,希望各位不要吝啬自己的宝贵意见,我会听取改进,谢谢大家。
本文详细描述了一个Java程序,通过类结构定义了员工(Employee)、教研部教师(Teacher,分为讲师和助教)、行政部员工(AdminStaff,分为维护专员和采购专员)等角色,并展示了如何根据关系图进行编码实现。
751

被折叠的 条评论
为什么被折叠?



