知识卡片

类图中约束的表达方式

普通读书笔记卡 · 1942.h

内容

类图中的关联、属性、泛化只能表达部分约束(如Order必须恰好属于一名Customer),更复杂的业务规则需用约束补充,写法是把内容放进花括号里。UML允许用自然语言、编程语言或形式化的对象约束语言OCL写约束,OCL基于谓词演算、能消除自然语言的含糊性,但也引入新风险:若作者和读者都不真正理解谓词演算,形式化表示法反而制造新误解。除非确定读者熟悉OCL,否则用自然语言写约束通常更安全。

参考来源

- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第3章《类图:基础》(源文件:_epub-src/EPUB/2.xhtml) - 结论依据:原文说明约束要放进花括号中,可用自然语言、编程语言或OCL表达,并指出"使用形式表示法避免由于含糊的自然语言造成误解的风险。然而,这也引进了由于作者和读者没有真正理解OCL导致误解的风险。因此除非读者熟悉谓词演算,否则我建议使用自然语言"。 - 原始内容:UML允许你使用任何东西来描述约束,唯一的规则是你要把它们放进花括号({})中。你可以使用自然语言、编程语言或UML提供的形式对象约束语言(OCL)……因此除非读者熟悉谓词演算,否则我建议使用自然语言。