UML详解之基本元素-关系

模型元素与模型元素之间的连接关系也是模型元素,
常见的关系有关联(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

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值