2010-03-12 50 views
13

我希望您能够从我的USE案例图(请参阅下文)中准确地指导您如何创建类及其关系(泛化,关联,聚合和组合)。使用案例到类图 - 我如何?

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

我的类是否正确?或者我应该创建更多的课程?如果是这样,哪些类缺失?将注册,登录,注销,search_database和add_to_database连接到用户时应使用哪些关系?

我是新来的设计模式和UML类图,但从我的理解,关联关系将一个对象与另一个对象相关联;聚合关系是允许“一部分”属于多个“整体”(例如,信用卡及其PIN)的特殊类型的关联 - PIN类也可以用于借记卡类中;而构图关系是一种特殊的聚合形式,它允许每个部分一次只能属于一个整体。

我觉得我已经遗漏了一些课或什么东西,因为我似乎无法从我对关系的理解中找到关系。

任何援助将非常感激。提前致谢。

用例图

alt text

使用案例说明:

注册 任何用户都可以通过注册创建一个帐户。系统将验证用户名和密码,如果他们丢失或用户名已被占用,系统将拒绝他们。

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

搜索数据库 任何用户将比布尔输入数据类型的字符串的searchkey,系统将打开数据库,搜索searchkey,并返回true或false取决于searchkey是否被发现,并关闭数据库。

数据添加到数据库 所有用户都可以输入一些数据,系统会打开数据库,存储数据,返回true或false取决于是否被存储的数据,并关闭数据库。

注销 用户将按下注销按钮,系统将注销用户

从数据库 只有管理员删除可以从数据库中删除数据。

删除普通用户 只有管理员可以删除普通用户

类图

alt text

回答

11

首先,如果你决定往下走建模路径,那么我d推荐Rosenberg和Stephens的一本书,Use Case Driven Object Modeling with UML。这个过程完全按照你所描述的过程进行:如何编写好的用例,如何从中构建类图,如何构建顺序图,以及如何将其编码为工作软件。您可以通过Google获得ICONIX流程并在线查找详细信息。

一些休闲评论:

  • 任何用例图的“图”是用例的至少有用的方面。图中的每个椭圆代表一段或两段文字,讲述正在发生的事情。这是真正有用的文本。
  • 通常,您的用例中有名词的类和动词的方法。你的一些动词(Add_data_to_database,Logout,...)是类而不是方法。
    • 有时你会得到这样的东西,如果你使用鼓励命令模式的框架。即使如此,命令对象也可以/只应该调用真实类中的方法。
    • 我会说你错过了一些名词(你在数据库中存储了什么类型的数据?)。如果你有这个,那么你会发现User和那些数据类之间的关系。
+0

感谢您的回复戴夫。感谢您的建议,我现在正在阅读ICONIX流程。我将以文本字符串的形式存储数据 - 这对初学者来说很简单。我会听取你的意见,写出这些段落并修改我的文章。 – Anthony 2010-03-12 10:27:04

+0

我接受了你的建议并仔细地描述了每个用例。结果,我得到了一些有用的名词,名词短语和动词,这使得创建我的班级图变得更容易。再次感谢戴夫。 – Anthony 2010-03-13 19:29:39

1

为什么不能下载EssWork。 Esswork是开源的,它是基于敏捷实践的,由Ivar Jacobson Int制作,这个人创建了用例...他们在那里被称为基本用例练习,它描述了你如何将需求放到类...

+0

哇谢谢你,听起来很有趣,我现在就去看看。 – Anthony 2010-03-12 19:28:02

+1

看来EssWork现在是商业的(2012年10月)。 – Andrei 2012-10-26 11:14:23

2

UC图似乎没有问题。

我同意Dave的评论。除此之外,我还想向你展示我的想法,为这样的UC图做出相应的类图。 (示出就在主点。)

class diagram

0

enter image description here

您需要通过 识别的类,属性和相关函数来绘制上述场景的对象模型(类图)。
您应该必须展示不同的 类之间的关系,例如Composition,Aggregation和Inheritance。