类设计(UML类图)

时间:2011-02-22 18:47:42

标签: oop class-design uml

有人可以将他们的意见提供给以下场景:

我有一个Administrator类和一个Technician类(都扩展了User类,但除了这一点之外)。我还有一个RepairJob类,它通过修复的不同阶段代表一个项目{收到|正在修理|等待部分等}}。

只有管理员用户才能向系统添加新的修复作业,并且还能够查看当前正在进行的所有修复作业的状态。

技术人员需要能够从其他技术人员尚未接受的任何维修工作列表的角度接受维修工作。技术人员使用也必须能够更新自己接受的维修工作的状态,直到它准备好返回给客户(另一个班级)。

管理员将能够接受系统中的任何维修作业,即使是技术人员已经接受的维修作业,此时他们将无法再更新维修作业的状态。 (考虑到员工下班)

我的问题

有人可以让我深入了解如何收集RepairJob个实例。我一开始曾想过,既然管理员用户会添加这些实例,那么在Administrator类中对集合进行建模是个好主意,但是技术人员类也必须能够访问有限的集合。修理工作。我还创建了一个RepairJobs类,它有列表并且可用于任何一个类,但我不确定这是否是一个好的设计。

2 个答案:

答案 0 :(得分:2)

我认为它应该与Admin和Tech类分开。 RepairJob适用于单个任务;你所描述的内容听起来就像是一个维护一组RepairJobs并跟踪其状态的RepairJobManager。它根据与之交互的特定用户的角色执行规则。

package model;

public class RepairJobManager
{
    private Map<String, RepairJob> jobs;

    public void add(RepairJob job, Role role)
    {
        // Only allow Admin to do certain things.
    }

    public void update(RepairJob job, Status status, Role role)
    {
        // Only allow Admin to do certain things.
    }


}

答案 1 :(得分:1)

我的DDD视图:你需要一个包含RepairJobs集合的RepairJobRepository。您还需要一个具有类似操作的RepairService   - create(RepairJob jobSpec)(将创建的作业添加到存储库)   - 分配(RepairJob作业,角色角色)

RepairJob需要一个像updateStatus(Status newStatus,Person p)的方法 您需要获得p的角色来验证他是否可以更新状态。