模型元素与模型元素之间的连接关系也是模型元素,
常见的关系有关联(association)、泛化(generalization)、
依赖(dependency)和聚合(aggregation),其中聚合是关
联的一种特殊形式。
关联:连接(connect)模型元素及链接(link)实例。
依赖:表示一个元素以某种方式依赖于另一种元素。
泛化:表示一般与特殊的关系,即“一般”元素是“特殊”关系的泛化。
聚合:表示整体与部分的关系。
基本元素-关系-关联
关联(association)是类之间的语义连接
(link),使一个类知道另一个类的公共属性
和操作。
关联可以是单向的也可以是双向的。
关联的表示
关联有二元关联(binary)、三元关联(ternary)、多元关联
(higher order)。
关联的重数
重数(multiplicity)表示多少个对
象与对方对象相连接,它的默认
值为1,常用的重数表示符号有:
0..1 表示零或1
0..* 或* 表示零或多个
1..* 表示1或多个
1,3,7 表示1、3或7(枚举型)
在关联的多端标注{ordered}指
明这些对象是有序的。
关联可以用箭头,表示该关联
使用的方向(单向或双向),
称为导引或导航(navigation)。
关联的约束
约束(constraint)是各种模型元素的一种语义条件或限制。
一条约束只能应用于同一类的元素。
如果约束应用于一种具有相应视图元
素的模型元素,它可以出现在它所约
束元素视图元素的旁边。
通常一个约束由一对花括号括起来
({constraint}),花括号中为约束
内容。
如果一条约束涉及同一种类的多个元
素,则要用虚线把所有受约束的元素
框起来,并把该约束显示在旁边(如
或约束)。
泛化的约束
约束可分为:泛化的约束、关联的约束。
对泛化的约束
显示在大括号里,若有多个约束,用逗号隔开。
如果没有共享,则用一条虚线通过所有继承线,并在虚线的旁边显示
约束。
对泛化有以下常用的约束:
① complete:泛化中所有子元素都已在模型中说明,不允
许再增加其它子元素。
② incomplete:不是泛化中所有子元素都已说明,允许再
增加其它子元素。
③ disjoint:父类对象不能有多于一个型的子对象。
④ overlapping:给定父类对象可有多于一个型的子对象,
表示重载。
关联的约束
对关联有以下常用的约束:
① implicit:该关联只是概念性的,在对模型进行精化时不再用。
② ordered:具有多重性的关联一端的对象是有序的。
③ changeable:关联对象之间的链(link)是可变的(添加、修改、删
除)。
④ addonly:可在任意时刻增加新的链接。
⑤ frozen:冻结已创建的对象,不能再添加、删除和修改它的链接。
⑥ xor: “或约束”,某时刻只有一个当前的关联实例。
对消息,链接角色和对象的约束
自定义约束
基本元素-关系-聚集
聚集(Aggregation)用来表达
整体--部分关系的关联。
聚集是特殊的关联,它可以有
重数、角色、限制等。聚集分
为:
共享(shared)聚集,它的“部
分”对象可以是任意“整体”对
象的一部分。
组合(Composition)聚集,是指
它的“整体”拥有它的“部分”,
是关联更强的形式。
基本元素-关系-泛化
泛化(generalization)是一般和具体之间的一种关系。
继承(inherit)就是一种泛化关系,更一般化的描述称为
双亲,双亲的双亲称为祖先,更具体化的描述称为孩子,
在类的范畴,双亲对应超类,孩子对应派生类。
基本元素-关系-依赖
依赖(dependency)指明一个元素引用另一个元素的关系,
它可分为类与类之间的依赖和包与包之间的依赖。
依赖有很多种类,比如:
实现(realize) 使用(usage) 实例化(instantiate)
调用(call) 派生(derive) 访问(access)
引入(import) 友元(friend) ……
依赖的形式
依赖的形式可能是多样的,针对不同的依赖的形式,依赖关系有不同
的变体(varieties):
① 抽象(abstraction):从一个对象中提取一些特性,并用类方法表示。
② 绑定(binding):为模板参数指定值,以定义一个新的模板元素。
③ 组合(combination):对不同类或包进行性质相似融合。
④ 许可(permission):允许另一个对象对本对象的访问。
⑤ 使用(usage):声明使用一个模型元素需要用到已存在的另一个模型
元素,这样才能正确实现使用者的功能(包括调用、实例化、参数、
发送)。
⑥ 跟踪(trace):声明不同模型中元素的之间的存在一些连接。
⑦ 访问或连接(access):允许一个包访问另一个包的内容。
⑧ 调用(call):声明一个类调用其他类的操作的方法。
⑨ 导出(derive):声明一个实例可从另一个实例导出。
⑩ 友元(friend):允许一个元素访问另一个元素,不管被访问的元素是否
具有可见性。
11 引入(import):允许一个包访问另一个包的内容,并为被访问组成部
分增加别名。
12 实例(instantiation):关于一个类的方法创建了另一个类的实例声明。
13 参数(parameter):一个操作和它参数之间的关系。
14 实现(realize):说明和其实之间的关系。
15 精化(refine):声明具有两个不同语义层次上的元素之间的映射。
16 发送(send):信号发送者和信号接收者之间的关系。
基本元素-关系-细化
细化(refinement)是对同一事物不同级别的
两种描述之间的一种关系。
例如:对同一事物建模的分析类与设计类之间
的就是细化关系。
欢迎志趣相投的朋友一起学习交流!
本人qq:906570770
技术资料分享群:272811256