2010-06-05 76 views
2

在设计领域模型和类图时,我很难理解要在其中放置什么。我应该把演员放在域模型/类图中吗?

我会给我的意思的例子:

我做一个假期调度程序,有一个AdministratorEnd-Users。该Administrator做了几件事情就像在程序注册End-Users,改变他们previleges等End-User可以选择自己的休假天等

我最初定义的AdministratorEnd-User作为域模型的概念,并后来作为班级图中的班级。 在类图,这两个类最终只有一段时间,我意识到,其实都AdministratorEnd-User是演员后像

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

两个方法,也许我得到这个设计完全错误。我不是用方法来填充管理员和最终用户类来完成我的用例请求,而是可以从域中定义其他类来完成它们,并让控制器处理用例(实际上,我决定为每个类用例)。例如,我可以使用UserDatabase.RegisterNewUser()UserDatabase.UnregisterUser(int id);,而不是在Administrator类中使用这些方法。

这个想法是试图将整个休假日程安排程序想象成一个“封闭程序”,它具有一组功能并且不用担心身份验证等问题,这应该是内部/保护的,存在的我让外部世界看到的唯一公共事物就是它的控制者。

这是正确的做法吗?或者我完全错了?把Actors放在领域模型/类图中通常是不好的主意?对此有什么好的经验法则?

我的讲师正在关注Applying UML and Patterns,我觉得这很糟糕,所以我想知道我可以在哪里查找有关此描述的演员模型情况的更多信息。

对于这一切,我仍然有点困惑,因为这种新方法与我以前做过的任何事情截然不同。

回答

3

我不会说你的设计就像你猜测的那样是完全错误的,实际上管理员和最终用户都是有效的域对象,应该以某种方式表示在类图中。仅仅因为您将这两个实体标识为参与者并不意味着他们应该被排除在域名之外,请记住,您的域名是您的范围或“相关背景”,也就是说,您的域中扮演相关角色的一组有用对象解。

您可以从组成模型的基本对象开始,只需将它们写下来,不需要进一步分析,如脑力激荡......

  • 度假
  • 位置
  • 旅行社
  • 附表
  • 用户
  • 预订
  • 预订服务(这可能是用于访问假期预约东西接口)

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

经过一段时间后,您会发现存在缺失对象,尝试尽可能封装,并表示正确的抽象,Design Patterns可能会帮助您解决这个问题。

当每个可能的对象都用其所有属性和方法表示时,则应该有一个完整但尚未完成的功能设计。

我知道你应该有很多理论在你的脑海里,所以走吧,没有恐惧,我自己在工作中成功地多次使用这种方法。

最后得到UML Distilled

问候副本,

2

我想你应该了解的领域建模和用例得到类图的过程。作为分类器的参与者可以是类图的一部分,但是用于分析和设计的类图是对您开发的系统进行建模并且参与者是外部实体。当您使用用例和用例图时,目标是确定功能性和非功能性需求,因此定义开发系统的范围和外部实体 - 角色或系统 - 与您正在开发的系统进行交互。在用例图中,您可以找到一个代表系统边界的框,其中包含所有用例,这些用例将在您的系统中实现,但演员开箱即用。在进行域建模时,通常会忘记系统,因为您想要捕获域的工作方式。通常使用特殊的图表和建模元素进行域建模。正如我所说的,重点是了解系统将被使用的领域。分析和设计阶段的类图描述了你正在开发的系统,所以没有演员可以在里面。

相关问题