【问题标题】:How do I model a graphical application using UML?如何使用 UML 为图形应用程序建模?
【发布时间】:2014-03-22 04:50:17
【问题描述】:

我很早就在大学里学习过 UML,但所有示例都是简单的控制台应用程序。现在我被分配开发一个带有图形界面(使用 Java)的项目,并且需要提交一个 UML 模型,我不知道如何将应用程序的图形前端方面与非图形后端类。我不太确定从哪里开始。

你建议我怎么做?

【问题讨论】:

标签: java class user-interface uml


【解决方案1】:

通常 UI 建模涉及 3 件事:

  • UI 的样子:这通常在 UML 中不做。您需要像 Visio 或 Pencil 这样的工具来执行此操作。
  • UI 的结构方式:这考虑了 UI 的结构方式。这些类如何相互关联(依赖关系、导航......)。它们与域类的关系。它们如何与用例相关(它们实现了哪些用例)。这自然适合 UML 结构图:类图、包图、组件图……
  • UI 在运行时的行为方式:某些操作如何导致创建对象和调用方法以执行所需的操作。这自然适合 UML 行为图:序列图、通信/协作图、活动图。

因此,基本上在您的 UML 模型中,UI 类(屏幕、小程序、页面...)将看起来像普通类。这将允许 UI 结构和行为适合您的应用程序view models

请注意,tools 利用 UML 配置文件提供 UI 模拟,以替代 Visio 等图形工具。在这个自定义配置文件中,您可能会发现名为 > 的原型类和名为 > 的原型依赖项来模拟 UI 元素如何触发 UI 导航到其他屏幕。

【讨论】:

  • 是的!谢谢你!具体来说,我想知道如何建模结构,如果你愿意的话,类图。例如,如果我要使用 JTextField 对 JFrame 建模,考虑到 JTextField 是从它自己的类实例化的,每个 TextField 是否会被建模为链接到 JFrame 的独立类?还是将其作为 JFrame 类中的 JTextField 类型的变量?
  • JTextField 将是 JFrame 类中的成员变量。如果你继承了 JTextField 类来制作自定义文本字段,你也需要它出现在模型中。
  • 太好了,我想我可以从这里拿走。非常感谢。
【解决方案2】:

我认为您需要首先询问您要建模的内容,然后确定 UML 是否有用,如果有用,哪些部分有用。首先询问谁将使用此模型以及用于什么目的。有目的的模型。

如果您想对应用程序的类结构进行建模,那么 UML 类模型可能会很有用。但即便如此,您是试图说明 UI 类或信息(域)结构,还是两者兼而有之?

如果您想展示运行时交互是如何工作的,那么序列图可能会很有用。

如果是模块之间的代码和依赖的模块化,包图可以做到这一点。

如果你有一个复杂的用户界面程序和复杂的组件结构,你想解释它,那么它与服务器软件没有什么不同,组件图会很有用。

每当创建模型时,请询问您为什么要这样做,为谁以及他们想要从中获得什么。这会让你选择一些有用的东西,而不仅仅是做“忙碌的工作”。

【讨论】:

  • 谢谢伙计,这些都是值得考虑的好事情。虽然我特别想知道如何在 UML 类图中对 UI 类进行建模?
  • @GilbertoTezcatlicóatl 与其他类结构的 UML 建模相比,我认为 UML 中的 UI 类建模没有什么特别之处。您将拥有模型类、视图类、控制器类、容器(例如)。你有什么具体的问题吗?
【解决方案3】:

除了前面的答案之外,UI 的常见设计是模型-视图-控制器 (MVC) 之一。一些 UML 工具实际上具有原型来帮助您表示这些元素。模型是您要显示的数据,视图是它的显示方式,控制器将两者联系起来,将输入带到 UI 并对其进行处理,以使用模型中的新数据更改显示。

为 MVC 系统创建序列图以显示操作及其效果也很容易且有用。

【讨论】:

  • good point@Bltorg:当我们谈论刻板印象时,我们是在创建扩展元类的配置文件,但这不是建模 UI 概念的标准方式。你怎么看?
  • 如果您的组织需要表达一些特定于其领域的元素,配置文件是创建特定领域建模语言 (DSML) 的有效方法,该语言将简化图表和理解用户。 DSML 可以提供比纯 UML 稍高的抽象级别,并提高您的生产力。在我想到的情况下,刻板印象通常只用于改变元素的形状,使它们在图表上很容易识别。因此,元类仅以图形方式扩展 - 语义不受影响。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多