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.csdn.net/zt15732625878/article/details/50261291

https://blog.csdn.net/jiuqiyuliang/article/month/2017/03

https://blog.csdn.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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值