2 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
由于該操作registerItem
需要一個(gè)項(xiàng)目作為參數(shù),因此 Auctioneer 對(duì)象需要在調(diào)用該操作之前創(chuàng)建它。這意味著 Auctioneer 必須發(fā)送一條創(chuàng)建消息,而不是 Auction(new Item()
在序列圖中不可能用作參數(shù) - 而且它無論如何都不會(huì)更改創(chuàng)建者)。i1
并且i2
是交互的屬性。它們可以用作 的參數(shù)registerItem
。 addBid
還期望一個(gè)bidder
. 此處應(yīng)再次使用交互的屬性Max
和。Moritz
在真實(shí)程序中,這些交互屬性將是操作Auction::addBid
或拍賣人的臨時(shí)變量。Auctioneer 可能不應(yīng)該有變量,因此 OperationregisterItem
可能應(yīng)該只有通用數(shù)據(jù)類型,例如string
參數(shù)。
應(yīng)該向和Auction
發(fā)送消息,但是,由于這些是交互的屬性,對(duì)象不知道它們。省略這個(gè)細(xì)節(jié)是可以的,但最好展示 是如何找到相關(guān)的,例如通過調(diào)用自身的操作。i1
i2
Auction
Auction
Item
findItemByName
更好的選擇是讓Auction
send the messages to its own attribute allItems
。那么兩條生命線將代表相同的屬性,但具有不同的對(duì)象。選擇器可用于區(qū)分此屬性定義的插槽中的兩個(gè)對(duì)象(allItems[0]
, allItems[1]
,這是可選的)。allBids
instead ofb300EUR
等也同樣適用。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用以下方法解決在 registerItem 之后調(diào)用 Item 構(gòu)造函數(shù)的問題:
registerItem(new Item(...));
并傳入 Itemi1
和的屬性i2
。這將創(chuàng)建新項(xiàng)目,然后可以將其添加到拍賣項(xiàng)目列表中。
我假設(shè)序列圖的開始是拍賣師創(chuàng)建或打開一個(gè)已經(jīng)創(chuàng)建的拍賣,然后通過重復(fù)調(diào)用添加將在拍賣中使用的項(xiàng)目列表,然后 Max 和 Moritz 可以registerItem(new Item(...));
通過對(duì)象Auction
_
添加回答
舉報(bào)