为什么说 "Collaboration" 实现 "Use case" 而不是相反?
Why is it said "Collaboration" realizes "Use case" rather than vice versa?
我正在学习UML。我对实现和协作有些困惑。
考虑图表(我希望图表是正确的)
"Make a call"是合作。 "connect to destination" 是一个用例。
根据书籍和各种资源,我读到我们说 "Make a call" 实现 "Connect to destination"。
但据我了解,协作是我们用来对重复模式(如设计模式)进行分组的逻辑概念。用例(有自己的图)是实现它们的人(间接地,因为用例最终会有一个相关的 class 图。那些 classes 必须实现它们)。
那么我们不应该说 "Use cases" 实现 "collaboration" 吗?
我哪里错了?
混淆的根源是 java,我们有接口,classes 实现它们。我们说 class 实现接口。实现和实现不一样吗?
更加混乱的是协作图,它似乎与协作无关。
因为你先有了用例。它大致说明了系统的附加值是什么。还有一个故事是如何实现这个价值的。现在您开始考虑正在考虑的系统 (SUC) 如何实现(因此得名)这个用例。因此,您构建协作,展示 class 设计如何实现用例中的单一目标。您可以进行多次合作,以展示 SUC 的不同方面或变体。
关于你的图表:你有从 Connect to destination
到其他两个用例的依赖关系。那是不正确的。用例代表 SUC 为其参与者带来的个人附加值。所以他们基本上不能互相依赖。 SUC 的所有用例代表总的附加值。人们经常尝试用用例进行功能分解并添加很多 include/extend 依赖项。这不会导致有意义的用例,并且您会失去注意力。也就是说,您没有显示附加值,而是偏离了技术可能性。
我正在学习UML。我对实现和协作有些困惑。
考虑图表(我希望图表是正确的)
"Make a call"是合作。 "connect to destination" 是一个用例。
根据书籍和各种资源,我读到我们说 "Make a call" 实现 "Connect to destination"。
但据我了解,协作是我们用来对重复模式(如设计模式)进行分组的逻辑概念。用例(有自己的图)是实现它们的人(间接地,因为用例最终会有一个相关的 class 图。那些 classes 必须实现它们)。
那么我们不应该说 "Use cases" 实现 "collaboration" 吗?
我哪里错了?
混淆的根源是 java,我们有接口,classes 实现它们。我们说 class 实现接口。实现和实现不一样吗?
更加混乱的是协作图,它似乎与协作无关。
因为你先有了用例。它大致说明了系统的附加值是什么。还有一个故事是如何实现这个价值的。现在您开始考虑正在考虑的系统 (SUC) 如何实现(因此得名)这个用例。因此,您构建协作,展示 class 设计如何实现用例中的单一目标。您可以进行多次合作,以展示 SUC 的不同方面或变体。
关于你的图表:你有从 Connect to destination
到其他两个用例的依赖关系。那是不正确的。用例代表 SUC 为其参与者带来的个人附加值。所以他们基本上不能互相依赖。 SUC 的所有用例代表总的附加值。人们经常尝试用用例进行功能分解并添加很多 include/extend 依赖项。这不会导致有意义的用例,并且您会失去注意力。也就是说,您没有显示附加值,而是偏离了技术可能性。