类图中的聚合关系?

时间:2015-11-05 02:09:42

标签: java oop uml class-diagram

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

现在我有一个由2个班组成的班级。

我们在聚合关系中知道主类有一个对聚合类的引用作为属性

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

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

例如:

主要类叫骑士:

其他人都是马和剑。

因此骑士阶级由马和剑组成。

这是一种聚合关系......

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

// no others attributes and methods
}

我的问题:离开班级骑士没有任何属性和方法如上所述???

2 个答案:

答案 0 :(得分:3)

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

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

例如:

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

此外,您在术语方面存在问题。此类连接(包含a)由 association 显示。这在类图上用实线显示,可能带有点或菱形或箭头。 association 有一些 aggregation 。它是关于该类型的多少个实例属于该字段以及它们是如何属于的。 aggregation 可以是 composition shared none 。我们可以说 association aggregation 类型为 none ,但要命名为“聚合” “具有 none 聚合的内容显然是不正确的。所以,您谈论的是 association 关系。

答案 1 :(得分:2)

是的,为什么不呢?

绝对没有理由说这不正确。