EmployeeManager的java设计数据结构
问题是设计员工/经理系统的结构
1)员工属于经理
2)一名经理有多名员工
3)经理也可能属于经理
4)员工只有一名经理
设计数据结构,使其支持以下操作:删除员工/经理、晋升(员工成为经理)
任何编程语言都可以
注意:我不想要代码。只要口头解释就可以了
你可以在下面搜索框中键入要查询的问题!
问题是设计员工/经理系统的结构
1)员工属于经理
2)一名经理有多名员工
3)经理也可能属于经理
4)员工只有一名经理
设计数据结构,使其支持以下操作:删除员工/经理、晋升(员工成为经理)
任何编程语言都可以
注意:我不想要代码。只要口头解释就可以了
# 1 楼答案
我想说的是,首先找出实体(你已经有了,员工和经理)。 现在根据您的约束找出关系:
员工可以是经理
选项
Class
员工“拥有”(关联)List
Employee reportsTo
)的引用李>以上两个选项中的疼痛区域: 选项#1如果删除经理,则员工列表将成为孤儿(没有经理的员工) 选项#2如果希望看到单个经理下的所有员工,则需要遍历所有员工以获取经理employeeID
期待其他答案
# 2 楼答案
你只需要一张桌子:
此表有一个对自身的引用(manager_id->;id)
如果记录在“manager_id”字段中有空值,那么它就是一个顶级管理者。所有其他记录都应该在“manager_id”字段中有一些值,这是对PrimaryKey字段“id”的引用
# 3 楼答案
从德斯金的角度来看,我会使用复合设计模式。[composite digaram]:http://en.wikipedia.org/wiki/File:Composite_UML_class_diagram_(fixed).svg。每个员工(可能是经理)都持有指向其经理的指针,每个经理持有指向其员工的指针列表。但只有一个类别(员工)
# 4 楼答案
我的第一个想法是使用employee作为基类,使用属性manager作为指向manager对象(以及其他必要属性,如'id')的指针,使用类manager,继承自employee,并带有指向员工的指针列表
这可以包装在一个模型中,其中包含所有员工/经理的列表,以及诸如“提升(员工)”之类的方法。Employee还可以有一个类似于“promote”的方法,它返回一个manager对象。manager类可以有一个带employee参数的构造函数
更新(C#代码):
就像这样