全网最简:秒懂uml类与类之间的关系

uml类与类之间的关系

在网上查有关uml中类与类之间各线条的关系,发现各种版本的讲解都不是特别的详细,网上查询出现最多的版本是这个:点击打开链接,对里面uml类图的详解不是特别满意,于是通过自己整理和学习,对uml中类图各种知识点做了个简单的描述和总结,以Java的语句为基础做一个简单的总结,毕竟还是小白阶段,如果有哪些不对或者不成熟的地方,还请各位大神多多指正!

推荐一款用于画uml的建模工具:ProcessOn 一款基于浏览器语言HTML5在线UML建模工具,属于国内创业团队的产品,用QQ就可以登录,建议体验一下!官方网站:http://www.processon.com

全网最简:秒懂uml类与类之间的关系

类与类之间的六大关系:

1、依赖 全网最简:秒懂uml类与类之间的关系


2、关联 全网最简:秒懂uml类与类之间的关系


3、泛化(继承)全网最简:秒懂uml类与类之间的关系


4、实现 全网最简:秒懂uml类与类之间的关系


5、聚合 全网最简:秒懂uml类与类之间的关系


6、组合 全网最简:秒懂uml类与类之间的关系


具体分析:

1、依赖:类的某个功能需要另一个类辅助才能完成

依赖是六大关系中最弱的一种关系,主要有两种实现的方式:
①作为方法参数实现
如:人读书(人依赖书)
read(Book book){

}
②直接构建某对象
void program(Computer computer){
Computer computer = new Computer();
}
这种方法和①比起来无法改变初始值

uml图解:
全网最简:秒懂uml类与类之间的关系


2、关联:一个类的多个方法都需要另一个类的辅助才能完成

代码实现:
class Book{
private String name;
private float price;
private Person author;
}
Book要关联person();(关联这里是关系轻的叫法,组合与关联作用类似,但是属于一种强关系)
一个类作为另一个类的属性(这里author一定要记得初始化,不然会报空指针错误)

uml图解:
全网最简:秒懂uml类与类之间的关系

3、泛化(继承):表示一个类与另一个类是父子关系

(这个比较好理解,泛化就是java中的继承)不明白的同学可以学习java继承这一章,代码关键字:extends

dog全网最简:秒懂uml类与类之间的关系animal,dog和animal就是继承,dog是子类,animal是父类

代码实现:

class Animal{ }

class Dog extends Animal{ }


uml图解:

全网最简:秒懂uml类与类之间的关系

同时接口可以继承接口

全网最简:秒懂uml类与类之间的关系


4、实现:指的是一个class类实现interface接口(可以是多个)的功能(接口中没有属性);实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识

代码实现:
interface A{
}
clss B implements A{

}

uml图解:
全网最简:秒懂uml类与类之间的关系

5、聚合:聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系

聚合中整体与部分之间是可分离的(组合和聚合比起来就是不可分离的,是一种强关联关系),他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如鸭子与鸭群,学生与班级都是多对一的关系,但是鸭子、鸭群、学生、班级又是可以彼此分离单独存在的。

代码实现:
class Student{ }
calss ClassInfo{//班级有多个学生
private Student[] student;
}

uml图解:
全网最简:秒懂uml类与类之间的关系

6、组合:组合也是关联关系的一种特例,这种关系比聚合更强,也称为强聚合

组合同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和头,轮胎和汽车

uml图解:
全网最简:秒懂uml类与类之间的关系

关联、聚合和组合区别图解:
全网最简:秒懂uml类与类之间的关系

几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖