如何读取UML中的多重性?Customer与Order类关联的三类技术疑问
UML关联多重性问题解答
1. 数字1归属哪个类?0..*又归属哪个类?
UML中多重性标注在关联线靠近对应类的一端:
- 标注
1的一端靠近Order类,意味着每个Order实例必须关联且仅关联1个Customer实例; - 标注
0..*的一端靠近Customer类,意味着每个Customer实例可以关联0个或任意多个Order实例。
2. 关联线上方标注1、下方标注0..*是否有严格限制?
没有严格的上下位置限制,核心规则是多重性必须和对应的类在关联线的同一端。
上下排版只是可视化的选择,比如把0..*放在关联线上方靠近Customer,1放在下方靠近Order,表达的语义完全一致。只要确保多重性的位置和它描述的类实例数量对应,排版方式可以灵活调整。
3. 如何解读Customer类与Order类之间的关联关系?
这是典型的一对多双向关联,从两个方向解读:
- 从
Customer视角:一个客户可以没有订单(比如新注册还未下单的用户),也可以拥有任意数量的订单(多次下单的老用户); - 从
Order视角:每一笔订单必须归属且仅归属一个客户,不存在无主的订单。
这种关系完全符合现实业务逻辑:订单必然属于某个客户,而客户可以选择是否下单、下多少单。
内容的提问来源于stack exchange,提问作者John Xue
相关产品推荐
相关产品推荐

