java - 什么是多重性

标签 java uml

对于以下 Java 类,我不确定 A 和 C 之间以及 B 和 C 之间的多重性是什么......

仅供引用:A 类和 B 类可以调用此通用类 C 中的部分或所有方法。

我的猜测:

  1. A类(1)-----C类(*)
  2. B类(1)-----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
    }
}

最佳答案

一般来说,您会问,X 的单个实例可以存在多少个不同的Y 实例,反之亦然?在您的示例中,在类图上下文中讨论多重性并不完全有意义,原因有二:

  1. 您的 C 不维护对任何关联的 A 或 B 的引用。因此,充其量,它是一种单向关系。在谈到多重性时这是可以的,尽管在您的特定示例中不是这样(对于多重性没有意义,请参见第 2 点)。就多重性而言,忽略点 2,A 正好有 1 个 C,B 正好有 1 个 C,C 有 0 个 A 和 0 个 B。

  2. 您的关系采用局部变量的形式。因此,它并不是真正的类(Class)关系。一旦 A(或 B)的方法返回,这种关系就消失了。所以真的为这些类建立关联图不一定有意义。也许是调用者/被调用者图,但不是一般关联。

您的示例,其中 A 在其某些方法中本地使用 C,是依赖的示例,而不是关联的示例。 UML 通常为此使用虚线(尽管有些风格可能不同),多重性对此不起作用(抱歉质量差):

enter image description here

对您的示例进行了一些小改动,这些改动会使多重性相关。例如,保留 C 不变,但将 A 更改为:

class A {
   C<Ball> c = new C<Ball>();
   ...
   methodA(){
       c.method1();
   }
}

在这种情况下,A 恰好有一个 C,而 C 有零个 A(它是单向的)。 UML 看起来像(再次对质量感到抱歉):

enter image description here

也就是说,如果您进行上述更改,它就会变成零对一的关系。它是单向的,因为 C 不知道 A。

One more thing, when is it a many-to-many relationship for both (1) & (2)?

当 A 存储到多个 C 的链接时, C 存储到多个 A 的链接时,这是一个多对多关系。例如,学生在大学学习类(class)。每门类(class)包含多个学生,每个学生选修多门类(class)。例如:

class Student {
    Collection<Course> courses;
}

class Course {
    Collection<Student> students;
}

关于java - 什么是多重性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27090756/

相关文章:

java - 将后台应用程序置于前台

java - 我应该为我的适配器使用 View Holder 模式吗?

java - 正确使用图表

c# - 如何在通信图中表示循环?

java - 考虑到新引入的闰秒,一个 1 岁的(java)库如何正确执行 UTC 时间格式

Java:为什么同步在这里不起作用

java - 使用 createQuery()、参数和executeUpdate() 模拟 Hibernate 实体管理器

multithreading - 如何在UML序列图中建模并行线程

java - 在另一个类中使用一个类的实例是否算作依赖或关联?

uml - 如何在 UML 序列图中显示实例化?