类图是UML图中的一种,我们先来了解它的定义:
类图(Class Diagram)使用出现在系统中的不同类来描述系统的静态结构,用来描述不同的类以及它们之间的关系
目录
UML类图包含元素:
单个类的UML表示方法:
类图中类之间的关系:
1 纵向关系:
1.泛化关系:
2.实现关系:
2 横向关系:
1.依赖关系:
2.关联关系:
3.聚合关系:
4.组合关系:
UML类图包含元素:
UML类图中一共包含三种模型元素:
类(Class)
接口(Interface)
类之间的关系(有六个)
单个类的UML表示方法:
![watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVsZSBHdXk=,size_20,color_FFFFFF,t_70,g_se,x_16](https://img-blog.csdnimg.cn/38d9f17f61b346828f89566df7cfd1ab.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVsZSBHdXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
类图中类之间的关系:
![watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVsZSBHdXk=,size_20,color_FFFFFF,t_70,g_se,x_16](https://img-blog.csdnimg.cn/41d92ae46c944d86bb76e3f5e979396b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVsZSBHdXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
1 纵向关系:
1.泛化关系:
表示类与类之间/接口与接口之间的一种继承关系,表示一般与特殊的关系,指定了子类如何特化父类的所有特征和行为
![](https://img-blog.csdnimg.cn/cbcd045cba874c9db666de8bb4fda775.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVsZSBHdXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
2.实现关系:
也是一种继承关系,表示类是接口所有特征和行为的实现。
![](https://img-blog.csdnimg.cn/a405c406a7c14ddba21cfc1d70df39fa.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVsZSBHdXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
2 横向关系:
1.依赖关系:
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
依赖关系可以通过三种方式来实现:
某个类的方法使用另一个类的对象作为参数(如上图)
在一个类的方法中将另一个类的对象作为其局部变量
在一个类的方法中调用另一个类的静态方法
![](https://img-blog.csdnimg.cn/038ee807494c490da6417ecaa2d85002.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVsZSBHdXk=,size_17,color_FFFFFF,t_70,g_se,x_16)
表示方式:带箭头的虚线,指向被使用者或者被创建者。
依赖关系的理解
可以将依赖关系理解为一种使用的关系,即“Use-a”的关系。
再简单一点理解,类 A 使用到了类 B,并且这种使用关系具有偶然性,临时性,是非常弱的关系,但是 B 类中的变化会影响到类 A。
比如,班车司机每天开着班车接送公司员工上下班,每天班车可能不同,但是班车司机只是一个司机,公司给配哪辆班车,司机就使用哪辆班车接送员工。
设计类时,尽量避免双向的互相依赖。
2. 关联关系:
对于两个相对独立的对象,当一个对象与另一个对象存在固定的对应关系时,这两个对象之间为关联关系。
![](https://img-blog.csdnimg.cn/62e9850c3a8c4c92a6ce95435782d814.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVsZSBHdXk=,size_11,color_FFFFFF,t_70,g_se,x_16)
类 A 当中使用了类 B,其中类 B 是作为类 A 的成员变量。
表示方式:使用带普通箭头的实心线表示,指向被拥有者。
和依赖关系的区别:关联关系是两个类一种强的依赖关系,与依赖关系中的偶然性不同,关联关系是长期性的。可以理解为一种拥有或者对应关系,称作为“Has-a”的关系
3.聚合关系:
聚合关系属于关联关系的一种,耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别。
![](https://img-blog.csdnimg.cn/560b98ae8b9c4712893ce3b7320df24f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVsZSBHdXk=,size_17,color_FFFFFF,t_70,g_se,x_16)
表示方式:带空心菱形的实心线,菱形指向整体
上图中汽车包含了发动机,而发动机脱离了汽车也能单独存在。
和关联关系的区别:关联关系的对象间是相互独立的;而聚合关系的对象之间存在着包容关系,聚合关系强调是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在。
聚合关系是比关联关系更亲密的一种关系。
4.组合关系:
组合关系是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期,
区别:“整体”负责“部分”的生命周期,他们之间是共生共死的,并且“部分”单独存在时没有任何意义
![](https://img-blog.csdnimg.cn/33e655aef64d481ba6513db8b4969d84.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVsZSBHdXk=,size_14,color_FFFFFF,t_70,g_se,x_16)
表示方法:带实心菱形的实线,菱形指向整体。
该类图表达:嘴Mouth是头Head的一部分且不能脱离了头而单独存在
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)