【发布时间】:2019-03-20 13:52:32
【问题描述】:
这是员工和经理之间办公室的一个简单场景。
在现实世界中,经理可以管理许多员工,但为了简单起见
在这里考虑一位员工和他的经理之间的情况
在这里经理和员工都有姓名属性
- 经理只能改名
- 员工只能改名
只有员工有职称属性
- 名称只能由经理更改
对于上述场景我创建了这个类图
使用java代码实现上述场景如下图 (请注意此代码为伪代码,也不包括编排代码,语法可能错误)
class Manager{
private String name;
private Employee employee;
//assign name and create association link between employee
Manager(Employee employee,String managerName ){
this.employee = employee;
this.name = managerName;
}
//manager can change his name
private void changeName(String managerName){
this.name = managerName;
}
//only manager can change Employee designation
private void changeEmpDesignation(String empDesignation){
this.employee.changeDesignation(empDesignation);
}
}
/* --------------------------- */
class Employee{
private String name;
private String designation;
Employee(String name ,String designation ){
this.designation = designation;
this.name = name;
}
//only Employee can change his name
private void changeName(String empName){
this.name = empName;
}
//only manager can change Employee designation
public void changeDesignation(String empDesignation){
this.designation = empDesignation;
}
}
但是
- 在这里我将
Employee.changeName()方法设为私有,以防止经理更改员工姓名,这是正确的方法吗? -
changeDesignation()方法在Employee类中可以同时访问Employee类它自己和Manager类这意味着 经理可以更改员工的名称,员工也可以更改他/她的名称,我想防止这种情况发生并让经理是唯一能够更改员工名称的人。如何在代码中实现它?
【问题讨论】:
标签: java oop uml encapsulation ooad