知识卡片
关联类的定义与实现建议
内容
关联类(association class)给一个关联本身添加属性和操作,例如给人参加会议这条关联加上专注程度属性,同时约束任意两个参与对象之间只能有一个关联类实例。作者建议的实现方式是把关联类当作完整的类实现,但只对外暴露获取信息的方法,并在每个创建该关联类实例的方法里显式检查这对参与对象是否已存在实例,以强制执行每对只能有一个的约束——这个约束不会自动生效,需代码主动维护。
参考来源
- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第5章《类图:进阶概念》(源文件:_epub-src/EPUB/4.xhtml)
- 结论依据:原文说明"关联类添加了一个额外的约束,在任何两个参与对象之间只能有一个关联类实例",并给出实现建议"就像它是一个完整的类一样实现关联类,但提供获取信息的方法……记得强制执行这个约束……应该在每一个创建Attendance的方法里放置一个检查"。
- 原始内容:对关联类这样做有好处,但是代价是你不得不记住额外的表示法。关联类添加了一个额外的约束,在任何两个参与对象之间只能有一个关联类实例……我的建议是,就像它是一个完整的类一样实现关联类,但提供获取信息的方法给关联类链接的类……记得强制执行这个约束。