《UML用户指南》学习笔记(十)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://jeffrey.blogbus.com/logs/67361.html

第十章 高级关系

第二章提到了UML中最重要的四种关系分别是dependency、association、generalization、 realization,在第五章也进一步学习了dependency、association和generalization。而这一章讲述的是这几种 关系的高级特性。

①dependency
dependency表明一个事物使用了另一个事物,在UML中定义了17种可用于dependency的构造型,这17种构造型可被分为6组,下面就详细说明这17种构造型:
⑴可应用到类图中的类和对象间的依赖关系
Ⅰ、绑定(bind)
表明源对目标模板使用给定的实际参数进行实例化,常应用于模板类。(模板类的概念不了解)
Ⅱ、导出(derive)
表明可以从目标计算出源。当对两个属性或关联之间的关系建模时,如果其中一个属性(关联)可以导出另一个属性(关联),就可以使用derive构造型。例如生日和年龄。
Ⅲ、友元(friend)
表明源对目标的特定可见性。常用于C++中的友元类建立的关系建模。
Ⅳ、的实例(instanceOf)
表明源对象时目标类元的一个实例。
Ⅴ、实例化(instantiate)
表明源创建目标的实例。
Ⅵ、强类型(powertype)
表明目标是源的强类型。(强类型是一个类元,其对象都是一个给定父类的子类)当对覆盖其他类的类建模时,例如数据库建模时可能碰到这种依赖关系。
Ⅶ、精化(refine)
表明源比目标处于更精细的抽象程度上。当对本质上相同但位于不同抽象层次的类建模时,要用精化。
Ⅷ、使用(use)
表明源元素的语义依赖于目标元素的公共部分的语义。当要显式地把一个依赖标记为使用关系时,就可以应用使用(use)。

⑵可应用到包之间的依赖关系
Ⅰ、访问(access)
表明源包有权引用目标包中的元素。
Ⅱ、引入(import)
是一种访问,它表明把目标包的公共内容加入到源包的命名空间。

⑶可应用到用况之间的依赖关系
Ⅰ、延伸(extend)
表明目标用况延伸了源用况的行为。
Ⅱ、包含(include)
表明源用况在其指定的位置上显式地合并了另一个用况的行为。

⑷可应用到对象之间的依赖关系
Ⅰ、变成(become)
描述了目标对象与源对象是相同的,但在后续的时间点上属性值、状态或角色可能会不同。
Ⅱ、调用(call)
表明源操作调用目标操作。
Ⅲ、复制(copy)
表明目标对象是源对象的精确复制,但目标对象是独立的。

⑸可应用到状态机的语境中的依赖关系
发送(send)

表明源操作向目标发送事件。

⑹可应用到把系统的元素组织成子系统和模型的语境中的依赖关系
跟踪(trace)
表明目标是源的历史上祖先。

②generalization
generalization表明了一般/特殊的事物之间的关系。在程序中体现为父类/子类,在UML中定义了应用到泛化关系上的一个构造型和4个约束。
一个构造型:
实现(implementation)

表明子类继承父类的实现,但既不公布也不支持父类的接口,因此它是违背可替换性的。在C++中私有继承建模时用到这种构造型。

4个约束:
Ⅰ、完全(complete)
表明已经在模型中给出了泛化关系的所有子类,不允许再有更多的子类。
Ⅱ、不完全(incomplete)
表明没有完全给出所有子类,可以在增加子类。
Ⅲ、互斥(disjoint)
表明父类的对象最多以给定的子类中的一个子类作为类型。
Ⅳ、重叠(overlapping)
表明父类的对象可能以给定的子类中的一个以上子类作为类型。

③association
是一种结构关系,它详述一个事物的对象与另一个事物的对象相联系。关联的4种基本修饰:名称、角色、多重性和聚合,在第二章有描述。对于它的高级用法,从下面几个方面描述:
Ⅰ、导航
关联的导航默认是双向的,但有些情况下是单向导航的,例如user和password,只能从user导出password,而不能从password导出user,这样的导航需要使用箭头标出其单向性。
Ⅱ、可见性
可见性用于限制关联对于外部对象的可见性。例如password是user私有的,对group而言,password是不可见的。
Ⅲ、限定
给定关联一端的对象,识别另一端的对象或对象集,可以使用限定来描述。
Ⅳ、接口说明符
这个说不清楚,可以看书中的例子。
Ⅴ、组合
组合是聚合的一种特殊情况,它具有强的拥有关系,整体与部分的生命周期是一致的。一个对象在一个时间内只能是一个组合的一部分。
Ⅵ、关联类
是关联关系的两端的对象之间的产生关系的类的描述。看书更明白意思。
Ⅶ、约束
UML中定义了5中可以用于关联关系的约束:
⒈隐式(implicit)
表示关系不是显式的,而仅是概念性的。例如两个父类有关联关系,那么这两个父类的子类之间就可以有隐式的关联关系。
⒉有序(ordered)
表明关联的一端的对象是显式有序的。
⒊可变(changeabel)
可以自由增加、移动和改变对象之间的链。
⒋只增(addonly)
可以从关联另一端的一个对象增加新的链。
⒌冻结(frozen)
一旦关联另一端的对象增加了一个链,就不能对它修改或删除。

④realization
realization是dependency和generalization在语义上的一些交叉,应用于接口语境和协作语境中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值