在设计域模型和类别形式时,我很难理解将其放入其中的内容。

我将举一个我的意思:

我正在做一个假期调度程序,其中有一个 AdministratorEnd-Users. 。这 Administrator 做几件事,例如注册 End-Users 在程序中,更改其流行等。 End-User 可以选择他的假期,等等。

我最初定义了一个 AdministratorEnd-User 作为域模型中的概念,后来又作为类别图中的类。在课堂上,两个类最终都有几种方法

Administrator.RegisterNewUser();
Administrator.UnregisterUser(int id);

等等

只有一段时间后,我才意识到这两个 AdministratorEnd-User 是演员,也许我认为这个设计完全错误。我可以从域中定义其他类以执行这些要求,而不是填写管理员和最终用户类,而是要处理这些类别,并让控制器处理用例用例)。我可以有一个 UserDatabase.RegisterNewUser()UserDatabase.UnregisterUser(int id);, ,例如,不用在 Administrator 班级。

这个想法是试图将整个度假胜地视为具有一系列功能的“封闭图”,并且不必为诸如身份验证之类的事物而烦恼,应该是内部/受保护的,是唯一的公众我会让外界看到的事情就是它的控制者。

这是正确的方法吗?还是我完全错了?将演员放入域模型/类别形式中通常是坏主意吗?什么是好的经验法则?

我的讲师正在关注 应用UML和图案, ,我发现这很糟糕,所以我想知道我可以在哪里查找有关此描述的演员模型情况的更多信息。

我仍然对所有这一切有些困惑,因为这种新方法与我以前所做的任何事情都有根本不同。

有帮助吗?

解决方案

我不会说,正如您推测的那样,您的设计是完全错误的,实际上,管理员和最终用户是有效的域对象,应该以某种方式在类图中表示。仅仅因为您将这两个实体识别为演员并不意味着应该将它们排除在域之外,请记住,您的域是您的范围或“相关上下文”,即在您的中起相关角色的一组有用对象解决方案。

您可能会从构成模型的基本对象开始,只需将它们写下来,而无需进一步分析,例如大脑冲刺...

  • 假期
  • 地点
  • 旅行社
  • 日程
  • 用户
  • 预订
  • 预订服务(这可以是访问度假预订物的界面)

然后,尝试建立这些对象之间的关系,如果找不到任何关系,这意味着您没有选择正确的对象,如果它们是同一问题域的一部分,那么它们必须以某种方式关联。

一段时间后,您会发现缺少对象,尝试尽可能多地封装对象,并表示正确的抽象,设计模式可能会帮助您解决这个问题。

当每个可能的对象都用其所有属性和方法表示时,那么您应该拥有一个完全(尚未完成)功能设计。

我知道您应该有很多理论,所以请毫无恐惧地开始,我本人在工作中成功使用了这种方法。

终于得到了 UML蒸馏

问候,

其他提示

我认为您应该了解更多有关域建模和从用例中获得类图表的过程的更多信息。演员作为分类器可以成为类图的一部分,但是对于用于分析和设计的类图,正在为您开发的系统建模,并且演员是外部实体。当您使用用例和用例图时,目标是识别功能性和非功能性重新提示,因此定义了与您正在开发的系统进行交互的系统和外部实体的范围和外部实体 - 角色或系统。在用例图中,您有时会发现一个代表系统边界的框,该框包含所有用例,这些用例将在您的系统中实现,但演员在开箱即用。当域建模时,您通常会完全忘记系统,因为您想捕获域的工作方式。通常,特殊图和建模元素用于域建模。正如我所说,关键是要了解使用系统的域。分析和设计阶段中的类图描述了您正在开发的系统,因此无法进行任何参与者。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top