当前位置: 首页 > 面试题库 >

UML:如何在Java中实现Association类

王昆
2023-03-14
问题内容

我有这个UML协会类。注意:水平线是实线,垂直线是虚线。

 ---------                  ---------
|         |*(a)        *(b)|         |
| CLASS   |________________|  CLASS  |
|STUDENT  |     |          |  COURSE |
 ---------      |           ---------
                |*(c)
          ______|______
         |             |
         |             |
         |  CLASS      |
         | TRANSCRIPT  |
         |_____________|

我了解这种关系,但是在实现此UML进行编码时遇到了一些问题。我可以实现类Student与类之间的关系Course以进行编码。这是我的代码:

class Student {
  Vector<Course> b;
}

class Course {
   Vector<Student> a;
}

但是,在课堂上Transcript,我对如何在代码中使用此类不太了解。是阶级Student和阶级的财产吗Course?因此,如果是这样,那么代码将是:

class Student {
  Vector<Course> b;
  Vector<Transcript> c;
}

class Course {
  Vector<Student> a;
  Vector<Transcript> c;
}

是真的吗 如果这是错误的,请教我如何实现此UML。

谢谢 :)


问题答案:

首先,不要使用Vector,因为它是一个古老的类,不应再使用10年以上。使用SetList

如果Transcript班级包含有关学生参加课程的方式的信息(例如,其订阅课程的日期),则可以这样实现:

class Student {
    Set<Transcript> transcripts;
}

class Transcript {
    Student student;
    Course course;
    Date subscriptionDate;
}

class Course {
    Set<Transcript> transcripts;
}

这不会阻止您在Student中提供一种返回其所有课程的方法:

public Set<Course> getCourses() {
    Set<Course> result = new HashSet<Course>();
    for (Transcript transcript : transcripts) {
        result.add(transcript.getCourse());
    }
    return result;
}

如果Transcript不包含任何信息,则可能可以对如何在数据库表中映射这些类进行建模,其中在两个表之间进行多对多关联的唯一方法是使用持有ID的联接表。两个关联的表。



 类似资料:
  • 我一直在努力尝试让Bouncy Castle Scrypt进入我的web应用程序进行密码加密。我对Java编程和安全性相当陌生。 我试着查看了Bouncy Castle的Scrypt类文档。然而,我真的很难弄清楚它是如何工作的。它似乎并没有真正给出如何创建类或诸如此类的信息。 我在Stack Exchange和Google上搜索了一下,看看是否有什么地方可以给出一个很好的示例,说明我应该做什么来创

  • 我正在使用Obeo UML Designer V.8.0.0(从这里下载的最新版本)来设计一个UML数据模型,并且我想生成对应于该模型的Java类。如何生成类?

  • 问题内容: 数组在Java中被实现为对象,对吗?如果是这样,我可以在哪里查看数组类的源代码。我想知道数组中的length变量是否定义为常量,如果是这样,为什么不是全部使用大写字母LENGTH来使代码更易于理解。 问题答案: 尽管从它们继承java.lang.Object的角度来看,数组是Object,但是这些类是作为语言的特殊功能动态创建的。它们未在源代码中定义。 考虑以下数组: 没有这样的源代码

  • 问题内容: 我是jfreechart的新手。我想显示一个基于数据库表中值的图表。表为dns_time,文件名为dns_lookup_time,update_time。我想在x轴上使用update_time,在y轴上使用dns_lookup_time,并且应该根据数据库中的值显示曲线。我使用的是hibernate和postgresql,谁能帮助我实现这一目标,谢谢。 问题答案: 您可能会看一下,它可

  • 问题内容: 我正在尝试创建一个无符号整数类。 有没有办法实现诸如 +,-,*,/,<<,>>,|,^,>>>,<< 问题答案: Java不支持运算符重载。你是唯一的选择定义了类似的方法,,,等,并写出逻辑存在,并调用它们的特定操作。 您可以看一下BigInteger类,以了解如何定义支持各种操作的方法。如果有兴趣,您甚至可以浏览源代码,您可以在 jdk 主目录的 src 文件夹中找到该源代码。 _

  • 本文向大家介绍如何在 Java 中实现不可变类,包括了如何在 Java 中实现不可变类的使用技巧和注意事项,需要的朋友参考一下 前言 面向对象的编程通过封装可变动的部分来构造能够让人读懂的代码,函数式编程则是通过最大程度地减少 可变动的部分来构造出可让人读懂的代码。 — Michael Feathers,Working with Legacy Code 一文的作者 在这一部分中,我讨论的是函数式编