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
可以是 composition
、shared
或 none
。我们可以说这个 association
有 aggregation
类型 none
,但是要命名 "aggregation" 具有 none
聚合的东西显然是不正确的。所以,你说的是association
关系。
我想问一个关于面向对象编程世界中聚合关系的问题。
现在我有一个 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
可以是 composition
、shared
或 none
。我们可以说这个 association
有 aggregation
类型 none
,但是要命名 "aggregation" 具有 none
聚合的东西显然是不正确的。所以,你说的是association
关系。