无法理解方法和构造函数的顺序

根据序列图,我应该首先创建方法“regisreItem(Item item)”,参数“item”作为对象。我看到我的问题是在方法“regisreItem(Item item)”之后调用了“items”的构造函数,因此我没有任何东西可以根据序列图插入到“regisreItem(Item item)”方法中。或不 ?

时序图

http://img2.mukewang.com/64268e44000123be10941213.jpg

类图

http://img2.mukewang.com/64268e52000130ff06190577.jpg

这是我感兴趣的序列图的一部分

http://img.mukewang.com/64268e6000019cc305930389.jpg

https://drive.google.com/open?id=1eJolWNoN32IubP3iaaXPc_cLM5Es08hK 这是我所有的代码。

请向我提供一些可以实现的代码。并阐明时序图的开头。


胡子哥哥
浏览 97回答 2
2回答

青春有我

由于该操作registerItem 需要一个项目作为参数,因此 Auctioneer 对象需要在调用该操作之前创建它。这意味着 Auctioneer 必须发送一条创建消息,而不是 Auction(new Item()在序列图中不可能用作参数 - 而且它无论如何都不会更改创建者)。i1并且i2是交互的属性。它们可以用作 的参数registerItem。 addBid还期望一个bidder. 此处应再次使用交互的属性Max和。Moritz在真实程序中,这些交互属性将是操作Auction::addBid或拍卖人的临时变量。Auctioneer 可能不应该有变量,因此 OperationregisterItem可能应该只有通用数据类型,例如string参数。应该向和Auction发送消息,但是,由于这些是交互的属性,对象不知道它们。省略这个细节是可以的,但最好展示 是如何找到相关的,例如通过调用自身的操作。i1i2AuctionAuctionItemfindItemByName更好的选择是让Auctionsend the messages to its own attribute allItems。那么两条生命线将代表相同的属性,但具有不同的对象。选择器可用于区分此属性定义的插槽中的两个对象(allItems[0], allItems[1],这是可选的)。allBidsinstead ofb300EUR等也同样适用。

哈士奇WWW

您可以使用以下方法解决在 registerItem 之后调用 Item 构造函数的问题:registerItem(new Item(...));并传入 Itemi1和的属性i2。这将创建新项目,然后可以将其添加到拍卖项目列表中。我假设序列图的开始是拍卖师创建或打开一个已经创建的拍卖,然后通过重复调用添加将在拍卖中使用的项目列表,然后 Max 和 Moritz 可以registerItem(new Item(...));通过对象Auction_
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java