【发布时间】:2017-05-25 20:53:23
【问题描述】:
我正在阅读 POODR 并试图围绕 Sandi 的示例进行思考。
我对尝试了解她的 UML 图的工作原理特别感兴趣。
例如第 75 页的图 4.8:
moe Customer - 这表示
Customer类的一个实例,可能具有等于moe的属性名称,或者它可能是存储在名为moe的变量中的实例,无论哪种方式图表看起来这个框代表“一个对象,它是 Customer 类的实例”?一个 TripFinder - 这有点令人困惑,因为它似乎也代表“一个作为 TripFinder 类实例的对象”?
Trip 类和 Bicycle 类 - 现在我们看到
class关键字,Sandi 是不是想说这些框代表“旅行类对象”或“自行车类对象”?两者都是“作为 Class 类的实例的对象”?箭头似乎从“消息”的“发送者”指向“接收者”。在转换为“在接收者对象上调用方法”的代码中?箭头来自 moe 的事实意味着在
Customer类内部的某个地方有一个调用TripFinder#suitable_trips实例方法的方法。所以从“发送者”到“接收者”的箭头告诉我们接收者的方法名称(又名方法签名?),而不是发送者的方法名称,对吗?响应箭头是什么意思?他们只是返回语句吗?虚线与实线的意义是什么?我知道在某些图表中它们代表依赖关系,但现在它们似乎代表发送消息并获取返回语句。这和依赖一样吗?
为什么最后一行是实线?这只是一个错字吗?
【问题讨论】:
-
好吧,顺便说一句,这些图表离完全符合 UML 还差得很远。在生命线中,名称和类应该用冒号分隔,而不是空格(例如
moe:Customer)。应该有一个组合片段来表示循环而不是施加约束。箭头末端应该是实心三角形或空心箭头(仅由两条线组成)。这些头既不是实心三角形(那么响应的头会不正确 - 它应该是开放的)也不是开放的头(那么所有消息都是同步的并且不能有响应)。它不支持理解图表