[英]Aggregation relationship in class diagram?
我想問一個關於面向對象編程世界中的聚合關系的問題。
現在我有一個由2個班級組成的班級。
我們知道在聚合關系中,主類將聚合類作為屬性的引用
但是主類除聚合類外不包含任何屬性或方法。
這在面向對象編程的世界中正確嗎?
例如:
主班叫騎士:
其他的是馬和劍。
因此,騎士階層由馬和劍組成。
這是一個聚合關系...
public class knight{
private horse h;
private sword s;
// no others attributes and methods
}
我的問題:讓騎士團沒有上面正確的任何屬性和方法嗎?
是的,這是正確的,但沒有用。
您已經忘記了,您必須以某種方式公開騎士的屬性。 與它們一起使用的字段或某些方法應該是公共的。 或者您的騎士不是騎士,而是隱士:-)
例如:
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
關系。
是的,為什么不呢?
絕對沒有理由不正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.