在与 C++ 实现相关的类图中描述员工职业的合适方法是什么?

问题描述

假设我有一个基类 User,它包含所有必要的信息(登录名、姓名、邮件...)。派生自 AdministratorUser 类可以创建新的和删除现有的 User

我还需要 3 个类:ManagerWorkerProjectManagerWorker 都从 User 派生,但它们中不需要额外的成员或方法使它们成为空类。

在视觉表示方面,如果我像这样将 ManagerWorker 聚合到 Project,我发现这很容易理解:

class diagram bit - aggregation

问题是我还希望 Administrator 能够访问所有 Managers 的列表和 Workers 的列表。此外,Project 应该能够返回其 ManagerWorker。在 C++ 中,要获得这样的列表,恐怕我会检查每个 User 的类类型以将其过滤掉。我觉得这不是正确的方法吗?

对此的解决方案可能不是创建Manager,也不是创建Worker 类,而是添加一个名为occupation/designation 的User 属性,该属性将是一个字符串。然后过滤过程会变得更简单,成本也可能更低。

如果我走这条路线,我最终会得到不准确的图表,其中多个 User 聚合到 Project(或多个项目)并且无法区分经理和工人.

有人可以对这个主题有所了解,并提供一些图形示例吗?

解决方法

我同意彼得的看法。如果没有关于您的问题域的更多信息,我会将 Manager、Admin 和 Worker 视为“角色”而不是用户类型。像这样:

Users and Roles

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...