2013-04-08 53 views
2

我遇到以下帖子,但很難理解它 - self message(non recursive) vs self recursive message什麼時候在UML中使用自我消息和遞歸消息?

我也遇到了http://www.zicomi.com/messageRecursion.jsp的例子,希望真實世界的情景會有所幫助,但這讓我更加困惑。當訂單傳遞給廚房和廚師時,爲什麼需要遞歸信息?我認爲你所需要的只是一個自我信息,即廚師完成訂單,然後傳遞給服務員。

回答

1

廚師的例子在它顯示和描述的內容上可以說是「錯誤的」。

簡而言之,self的消息意味着接下來要調用的方法恰好處於同一類對象中。例如。對SavingsAccount.withdraw(anAmount)的調用可能會調用SavingsAccount.getBalance()來確定是否有足夠的資金繼續提取。

遞歸調用是self的一個特殊情況,它與方法相同(具有不同的狀態,以便它最終可以返回遞歸調用)。有些問題適用於這種解決方案。一個例子是階乘(見Factorial)。要做一個沒有遞歸的階乘是不可能的(至少在所有情況下都是最簡單的,因爲需要內聯代碼量)。如果您查看階乘代碼示例,您會看到每次調用都會改變一次(階乘(n-1)),並在達到零時停止。如果沒有遞歸,試圖以內聯方式處理像1,000,000這樣的值是不可行的。

+0

你能給我一個真實世界的例子來代替廚師嗎? – PeanutsMonkey 2013-04-19 18:15:52