知识卡片

何时把关联提升为完整的类

普通读书笔记卡 · 1944.o

内容

判断要不要把关联提升为独立的类,关键看现实语义是否允许同一对参与者之间存在多个关联实例:若一家公司可在同一合同里扮演多个角色,角色该建模成完整的类而非[[关联类的定义与实现建议|关联类]],因关联类约束每对参与对象只能有一个实例;反之若一个人对同一技能只该有一条能力记录,用关联类天然表达了这个约束。对需保留历史的关系,作者更倾向用非标准的«temporal»关键词标注关联,而非强行造额外的类。

参考来源

- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第5章《类图:进阶概念》(源文件:_epub-src/EPUB/4.xhtml) - 结论依据:原文用Company/Contract/Role与Person/Skill/Competency对比说明"我们可以想象一个Company在同一个Contract中扮演不同的角色,但很难想象一个Person在同一种技能上有多个Competency……在UML中,只有后一种情况是合法的",并说明保存历史信息时更倾向用«temporal»关键词而非额外的类。 - 原始内容:然而,我们可以想象一个Company(公司)在同一个Contract(合同)中扮演不同的角色,但很难想象一个Person(人)在同一种技能上有多个Competency(能力)……在UML中,只有后一种情况是合法的……如果我有这种瞬时信息,我会在关联上使用一个«temporal»关键词。