【问题标题】:How to implement an association class?如何实现关联类?
【发布时间】:2011-11-16 19:21:13
【问题描述】:

我的问题是,我该如何实现呢?

Exam * ____________ 1 Student
            |
            |
          Mark

我在 Internet 上进行了很多搜索,但没有找到任何关于如何实现关联类的明确答案。

【问题讨论】:

  • 好吧,您列出了 3 种不同的编程语言,还有谁知道为什么要使用 UML。选择一种语言,并确定您提到的这 3 种语言中的每一种都有用于关联类的内置机制。仔细看。
  • 我放了3种不同的语言,因为我不介意实现的语言,我只想知道如何实现。
  • 你真的是说只有一个学生才能参加考试吗? Student 旁边的多重性不应该是 * 吗?

标签: oop design-patterns language-agnostic


【解决方案1】:

一般来说,一个类指向另外两个类实例。它通常用于实现对象类型之间的多对多关系。

在 C# 中:

public class Product
{
    public string Name;
}

public class Department
{
    public string Name;
}

// An association class
public class ProductDepartment
{
    public Product Product;
    public Department Department;
}

【讨论】:

  • 那是多重性为 1-1 的时候,不是吗?当多重性为 1-* 时会发生什么?
  • 那么您不需要关联类,因为您只需将“*”类(“Exam”)的引用列表放在“1”类(“Student”)中即可。
  • 会是这样吗?学生 1 - * 考试 0...1 - 1 分?
  • @harpo in Student 1 ---- * 考试场景为什么不把学生参考放在考试课上?所以我们在每个考试对象中只有一个学生实例引用,而不是一个学生对象中的考试实例列表,有什么区别?除此之外,多对多关系呢?学生 * ---- * 考试?哪个类应该引用另一个类?
【解决方案2】:

【讨论】:

    【解决方案3】:

    正如 Pigueiras 所说:'会是这样吗?学生 1 - * 考试 0...1 - 1 分?那么 1-1 关系也不需要像 harpo 所说的“指向其他两个类实例的类”

    【讨论】:

      猜你喜欢
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多