我一直在使用UML了一会儿,我读过几篇文章,书籍,论坛上关于它,但我还是不太懂,当两个类都应该有关联线(简单的线条或箭头连接(或者是这些不相同?))。 我将提供三个例子 - 你能告诉我哪一个会导致两个类是在这种关系?
1。
//a field of OtherClass
public class MainClass
{
private OtherClass other;
}
2。
//method argument
public class MainClass
{
public void Action(OtherClass other)
{ }
}
3。
//method return value
public class MainClass
{
public OtherClass Action()
{ }
}
4。
//used inside a method
public class MainClass
{
private Something something;
public void Action()
{
OtherClass other = something.GetOtherClass();
}
}
首先箭头代表该协会的适航性 。 单箭头指的单向关系,在这种情况下,只有源类知道目标类。 箭头两端意味着双向关系,其中两个班彼此了解。 如果没有箭头存在的关联可以是通过默认双向或抑制为可读性起见。 在实践中,只有当你想强调该协会的方向,你应该画箭头。
当涉及到你的第二个问题,只有第一种情况描述之间的(单向)协会MainClass
和OtherClass
。 无论是参数还是返回值意味着在UML意义上的关联(虽然两者暗示的依赖)。 在最后一个例子存在之间的关联MainClass
和Something
通过类something
属性。 作为一个经验法则,你应该寻找的属性关联。
请注意,有一个概念dependency
于UML,它是由虚线表示。
您好!
编辑:重写了以下的答案在评论中讨论(感谢黑猩猩您指出我的例4中忽略)
实施例1:OtherClass是MainClass的一个属性,并因此被建模为一个关联。
实施例2和3:OtherClass是类定义中引用的,虽然不是一个属性内存储的,因此,是一种依赖关系。
实施例4:类的东西是一个属性,因此关联,而引用OtherClass,它不被存储在一个属性,所以它是依赖。
在UML,依赖性和关联是两种类型的关系,并没有严格相关的(除非通过一个共同的超类型),但在我看来,一个协会暗示的依赖。
关联是由在每一端的多重的2类之间的线表示。 适航性由箭头示出哪个类是知道哪些指示(例如A类___> B类装置A知道B的,但不是周围的其他方法)在两个方向上可导航是通过在两端箭头表示。 在没有箭通常更安全做出任何假设有关适航除非另有说明。
依赖关系是通过与来自依赖类(客户端)的箭头的虚线向被依赖于类指示(供应商)(例如,----> B意指A是依赖于B)。 相关性表明,一类是在某些时候引用,这样客户端依赖于由供应商提供的操作,但它并不表示它是如何引用(不像表明存储在属性的引用关联)。
一个协会代表两个或多个相关属性。
在实施例1,具有MainClass类型OtherClass的属性。 如果OtherClass有型MainClass的明确属性,则会有类之间的双向关联; 如果OtherClass具有类型MainClass的隐特性(即不存在属性,但关系可以通过在另一个方向工作来导出),那么将有来自MainClass单向关联OtherClass。
在实施例2,3和4,MainClass不具有类型OtherClass的任何属性。 它是依赖于OtherClass了,所以会有从MainClass到OtherClass依赖关系。 在码,这是通过使用一个或#包括表示。