11第第1111章对象约束语言章对象约束语言►11.111.1对象约束语言概述对象约束语言概述►11.211.2标准标准OCLOCL类型类型►11.3OCL11.3OCL表达式表达式►11.411.4用用OCLOCL表达对象性质约束表达对象性质约束211.111.1对象约束语言概述对象约束语言概述►UMLUML中的图形符号有时候不能很好的表达所中的图形符号有时候不能很好的表达所要建模的对象一些细节。要建模的对象一些细节。►需要对模型中的元素增加一些约束需要对模型中的元素增加一些约束►约束条件可以采用形式化语言约束条件可以采用形式化语言►形式化语言对于数学知识很好的人才能熟练形式化语言对于数学知识很好的人才能熟练运用运用,,普通的开发人员使用起来比较困难普通的开发人员使用起来比较困难..►对象约束语言是一个形式化的语言对象约束语言是一个形式化的语言,,但是不但是不复杂复杂..WUHANUNIVERSITYOFSCIENCEANDENGINEERING面向对象技术面向对象技术UMLUML教程第十一章对象约束语教程第十一章对象约束语言言311.111.1对象约束语言概述对象约束语言概述►对象约束语言简称对象约束语言简称OCLOCL((ObjectConstraiObjectConstraintLanguagentLanguage),它是一种用于施加在指定),它是一种用于施加在指定的模型元素上约束的语言。的模型元素上约束的语言。►OCLOCL表达式以附加在模型元素上的条件和限表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式、附加模型元素上的不变量或约束的表达式、附加在操作和方法上的前置条件和后置条件等。在操作和方法上的前置条件和后置条件等。WUHANUNIVERSITYOFSCIENCEANDENGINEERING面向对象技术面向对象技术UMLUML教程第十一章对象约束语教程第十一章对象约束语言言4OCLOCL的产生的产生►OCLOCL的产生是为了解决约束表达的问题。的产生是为了解决约束表达的问题。►OCLOCL最初由最初由IBMIBM公司设计成功。公司设计成功。►OCLOCL已经为标准化组织已经为标准化组织OMGOMG所接受,成为所接受,成为了了UMLUML标准的一部分。标准的一部分。►OCLOCL语言虽然是一种形式化语言,但是它既语言虽然是一种形式化语言,但是它既具有形式化语言无二义性的特点,又消除了具有形式化语言无二义性的特点,又消除了形式化语言的复杂性。形式化语言的复杂性。WUHANUNIVERSITYOFSCIENCEANDENGINEERING面向对象技术面向对象技术UMLUML教程第十一章对象约束语教程第十一章对象约束语言言5OCLOCL的特点的特点①①OCLOCL是一种精确的、无二义性的语言,易于使用是一种精确的、无二义性的语言,易于使用和掌握。和掌握。②②OCLOCL是一种规范说明性语言,所有有关实现的问是一种规范说明性语言,所有有关实现的问题都不能用题都不能用OCLOCL来表达。来表达。③③OCLOCL是一种纯表达式语言,它是具有没有任何副是一种纯表达式语言,它是具有没有任何副作用的声明性语言。对作用的声明性语言。对OCLOCL表达式的计算将返回表达式的计算将返回一个值,计算不会改变系统的状态。一个值,计算不会改变系统的状态。④④OCLOCL是一种类型化语言,即是一种类型化语言,即OCLOCL中的每个表达式中的每个表达式都是具有类型的。都是具有类型的。⑤⑤OCLOCL不是一种程序设计语言,不能用不是一种程序设计语言,不能用OCLOCL编写程编写程序逻辑和控制流程。序逻辑和控制流程。WUHANUNIVERSITYOFSCIENCEANDENGINEERING面向对象技术面向对象技术UMLUML教程第十一章对象约束语教程第十一章对象约束语言言611.211.2标准标准OCLOCL类型类型►OCLOCL预定义的标准类型定义了一组基本类型预定义的标准类型定义了一组基本类型和集合类型。和集合类型。►OCLOCL的基本类型有“的基本类型有“Boolean”Boolean”、“、“IntegInteger”er”、“、“Real”Real”和“和“String”String”等,集合类等,集合类型包括型包括Collection(Collection(群集群集))以外,还有以外,还有SetSet(集合)、(集合)、BagBag(袋)和(袋)和SequenceSequence(序(序列)等,这些标准类型是列)等,这些标准类型是OCLOCL...