簡體   English   中英

類圖中的聚合關系?

[英]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可以是compositionsharednone 我們可以說,這個association已經aggregation型的none ,而是命名為“聚合”的東西,有none聚集明顯不正確。 因此,您正在談論association關系。

是的,為什么不呢?

絕對沒有理由不正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM