UML总结
一、类与类之间的关系
1、依赖关系:
简单理解就是类A使用到了类B,这种依赖具有偶然性、临时性,是非常弱的关系。但是类B的变化会影响到类A。举个例子,如某人要过河,则人与船的关系就是依赖,人过河之后,与船的关系就解除了,因此是一种弱的连接。
在java中,依赖表现为:局部变量,方法中的参数和对静态方法的调用。
依赖关系有如下三种情况:
1、A类是B类中的(某中方法的)局部变量;
2、A类是B类方法当中的一个参数;
3、A类向B类发送消息,从而影响B类发生变化
2、关联关系
是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。
关联关系:如果两个类之间,其中一个包含另一个的永久引用、指针、实例。则说两者之间存在关联。
单个星号表示一个在0和无限之间的无边界的范围。可以理解n个
除了双向关联和单项关联还有自关联:
3、聚集关系:
部分离开整体可以单独存在,这里1表示只有一个汽车,4表示有四个轮胎
4、组成关系:
强聚合关系,部分不能脱离整体存在
5、实现关系:
将一种模型关系与另一种模型关系连接起来,从而说明和其实现之间的关系,简单的理解为一个类或多个类实现一个接口
当然,如果类A的一个方法的参数是类B的一个引用的话,那么A对B有一个依赖。
6、泛化关系(继承)
注意点:
1、泛化和实现关系的区别: 泛化关系是指同一语义层的元素连接起来,通常在同一模型内;实现关系将不同语义层内的元素连接起来,通常在不同模型内。
2、正确表达出类与类之间的关系,不能只用依赖关系,能用组合就不用聚合,能用聚合就不用一般关联,能用一般关联就不要用依赖,该用接口的时候就用接口实现,需要继承就用继承
3、对于箭头的方向,这样记,从大的指向小的,父类的指向子类的。谁调用谁就从谁指向谁
4、各种关系的强弱顺序:泛化=实现>组合>聚合>关联>依赖
具体UML图例:
二、UML视图分类
1、用例图
【表示方式】虚线箭头 + include;箭头由基础用例指向被包含用例
【表示方式】虚线箭头 + extend;箭头指向基础用例
【表示方式】实线空三角箭头;箭头指向父用例
【作用】子用例继承父用例所有的结构、行为和关系,是父用例的一种特殊形式
例子:
2、 类图
对于第一个框是类名,第二个框是属性,第三个框是方法名,对于属性和方法的可见性如下,因此这里学生id、课程id、成绩都为private
对于属性和方法返回类型,也需要在类图中表示,下图中calcSalary方法后跟括号,返回值为double,可见性为public:
3、包:
一个包可能含有其他包、类或者同时含有这两者
4、顺序图:
体现对象间消息传递的时间顺序
参考资料:
https://blog.****.net/zt15732625878/article/details/50261291
https://blog.****.net/jiuqiyuliang/article/month/2017/03
https://blog.****.net/longronglin/article/details/1454329
https://www.cnblogs.com/jiyuqi/p/4571543.html
https://www.cnblogs.com/LUO77/p/5785374.html
http://www.jfox.info/uml-lei-tu-guan-xi-fan-hua-ji-cheng-shi-xian-yi-lai-guan-lian-ju-he-zu-he.html