class图中的聚合关系?

Aggregation relationship in class diagram?

我想问一个关于面向对象编程世界中聚合关系的问题。

现在我有一个 class 由 2 class 组成。

我们知道在聚合关系中,主 class 引用聚合 class 作为属性

但是主 class 除了聚合 classes 之外不包含任何属性或方法。

这在面向对象编程的世界里是否正确

例如:

主要 class 被称为骑士:

其他是马和剑

所以骑士class是由马和剑组成的

这是聚合关系...

public class knight{
private horse h;
private sword s;

// no others attributes and methods
}

我的问题:让 class 骑士没有任何属性和方法如上正确 ???

是的,为什么不呢?

绝对没有理由不正确。

是的,它是正确的,但是没用。

你忘了,你必须以某种方式暴露骑士的属性。使用它们的字段或一些方法应该是 public。或者你的骑士不是骑士,而是隐士:-)

例如:

public boolean putSwordOn(Sword sword){}; //sets current sword
public boolean putSwordInSheath(){};  // uses sword
public boolean pullSwordOut(){};      // uses sword
public boolean attack(Creature target){};   // uses sword
public void kissSwordAndSwearToServe(Knight senior); // uses sword
public boolean climbHorse(Horse horse){};   // sets current horse
public boolean gallop(Point direction){};   // uses horse

另外,你的术语有问题。这种联系(有一个)由association表示。这在 class 图上用实线表示,可能带有点、菱形或箭头。一个 association 有一些 aggregation。它是关于该类型的多少实例属于该字段以及它们如何属于。 aggregation 可以是 compositionsharednone。我们可以说这个 associationaggregation 类型 none,但是要命名 "aggregation" 具有 none 聚合的东西显然是不正确的。所以,你说的是association关系。