UML 语言具有扩展性,因此也适用于描述某个具体的方法、组织或用户。这里我们
介绍三种扩展机制:版类(stereotype)、加标签值(tagged value)和约束(constrains)。这三种机制的更详细的讨论在第七章中进行。
2.5.1 版类
版
类扩展机制是指在已有的模型元素基础上建立一种新的模型元素。版类与现有的元素相差不多,只不过比现有的元素多一些特别的语义罢了。版类与产生该版类的原
始元素的使用场所是一样的。版类可以建立在所有的元素类型上,比如:类、结点、组件、笔记、关系(关联通用化和依赖)。UML
语言中已经预定义了一些版类,这些预定义的版类可以直接使用,从而免去了再定义新版类的麻烦,使得UML 语言用起来比较简单。
版类的表示方法是在元素名称旁边添加一个版类的名字。版类的名字用字符串用双尖角括号括起来表示,如图2-13 。所示版类也可以用一个图形表示(比如:图标)。
具体的版类元素的图示方法有三种:第一种在元素名称之上写版类名,这是一般的表示法;第二种是在元素名称旁画出版类的图标(图形化表示);第三种是把元素名称和版类图标合在一起图2-13 图示了这三种表示法。
当一个元素与版类连接在一起后,该元素称为“指定版类的元素类型”。比如,与版类《window》相连的类就称为“window 版类的类”这意味着该类是window 类型的了。
当用户定义版类的时候,与之相关的类也要定义。比如定义window 版类时,必须定义“window 版类的类”。图2-13 中的“客户”是具有《版类》角色的类,由于版类《角色》添加了特别的语义给“客户”类,所以该类代表的是系统的外部角色(用户)。
版类是非常好的扩展机制,它的存在避免了UML 语言过于复杂化。同时也使UML
语言能够适应各种需求,很多需求的新模型元素已做成了UML 语言的基础原型(prototype),用户可以利用它添加新的语义后定义新的模型元素。
2.5.2 加标签值
在2.4.3 节中已讨论过元素有很多性质,性质用名字和值一对信息表示。性质也称为加标签值。UML
语言中已经预定义了一定数量的性质,用户还可以为元素定义一些附加信息,即定义性质。任何一种类型的信息都可以定义为元素的性质,比如:具体的方法信息、
建模进展状况的管理信息、其他工具使用的信息、用户需要给元素附加的其他各类的信息图。2-14
表示的是仪器类的性质,其中抽象(abstract)(详细含义见第四章)是预定义的性质,作者和状态是用户定义的加标签值。
2.5.3 约束
约束是对元素的限制。通过约束限定元素的用法或元素的语义。如果在几个图中都要使用某个约束,可以在工具中声明该约束,当然,也可以在图中边定义边使用。
图2-15
显示的是老年人类与一般人类之间的关联关系。显然并不是所有的人都是老年人,为了表示只有岁以上的人才能加入老年人(类),我们定义了一个约束条件,年龄
属性大于60岁的人(person.age > 60
)。有了这个条件,哪个人属于这种关联关系中也就自然清楚了。反过来说,假如没有约束条件,这个图就很难解释清楚。在最坏情况下,它可能会导致系统实现上
的错误。
在上述例子中,约束被直接定义和应用在了需要使用的图上。当然也可以用名字加规格说明的方法定义约束,比如“老年人”和“person.age > 60 ”。UML 语言中预定义了一部分约束。这些约束的具体内容在第七章中讨论。
阅读(1068) | 评论(0) | 转发(1) |