【问题标题】:USE case to Class Diagram - How do I?用例到类图 - 我该怎么做?
【发布时间】:2010-03-12 07:01:03
【问题描述】:

我希望您能根据我的用例图(请参阅下文)准确地指导您如何创建类及其关系(泛化、关联、聚合和组合)。

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

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

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

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

任何帮助将不胜感激。提前致谢。

用例图

用例说明:

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

登录 任何用户只有已经注册才能登录。他们的用户名和密码将按照注册帐户时的方式进行验证。

搜索数据库 任何用户都可以输入数据类型为string的searchkey,系统会打开数据库,搜索searchkey,根据是否找到searchkey返回true或false,然后关闭数据库。

将数据添加到数据库 所有用户都可以输入一些数据,系统会打开数据库,存储数据,根据数据是否存储返回true或false,然后关闭数据库。

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

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

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

类图

【问题讨论】:

    标签: design-patterns oop class-design uml


    【解决方案1】:

    首先,如果您决心走建模之路,那么我会推荐 Rosenberg 和 Stephens 的一本书,Use Case Driven Object Modeling with UML。这经历了您所描述的过程:如何编写好的用例,从它们构建类图,从中构建序列图,以及(ta-da!)将其编码到工作软件中。您或许可以通过 Google 了解 ICONIX 流程并在线查找详细信息。

    一些休闲的cmet:

    • 任何用例图的“图”都是用例中最不有用的方面。图表上的每个椭圆代表一两段文字,讲述正在发生的事情。正是这段文字很有帮助。
    • 通常在用例中有名词类和动词方法。你的一些动词(Add_data_to_databaseLogout,...)是类而不是方法。
      • 如果您使用鼓励命令模式的框架,有时您会遇到这种情况。即使这样,命令对象也可以/应该只调用真实类上的方法。
      • 我会说您缺少一些名词(您在数据库中存储的数据类型是什么?)。如果你有这个,那么你会发现User's 和那些数据类之间的关系。

    【讨论】:

    • 感谢您的回复戴夫。感谢您的建议,我现在正在阅读 ICONIX 流程。我将以文本字符串的形式存储数据——这对初学者来说很简单。我会听取您的建议并写下这些段落并修改我的帖子。
    • 我听取了您的建议并仔细描述了每个用例。结果,我得到了一些有用的名词、名词短语和动词,这让我更容易创建我的类图。再次感谢戴夫。
    【解决方案2】:

    UC图好像没问题。

    我同意戴夫的评论。此外,我还想向您展示我的想法,为这样的 UC 图制作相应的类图。 (仅显示要点。)

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • EssWork 好像现在商业化了(2012 年 10 月)。
      【解决方案4】:

      您需要通过以下方式绘制上述场景的对象模型(类图) 识别类、其属性和相关功能。
      你应该展示不同之间的关系 组合、聚合和继承等类。

      【讨论】:

        猜你喜欢
        • 2018-01-16
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        • 2011-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多