我不确定A& A之间的多重性是什么? C,以及B& C,用于以下Java类......
仅供参考:A类和B类可以调用此通用C类中的部分或全部方法。
我的猜测:
如果我在这里弄错了,请纠正我。
还有一件事,它是什么时候(1)和...的多对多关系? (2)?
class A{
//methods in Class A only involve Ball objects
methodA(){
C<Ball> newObj=new C<Ball>();
newObj.method1();
}
}
class B{
//methods in Class B only involve Tennis objects
methodB(){
C<Tennis> newObj=new C<Tennis>();
newObj.method1();
}
}
class C<T>{
method1(){
//implementation here
}
method2(){
//implementation here
}
method3(){
//implementation here
}
}
答案 0 :(得分:2)
Multiplicity为您提供有关可以创建特定类型,属性值或要链接的已连接实例的实例数的信息。它与操作调用无关。 例如,如果关联端的多重性为[0 .. *],则表示连接到关联的另一侧的一个实例可以连接零个或多个实例。
A-C [0 .. *] = A的一个实例从零到无限的C连接实例。
答案 1 :(得分:2)
一般情况下,您会问, Y 的单个实例可以存在多少个不同的 X 实例,反之亦然?在您的示例中,在类图上下文中讨论多重性并不完全有意义,原因有两个:
您的C不会保留对任何关联的A或B的引用。因此,充其量只是一种单向关系。说到多重性时这是可以的,尽管不是在你的特定例子中(多重性没有意义,见第2点)。就多重性而言,忽略点2,A恰好为1 C,B恰好为1 C,C为0 A和0 B.
您的关系采用局部变量的形式。因此,它实际上不是一个阶级关系。一旦A(或B)的方法返回,该关系就消失了。因此,为这些类建立关联图并不一定有意义。也许是一个来电者/被调用者图,但是一般的关联,没有。
您的示例,其中A在其某些方法中本地使用C,是依赖的示例,而不是关联。 UML通常使用虚线(尽管某些风格可能不同),并且多重性不会发挥作用(对于质量差的原因):
您的示例中有一些小的更改会使多样性相关。例如,将C保留为原样,但将A更改为:
class A {
C<Ball> c = new C<Ball>();
...
methodA(){
c.method1();
}
}
在这种情况下,A只有一个C,而C有零A(它是单向的)。 UML看起来像(再次,抱歉质量):
也就是说,如果你做出上述改变,它就变成了一对一的关系。它是单向的,因为C不知道A.
还有一件事,它是什么时候(1)和...的多对多关系? (2)?
当A存储指向多个C的链接时,它是多对多关系,和 C存储指向多个A的链接。例如,学生到大学的课程。每门课程都包含多个学生,每个学生都需要多门课程。 E.g:
class Student {
Collection<Course> courses;
}
class Course {
Collection<Student> students;
}