什么时候在UML中使用自消息和递归消息?

什么时候在UML中使用自消息和递归消息?,uml,Uml,我遇到了下面的帖子,但是我很难理解它- 我在希望真实世界的场景会有所帮助时也遇到了这个例子,但这让我更加困惑。当订单传递给厨房和厨师时,为什么需要递归消息。我认为您所需要的只是一条自我信息,即厨师完成订单,然后将其传递给服务员。厨师示例显示和描述的内容可以说是“错误的” 简单地说,给self的消息只意味着接下来要调用的方法恰好位于同一个对象类中。例如,调用SavingsAccount.draw(anAmount)可以调用SavingsAccount.getBalance()来确定是否有足够的资金

我遇到了下面的帖子,但是我很难理解它-


我在希望真实世界的场景会有所帮助时也遇到了这个例子,但这让我更加困惑。当订单传递给厨房和厨师时,为什么需要递归消息。我认为您所需要的只是一条自我信息,即厨师完成订单,然后将其传递给服务员。

厨师示例显示和描述的内容可以说是“错误的”

简单地说,给self的消息只意味着接下来要调用的方法恰好位于同一个对象类中。例如,调用SavingsAccount.draw(anAmount)可以调用SavingsAccount.getBalance()来确定是否有足够的资金继续提款


递归调用是对self调用的一种特殊情况,因为它是对同一个方法的调用(具有不同的状态,因此它最终可以从递归调用中返回)。有些问题适合这种解决办法。一个例子是阶乘(参见)。不使用递归进行阶乘是不可能的(至少在所有情况下是如此,但最简单的情况除外,因为需要大量的内联代码)。如果查看factorial代码示例,您将看到调用每次更改一次(factorial(n-1)),并在n达到零时停止。如果没有递归,尝试对1000000这样的值进行内联操作是不可行的。

你能给我一个真实世界的例子来代替chef吗?