我想知道如何将for循环表示为类图。 所以基本上for循环包括Set,(至少)一个绑定变量/迭代器和body(参见图片)。
所以显然包容规则很简单,但是如何表达变量i和集合之间的连接以及变量i和正文之间的可能连接?
即:
for(int i = 0; i< set.length; i++){
// some statements referencing the iterator
// i.e. set[i] = i;
}
另外我知道在UML中有更好的图表来描述for循环(例如活动图),但我很感兴趣迭代集和迭代器之间的依赖关系如何表示为类图。
答案 0 :(得分:1)
这是正确使用的图表吗?
class diagram应表示类/类型之间的结构关系。它也可以代表约束。
但是类图不能代表控制流(例如条件,循环等......)。对于这些,您应该使用activity考虑sequence或combined fragments图表。
然而,您的问题突出了一个有趣的问题:如何表示迭代器和迭代容器之间的依赖关系?
类图中的迭代器
表示关系的一种方法当然是查看iterator design pattern,它使用navigable association到容器。
然而,并非所有迭代器实现都可以导航回容器(例如,链接列表的迭代器可能不知道链接列表作为整体而只知道当前元素)。在这种情况下,您将使用从迭代器到容器的simple dependency(带箭头的虚线)。您可以使用<<use>>
构造型明确表达含义:迭代器以某种方式依赖于迭代容器的结构。
如果需要,您还可以使用UML template作为容器,使用迭代器来显示容器中的对象类型/ interated on。
将for循环抽象为calss? 您的图表尝试表明您可能想要使用command design pattern来抽象一些要在容器上完成的操作(容器将是接收器)。在这种情况下,body本身不会是另一个类,但它将是一个在具体派生命令中被覆盖的方法。
但是,您的意图并不完全清楚,并且可能还需要考虑更合适的设计模式。