问题标签 [uml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2879 浏览

interface - UML aggregation when interfaces are used

How do I represent an aggregation relation between two classes in UML, such that each class has a link to the other class's interface, not the implementing class?

E.g. I have a class Foo that implements iFoo, and Bar that implements iBar. Foo should have a member variable of type iBar, and Bar should have a member variable of type iFoo.

If I create an aggregation between the two implementing classes, then the member will be of the type of the implementing class, not the superclass. And aggregations between interfaces are invalid in UML (and don't make much sense).

0 投票
2 回答
769 浏览

coding-style - 是否可以在代码库中嵌入 Cockburn 风格的文本 UML 用例内容以提高代码可读性?

在代码中试验 Cockburn 用例

我正在编写一些复杂的 UI 代码。我决定将 Cockburn 用例用于鱼、风筝和海平面(由 Martin Fowler 在他的《UML Distilled》一书中讨论)。我将 Cockburn 用例封装在静态 C# 对象中,以便我可以针对代表 UI 工作流程中步骤的静态常量测试逻辑条件。这个想法是您可以阅读代码并知道它在做什么,因为包装的对象及其公共内容通过名称空间为您提供了英语用例。

此外,我打算使用反射来抽出包含所描述用例的错误消息。这个想法是堆栈跟踪可以包含一些英语用例的 UI 用例步骤。结果证明这是一种有趣的方式来实现一个迷你的、伪轻量级的域语言,但无需编写 DSL 编译器。所以我的问题是这是否是一个好方法?有没有人做过类似的事情?


c# 示例片段如下

假设我们有一些 aspx 页面,它有 3 个用户控件(有很多可点击的东西)。用户必须单击一个特定用户控件中的内容(可能进行某种选择),然后 UI 必须在视觉上提示用户选择成功。现在,当该项目被选中时,用户必须浏览网格视图以在其他用户控件之一中找到项目,然后选择某些内容。这听起来很容易管理,但代码可能会变得丑陋。

在我的例子中,用户控制主页捕获的所有发送的事件消息。这样,页面就像 UI 事件的中央处理器一样,可以跟踪用户点击时发生的情况。

因此,在主 aspx 页面中,我们捕获了第一个用户控件的事件。

因此,在 MyCompany.MyApp.Web.UseCases 命名空间中,我们可能有这样的代码:

嵌入在类中的工作流用例可以是内部类或静态方法或枚举或任何为您提供最干净命名空间的东西。我不记得我最初做了什么,但你明白了。

0 投票
3 回答
512 浏览

oop - 糟糕的 OO 设计问题 - 我需要 Java 中的一些通用功能,但不知道如何实现它

我正在用 Java 开发一个小型 UML 类编辑器,主要是一个个人项目,如果我有时间在上面创建一个项目,它可能最终会出现在 SourceForge 上。

该项目非常先进:我可以创建类、移动它们、创建接口、创建链接等。

我正在处理的是用于设置类/接口属性和创建新类/接口的对话框。

例如,我有一个扩展 JDialog 的类。这是编辑类和接口的主要“窗口”(好吧,每个都有一个类)。它包含一个 JTabbedPane,而 JTabbedPane 又包含 JPanel。

这个 JPanel 实际上是自定义的。我创建了一个扩展 JPanel 的抽象类。此类使用组件(由其子类定义)并将它们的值添加到 JTable(也包含在 JPanel 中)。

例如,如果我想编辑一个类的属性,JPanel 将包含一个用于输入属性名称的 JTextField 以及另一个用于输入其类型的 JTextField。还有一组按钮用于处理在这些字段中输入的数据。当我单击“保存”时,我在 JTextFields 中输入的数据被添加到 JTable 中(à la Enterprise Architect)。扩展抽象类的具体类负责定义控制并决定当从 JTable 中添加或删除行时如何处理数据。然而,JTable 管理是抽象类的职责。

这是我的问题:在 OO 中,类有方法,接口也有方法。我告诉自己:我可以使用相同的具体自定义 JPanel(AttributesPanel(它扩展了我创建的抽象 JPanel 类))来存储类或接口的方法。

但是,该类需要保留我正在处理的类或接口的副本(作为属性)。这样,当向其中添加方法时,我可以调用editedClass.addMethod()(或editedInterface.addMethod())。问题是我无法判断我是在使用类还是在接口上工作。

我找到的解决方案很丑:在 AttributesPanel 类中保留一个属性editedClass 和一个属性editedInterface。根据我是在编辑类还是接口,其中一个属性将为空,而另一个则不会。

如果你问我,这很丑陋。事实上,我可以听到我的软件工程老师在地狱的第九圈燃烧(实际上,冻结)时痛苦地尖叫。

解决此设计问题的快速方法是创建一个名为“ObjectWithMethods”的接口,我的 Class 和 Interface 类将实现该接口。这样,我只需在我的 AttributesPanel 类中放置一个 ObjectWithMethods 参数。

但这是否意味着我应该创建一个名为“ObjectWithAttributes”或“ObjectWithBlahBlah”的类?我在这里看到了一些很好的“TheDailyWTF”潜力......此外,我认为我不应该修改我的域对象(类、接口、注释、关系(对于我的 UML 编辑器))或创建一个新接口只是为了一些 UI 考虑....

你怎么看?

我你需要更多的澄清(因为我现在很累,而且在这种心态下我往往做得很糟糕(尤其是英语 - 我的母语是法语)......),请问我会编辑这个问题。

干杯,

纪尧姆。

0 投票
3 回答
1571 浏览

architecture - UML 连接器方向

在 UML 组件图中对架构进行建模时,如何同时显示连接器的各种属性?喜欢

  • 业务对象信息流(A->B、B->A、A<->B)
  • 请求/响应方向
  • 同步/异步行为

我知道其他图表类型,如序列图。但是,让这些信息在组件图中可见是有价值的。

除了关联(仅显示组件已连接)或“棒棒糖”(请求/响应)之外,还有什么可能?

0 投票
6 回答
1975 浏览

language-agnostic - 序列图能否以与代码相同的深度真实地捕捉您的逻辑?

我一直使用 UML 序列图,并且熟悉 UML2 符号。

但我只用它们来捕捉我打算做的事情的本质。换句话说,图表总是存在于实际代码之上的抽象级别。每次我使用它们来尝试准确地描述我打算做什么时,我最终都会使用如此多的水平空间和如此多的 alt/loop 帧,这不值得付出努力。

所以理论上可能是可能的,但有没有人真正使用过这个详细程度的图表?如果是这样,你能提供一个例子吗?

0 投票
10 回答
1227 浏览

uml - 您是否先设计/草图/绘制开发解决方案,然后再进行开发?如果有怎么办?

我经常与希望在他们的业务中更好地使用技术的决策者合作。我发现一张图片胜过一千个单词,并且在某种图表中对系统进行原型设计总是有助于讨论。我已经使用 Visio、UML(有点)、思维导图、流程图和模拟 WinForms 来启动这些赞助商的愿景,以确保每个人都在同一个页面上。我似乎一直在寻找可用于将业务愿景与开发流程结合起来的通用流程,以便我们都以相同的方式结束,“解决问题的功能”。

我正在寻找有关如何处理设计过程的建议或 Cliff 注释,以便它适用于可能只需要一周时间开发的应用程序,但也可以用于包含更大的项目。

我知道这深入到 UML 领域,但我发现我很难找到适当使用各种图表类型的指南,更不用说帮助业务用户理解图表并与它们相关联了。

您使用什么来捕捉系统/应用程序的愿景,然后呈现给项目的发起人?(所有在你写一行代码之前)......

0 投票
2 回答
2460 浏览

model - 我可以在 UML 的领域模型中显示泛化关系吗

我想问是否可以在 UML 中显示域模型的泛化关系,尽管我知道我可以在类图中做到这一点?除了在类图中,我没有看到太多显示泛化关系的域模型示例。如果不可能,显示域模型中的实体是实体 A 或实体 B 或实体 C 或实体 D 等的最佳方式是什么?

0 投票
5 回答
657 浏览

uml - 你会在用例图上展示演员不能做的事情吗?

在用例图上,您能否展示参与者不能做的事情,例如因为他们没有权限去做?

还是因为它们没有将它们与特定用例连接起来的事实而只是暗示?

0 投票
9 回答
22113 浏览

automation - 从文本文件渲染 UML 图

是否有任何好的工具或工具链允许从文本源文件创建 .svg 格式的 UML 图像?这个问题的原因是我想自动生成这些图像,以避免必须手动创建和更新这组图像。

0 投票
4 回答
5187 浏览

class - 汽车经销商的领域建模或类图

我正在尝试在 UML 中为汽车经销商绘制域模型或类图。我不知道如何在模型中展示试驾。一种方法是预约课程,然后作为子课程试驾。经销商还提供售后车辆服务,因此我可以将预约/预订类作为超级类,然后将车辆服务和试驾作为两个子类。

另一种方法是让客户类与预约类下的试驾类和车辆服务类有直接关系。

经销商还销售新车和二手车及其零件。

经销商还为汽车销售提供融资。

试驾类与车辆类有关系还是显示器和试驾类有单独的类?

另一个问题是如何在模型中显示潜在客户及其对销售和服务的查询。如果允许出于营销目的,经销商希望保存潜在客户的详细信息。我应该有两个类:一个用于客户,一个用于潜在客户,还是可以通过使用客户类中的属性来实现?