用例图转类图 - 我该怎么做?

17

我想要请你指导我如何准确地从我的用例图中创建类和它们的关系(泛化、关联、聚合和组合)。

我正在尝试创建这个类图,以便可以使用它来创建一个简单的在线PHP应用程序,允许用户注册帐户、登录和注销,并从MySQL数据库存储、搜索和检索数据。

我的类是否正确?还是应该创建更多的类?如果需要,则缺少哪些类?当连接注册、登录、注销、搜索数据库和添加到数据库与用户时,应使用什么关系?

我对设计模式和UML类图还不熟悉,但据我了解,关联关系将一个对象与另一个对象相关联;聚合关系是一种特殊的关联关系,允许“一部分”属于不止一个“整体”(例如信用卡及其PIN - PIN类也可以用于借记卡类);而组合关系是聚合的一种特殊形式,允许每个部分一次只能属于一个整体。

我感觉自己漏掉了一些类或内容,因为我似乎找不到基于我的关系理解。

任何协助都将非常感谢。提前致谢。

用例图:

alt text

用例说明:

注册 任何用户都可以通过注册来创建一个帐户。系统将验证用户名和密码,如果缺少其中任何一个或者用户名已被占用,则会拒绝它们。

登录 只有已注册的用户才能登录。他们的用户名和密码将以与注册帐户相同的方式进行验证。

搜索数据库 任何用户都可以输入一个数据类型为字符串的搜索关键字,系统将打开数据库,搜索搜索关键字,并根据搜索关键字是否找到返回true或false,并关闭数据库。

添加数据到数据库 任何用户都可以向数据库添加数据。

所有用户都能够输入一些数据,系统将打开数据库并存储数据,根据数据是否存储成功返回 true 或 false,然后关闭数据库。

登出 用户将点击 登出 按钮,系统将登出该用户。

从数据库中删除 只有管理员才能从数据库中删除数据。

删除普通用户 只有管理员才能删除普通用户。

类图:

alt text

4个回答

14

首先,如果你决定走建模的道路,我推荐 Rosenberg 和 Stephens 的一本书,《使用案例驱动的UML对象建模》。这本书会详细介绍一个过程,正好符合你描述的内容:如何编写良好的用例,从中构建类图,再从而构建序列图,并将其编码为运行软件。你可以尝试在 Google 上搜索 ICONIX 过程,找到在线详情。

一些随意评论:

  • 任何用例图表的“图表”都是用例的最不实用的方面。每个椭圆形代表了一两段文本,讲述故事发生的情况。这个文本真正有帮助。
  • 通常,您需要根据用例中的名词和动词创建类和方法。一些动词(例如Add_data_to_database、Logout等)是类,而不是方法。
    • 有时,如果您使用鼓励命令模式的框架,就会出现这种情况。即使如此,命令对象也可以/应该只调用您真正的类上的方法。
    • 我会说你缺少一些名词(在数据库中存储哪种类型的数据?)。如果有了它,那么您将会在User和那些数据类之间找到关系。

谢谢你的回复,戴夫。感谢你的建议,我现在正在阅读ICONIX流程方面的资料。我将以文本字符串的形式存储数据 - 对于初学者来说非常简单。我会采纳你的建议,写出那些段落并修改我的帖子。 - Anthony
我采纳了你的建议,仔细描述了每个用例。结果,我得到了一些有用的名词、名词短语和动词,这使得创建我的类图变得更加容易。再次感谢你,Dave。 - Anthony

2

UC图似乎没有问题。

我同意Dave的评论。此外,我还想向您展示我的想法,为这样的UC图制作相应的类图。(只显示主要内容。)

class diagram


1
为什么不下载EssWork呢?Esswork是开源的,基于敏捷实践,由创建用例的人Ivar Jacobson Int制作。其中有一种叫做Essential Use case practice的实践,它描述了如何将需求转化为类...

2
似乎EssWork现在是商业产品(2012年10月)。 - Andrei Krivoshei

0

enter image description here

您需要绘制一个对象模型(类图),以识别类、其属性和相关函数,来描述上述情景。
您应该展示不同类之间的关系,如组合、聚合和继承。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接