java - 描述这棵树的最佳方式,如 UML 中的多项选择题/答案算法

标签 java algorithm uml

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

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

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]      

类图会描述类之间的关系,但不会描述问答流程。

对象图包含太多关于对象之间的关系和对象内部结构的信息,这会导致我们难以阅读我们感兴趣的问答流程。

如果问题是真或假, Activity 图会很好用,然后决策菱形图标可用于真假流程。但如果一个问题有 7 个可能的答案,那将行不通。

所以我的问题是找到能够以最基本和清晰的方式描述类似流程的图表类型。

最佳答案

不同的图表用于不同的事物并提供不同的细节模型。如果你想在你的模型中呈现类之间的关系,那么类图有两个关联

Question 1 <-- answers --> 1..* Answer
Answer 1 <-- follow-up --> 0..1 Question

会很好(我有意不说任何关于类的事情,因为我不想建议实现)。在某些工具中,例如 Enterprise Architect,您可以使用此图生成源代码。根据你的问题,我认为这就是你想要的。

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

关于java - 描述这棵树的最佳方式,如 UML 中的多项选择题/答案算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29382468/

相关文章:

java - BufferedOutputStream 未将所有内容写入文件

Java 菜单驱动编程和循环

UML如何指示一个类向同一类发送请求

uml - 如何绘制通过 super 构造函数传递参数的UML图

javascript - 尝试在 Nashorn 上运行 browser.js 时 <eval> 中的 char 类中的空范围

java - 子弹的行进方向不正确?

string - 将字符串转换为插入次数最少的回文

algorithm - Haskell 中的平衡分区

c++ - 数组中两个数之和的最小差值

interface - 如何在UML中表示接口(interface)和类之间的关系?