再次说UML 中的关系

       用了半个的时间第一遍学习了第一遍大话设计模式,在大话设计模式中每个模式的解释都用了类图,每个类和每个

 

类都用不同的关系连接起来.所以我根据自己的理解有总结了一下他们的关系.

 

"直线"关系----关联关系

 

A,B两个类,它们之间有关系,但又不能确定是怎么的关心地,我们可以这样画:

 

 

用比较通俗的话说是"直线"关系,使用UML 专业的术语说是"关联"关系.

 

       我们在做软件需求分析时,如果觉得两个业务感念之间有联系,但是暂时不能确定具体是怎么的,那么就先画一条线

 

将两者连起来再说.随着自己对业务的了解,这条线条会进一步具体化,你就可以为这两条线添加更多的元素.

 

(1)一对一的关系

 

这个图A.B两个类有一条直线相连,但在直线两端各有一个数字1,表示一个A对应一个B,

 

 

 

(2)一对多的关系

 

这个表示一个A对应多个B,*号表示0到多个.

 

 

 

"包含"关系

 

一个部分由多个员工,用类图可以这样表示:

 

 再次说UML 中的关系_第1张图片

 

       用uml的标准术语来说,第一种空心菱形表示的是聚合关系,它的关系就如计算机主机和CPU的关系.第二种实心菱

 

形表示的是组合关系,它的关系就如孕妇和胚胎的关系.

 

       这里有两种表示方法,一种是空心菱形,一种是实心菱形.两种菱形表示包含的强烈程度不同,空心菱形是"弱"包含,实

 

心菱形则是"强"包含.

 

       米老师常常说的"记是永远记不住的".如果有技巧的记忆,会让你"忘也不掉"的.我们来看看这个记忆技巧:空心菱形

 

是空心的,显得虚弱一点,这就是"弱"包含;实心菱形是实心的,显得更加的强壮,这就是"强"关系.

 

"继承"关系

 

       在提高班提倡的是导师制,在提高班内部的学生做师傅,分享知识和学习经验.学生可以做徒弟,也可以做师傅,把自己

 

的经验传给徒弟,下面是徒弟和老师的类图:

 

 

 

现在我们来思考一个问题:徒弟和师傅有些什么共性呢?

 

徒弟和师傅不都是学生吗,凡是学生都有这样的属性:

 

 再次说UML 中的关系_第2张图片

 

学生,师傅,徒弟可以表示以下的关系:

 

再次说UML 中的关系_第3张图片

 

师傅和徒弟都"继承"了员工,它们具备学生的属性,同时也有自己特有的属性.

 

我们还可以这样说:师傅,徒弟都是员工的一种.

 

"继承"关系画法如下:

 

 

 

这表示A继承B,A具有B的特点,同时也具有自己特有的特点.

 

在UML的标准术语中这种"继承"关系被称为"泛化"关系(Generalization).

 

依赖关系

 

若果一个酒鬼嗜酒如命,没有酒的话就不能生活,用类图就可以这样来表示:

 

 

这个虚箭头就表示依赖关系(Dependency),

 

 如果说A依赖于B,用类图就可以这样来表示:

 

 

所谓的依赖关系,依赖的程度是相当而言的,不一定是A没有B就不能"生存"了.

 

在具体的业务逻辑中,对于某个事情,A需要B来协助才能完成,这样也是一种依赖关系.

 

 

扩展关系:

 

       在机房收费系统中,当涉及到钱的地方,比如查询充值情况,日结算,周结算的地方都涉及到了打印,打印预览的功能,

 

我们用用例图可以这样表示:

 

再次说UML 中的关系_第4张图片

 

从图中我们可以看出扩展关系式用一条带箭头的虚线加上<<extends>>来表示的.

 

如果A扩展出B,用用例图我们可以这样表示:

 

 

       扩展关系表示的是"可选"的,而不是"必选",这意味着即使没有扩展用例,基本用例也是完整的,如果哦没哟基本用例,

 

扩展用例是不能单独存在的;如果有多个扩展用例,同一时间用例实例也只会使用其中一个.

 

使用扩展关系的情况:

 

1.用例的某一个部分是可选的系统行为.

 

2.只在特定条件下才执行分支流,如触发警报器

 

3.可能有一组行为段,其中的一个或者多个可以再基本用例扩展点处插入.所插入的行为段将取决于执行基本用例时与

 

主角进行的交互.

 

 包含关系(include)

 

       如果我们想要使用机房收费系统,我们必选先登录机房收费系统,才能进行各自的操作,才能对数据库进行增删改查.

 

用用例图我么可以这样表示:

 

再次说UML 中的关系_第5张图片

 

包含关系式用一条带箭头的虚线加<<include>来表示的.

 

如果A包含B,用例图可以这样表示:

 

再次说UML 中的关系_第6张图片

 

       与扩展用例不同的是:包含用例表示的是"必选"而不是"可选",这意味着如果没有包含用例,基本用例是不完整,同时

 

没有基本用例,包含用例是不能单独存在的.

 

在用例图中使用包含关系的理由:

 

1.从基本用例中分解出这样的行为:它对于了解基本用例的主要目的并不是必需的,只有它的结果才比较重要.

 

2.分解出两个或更多个用例所共有的行为.

 

实现关系(Realize)

 

手机是现在生活中不可缺少的一部分.使用手机通话,就必须要交话费,交话费的实现途径可能有营业厅交费,银行交

 

费,    预存话费等.用类图我们可以表示为:

 

再次说UML 中的关系_第7张图片

 

实现关系是由一条带空心箭头的虚线表示的.

 

如果A实现B ,用类图可以这样表示:

 

 

       在前面我曾说过<<uml ---关系>>.但是说的比较简单,那是刚学习的时候,对关系还是处于很模糊的状态写的.

你可能感兴趣的:(再次说UML 中的关系)