存在关联类时UML的关联关系是否具有唯一性?
UML关联类核心表述澄清与疑问解答
你提到的课程讲师表述仅针对无限定符的普通二元关联,并非UML的全局强制规则,具体解读如下:
疑问1:存在关联类是否会自动在两个类之间建立一对一耦合?
- 答案是否定的,关联类的作用仅为封装关联本身的属性(比如申请日期、录取结果)和操作,不会改变关联两端的多重度规则,也不会强制建立一对一耦合
- 以
student和college的applies to关联为例,即使附加了关联类appInfo,关联两端依然可以设置为多对多关系:一名学生可申请多所院校,一所院校可接收多名学生的申请,不存在强制一对一的限制 - 普通二元关联的默认约束仅限制同一个学生实例和同一个院校实例之间,最多只能存在一条
applies to关联的链接,这是关联本身的特性,和是否附加关联类无关
疑问2:两个类之间是否禁止存在多条关联关系?
- 答案也是否定的,UML完全支持两个类之间存在多条不同类型的关联:比如
student和college之间可以同时存在applies to(申请)、attends(就读)、works as staff at(任职)等多条独立关联,互不影响 - 讲师提到的“无法支持同一个学生和同一院校之间多条关联”,特指同一条关联(比如都是
applies to)下,默认不允许两个相同实例之间存在多个链接,并非禁止两个类之间有多个不同的关联
多申请场景解决方案说明
如果需要支持同一学生多次申请同一院校(比如不同专业)的需求,有两种可行建模方式:
- 给原关联添加限定符:将
申请专业设为student端的限定符,即可通过限定符区分同一个学生对同一院校的不同申请链接 - 按讲师建议将关联类升级为独立的普通类:创建
Application类,分别与student、college建立多对一关联,每个Application实例对应一次单独的申请,即可不受原关联的单链接限制,灵活支持多次申请场景
内容的提问来源于stack exchange,提问作者Abdul Munem
相关产品推荐
相关产品推荐

