首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >描述这棵树的最佳方式,就像UML中的多项选择题/答案算法

描述这棵树的最佳方式,就像UML中的多项选择题/答案算法
EN

Stack Overflow用户
提问于 2015-04-01 11:40:21
回答 2查看 404关注 0票数 1

有两个类:问题和答案。问题实例包含一个答案列表,每个答案都指向一个后续问题。因此,每个选择的答案都会触发一个相关的下一个问题,直到选择了没有后续问题的答案。

UML图应该是什么样子,才能最好地描述这样的调查问卷流程:

代码语言:javascript
复制
Q1: "Are you hungry?" [Yes, No]
  Yes->Q2: "What do you want to eat?" [Apple, Pear, Banana]
      Apple->Q4: "Green or red?" [Green, Red]
      Pear ->Q5: "Big or small?" [Big, Small]
  No ->Q3: "Are you thirsty?" [Yes, No]
      Yes->Q6: "What would you like to drink?" [Tea, Coffee, Water, Vodka]
          Tea  ->Q7: "Any sugar?" [1 spoon, 2 spoons, 3 spoons]
          Vodka->Q8: "Are you old enough for it?" [Yes, No]      

类图将描述类之间的关系,而不是问题-回答流。

对象图会包含太多关于对象之间的关系和对象内部结构的信息,这将使我们很难读取我们感兴趣的问题/回答流。

如果问题是对或错,活动图可以很好地工作,那么决策菱形图标可以用于对和错的流程。但是,如果一个问题有7个可能的答案,这就不起作用了。

因此,我的问题是找到一种能够以最基本、最清晰的方式描述这样的流程的图表类型。

EN

回答 2

Stack Overflow用户

发布于 2015-04-01 12:12:24

不同的图表用于不同的事情,并提供不同的细节模型。如果您想在模型中显示类之间的关系,那么使用两个关联的类图

代码语言:javascript
复制
Question 1 <-- answers --> 1..* Answer
Answer 1 <-- follow-up --> 0..1 Question

将会很好(我故意不说任何关于类的内容,因为我不想建议实现)。在一些工具中,例如Enterprise Architect,您可以使用此图来生成源代码。基于你的问题,我想这就是你想要的。

另一方面,如果你想显示控制流,那么你应该使用behaviour diagrams中的一个。序列图或通信图显示了模型的对象如何相互交互(使用哪些方法)来实现特定的用例。如果您在模型中使用状态,那么您可以在状态机图表上显示它。

票数 1
EN

Stack Overflow用户

发布于 2015-04-02 17:35:47

您似乎对描述/建模“过程流”的两种可能性感到困惑:

  1. 在类型级别,您可以在对象/实例级别描述Q&A流程类型
  2. ,其中您可以描述特定的Q&A流程,例如示例中关于Q1、Q2等的Q&A流程。

您可以使用对象/实例级模型来描述示例或设计内容。

但对于设计软件应用程序,您需要在类型级别进行建模。但是你的问题的流程模式是如此简单,你不需要任何行为模型,真的。从类图(如Marek Adamek的答案中所描绘的)完全可以理解,在类图中,流程从一个问题循环到它可能的答案之一,然后循环到这个答案的后续问题(然后到下一个迭代)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29382468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档