【问题标题】:How to implement associations with one class in the middle - Person, owns, Car如何实现与中间一个类的关联——Person、owns、Car
【发布时间】:2018-12-21 16:35:01
【问题描述】:

我对以下类图有疑问。 https://www.bilder-upload.eu/bild-3b1169-1545377131.png.html

在练习中,我们在 2 个类之间建立了关联。例如Person --- Residence 具有不同的多重性,单向和无方向等。该图像在我们的讲座中显示为最后。图像上写着“有了这个(箭头),实现就很清楚了”。但对我来说,这并不是微不足道的。我们以前从未有过这种实现的例子。中间的类“拥有”让我很难。

我尝试实现它,但我的实现没有意义。如果“拥有”类不存在,我将能够实现它。我会在 Person 中为多辆汽车使用容器类型(链接列表)。并在车内供多人使用。每个类都有一个 getter 方法(Collection)和添加/删除方法(双向)。我会提供 2 个不同的 Car 构造函数。 Car(String color, int speed, Person owner) 和 Car(String color, int speed, LinkedList 所有者。在第一个中,我将 Person 添加到 LinkedList,在第二个中,我将 LinkedList 所有者的所有元素添加到 LinkedList对象。还有一些更琐碎的代码。但是对于上面的这张图片我不知道,希望你能帮助我。

PS:如果你能给我一个链接,我也会很高兴,其中解释了关联、组合、泛化和 UML 类图的实现。我认为我们的讲座内容并不丰富,也没有详细解释。 :(

【问题讨论】:

  • 让我解释一下这个问题。要创建汽车,我至少需要拥有 1 个(拥有日期、人员、汽车的所有权对象)。要创建 1 个拥有者,我需要 1 辆汽车。但是我应该如何放置 Car obj。如果相同的 Car obj 在它的构造函数中。需要创建一个拥有的 obj。那是我的问题:(
  • 我认为您混淆了与作文的关联。您不需要 Car 或 Owns 来创建 Person(汽车也是如此)。它们是独立的类,不需要彼此存在。关联只显示两个类是如何关联的。
  • 好的,非常感谢。我不知道这些概念的名称。现在事情开始变得有意义了。 ^^

标签: java associations


【解决方案1】:

基本上“拥有”类用于保存不属于 Person 或 Car 的数据,而是属于类之间的关系(在本例中为 datePurchased)。

这在设计数据在数据库中的保存方式时很有用。 在这种情况下,“拥有”将包含 datePurchased 数据。在实际实现中还需要 Person 和 Car 的主键。 例如,您想搜索某个人的汽车,您将使用该人的名称从“Owns”表中搜索它(假设它是唯一的并用作主 ID)。

因此,通过这种设计,您的 Person 和 Car 类将不包含任何 Collection 或任何关于彼此的数据,而是将 Person 和 Car 之间的关联数据存储在 Owns 类中。

【讨论】:

  • 哦,谢谢您的回复。我认为图表告诉我 Car obj.至少需要 1 拥有 obj。现在事情更清楚了。
  • Person 和 Car 的构造函数不包含任何关于彼此的内容,而是创建另一个类“拥有”来显示两者之间的关联。例如,一个人买了一辆汽车,你会得到这个人的主键和汽车的主键,然后用它来创建一个新的拥有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
相关资源
最近更新 更多