2

我和我的大学教授就 UML 图进行了讨论。他认为应该在绘制类图之前绘制序列图,但我认为恰恰相反。我认为在完成用例图之后,下一个图应该是类图,然后我们应该进入序列图。Rational Rose 要求我们使用序列图中的类,这些类已经在类图中。

谁能帮我这个?

4

8 回答 8

9

我觉得你们俩都错了。它们应该同时绘制。当您绘制序列图时,毫无疑问,您将提出跟踪状态所需的属性,或者如果您在真空中绘制类图时您没有想到这些属性。

当然,这是非常主观和个人的,但多年的现实世界经验(与学术理论​​相反)教会我同时研究两者。可能从类图开始,但是当您开始处理流程时,类图总是会发生变化。

于 2011-01-10T16:48:49.660 回答
4

好吧,这在很大程度上取决于您计划如何做事。我认为这是一个主观问题。如果您更愿意解释为您的用例执行的操作,并在完成此操作后根据您需要执行的序列编写课程,您的教授是正确的。

但是,如果您希望确定类的结构是什么,然后将动作序列调整到这一点,那么您将先绘制类图,然后再绘制序列。

根据我的经验,我同时做它们。我将基本属性放在类图中,但没有放在动作中,在制作序列图时,我将需要的方法和属性添加到类图中。

于 2011-01-10T16:49:50.063 回答
1

没有一个标准答案。有几种观点、方法和方法。在统一流程中,我相信您首先确定用例,然后为它们实现,例如序列图。在用例中,参与者和系统和/或其部分按顺序交互。实际上,这种交互应该可以帮助您分解您的设计并进入课程。一旦你有了分析级别的类,你就可以进一步设计类和设计交互。然而,这些在图表中绘制的内容相当多,大多数时候代码是这个级别的最佳文档,即使生成的图表太大并且比代码本身更难以理解。

于 2011-01-10T17:44:46.500 回答
1

要准备序列图,您需要类而不是类图您可以在准备序列图的过程中即时准备空类.... 识别类对象是准备序列的一部分,或者您可以尝试事先识别您的对象。 ...序列是逻辑过程,而类图是最终输出

于 2011-03-17T12:18:17.303 回答
0

你需要买一些衣服,你将如何进行。您先开始选择衣服,还是先决定去哪里?同时,如果你想买衬衫,你会去鞋店吗?

所以两者都是迭代的,但第一步肯定是非常高(组件)级别的序列,然后深入到类级别序列

于 2011-01-13T09:04:21.727 回答
0

除了最简单的系统之外,所有系统的结构和行为模型都是自然地同时和迭代地创建的,随着时间的推移不断完善。

您可能有一些“对象发现”方法,例如 CRC 卡,它将产生一组初始类,具有协作(它们与之交互的类)和职责,它通知它们将需要的方法以及内部行为/状态/活动。

然后,您可能希望使用序列图或通信图来探索用例和场景,这将公开所需对象通信的细节,因此通知公共方法和关系的生成以改进类图,同时探索系统行为这可能会产生更多要创建的对象和类。

您可能还想探索类的内部行为,尤其是当它们具有状态和/或主动行为时;活动和状态机图对此很有用。

无论哪种方式,我都怀疑 Rational Rose 的使用是否真的是图表创建顺序的决定因素。Rational 可能需要序列图上的类存在,但我想它们实际上不需要出现在类图上;它们可能同样可以在序列图上创建,然后放在类图上,甚至可以在项目资源管理器或该工具中的任何等效项中创建。即使创建类的唯一方法是将其放在类图上,这也不需要您在探索序列图上的交互之前细化和完成类或其关系。

于 2011-01-11T23:10:16.090 回答
0

我认为创建图表没有顺序,因为两者都是系统的两种不同视图:类图结构(静态)和序列是行为(动态)。我将从序列图开始,因为您会在浏览序列时发现更多要创建的类。做任何对你当时有意义的事情。如果你做更多的面向对象编程,我会考虑在序列之前做类。

于 2011-01-10T17:06:31.890 回答
0

您应该首先确定您的应用程序流程,这意味着您应该首先绘制一个序列图。之后它将显示您的应用程序的流程,您应该使用类图。

于 2016-07-12T11:59:12.507 回答