现代软件工程有多种编程范式,如:面向对象编程、面向过程编程、函数式编程等。而其中面向对象编程一个最重要的特征就是对要实现的软件进行建模,设计类并组织它们之间的关系。而面向对象编程中类之间的关系有如下几种
一、关联关系
关联关系是类与类之间最常用的一种关系,它用于表示一类对象与另一类对象之间有联系。如学生与老师、班级与学生。在Java中关联关系通常是以一个对象作为另外一个对象的成员变量形式存在。以UML图表达,关联关系是以实线带箭头的形式表达,如下图所示
1..1 表示一个类的一个对象只与该类的一个对象有关系
0..* 表示一个类的一个对象与该类的0个或多个对象有关系
1..* 表示一个类的一个对象与该类的1个或多个对象有关系
0..1 表示一个类的一个对象与该类的0个或1个对象有关系
m..n 表示一个类的一个对象与该类的最少的m个,最多n个对象有关系
二、聚合关系
聚合关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象单独存在。在UML中,聚合关系是用带空心菱形的直线表示。
三、组合关系
组合关系也表示整体与部分的关系,但是在组合关系中,成员对象不能脱离整体对象单独存在。在UML中,组合关系用带实心菱形的直线表示。
四、依赖关系
依赖关系是表示一种使用关系,即一个类的功能需要借助其他类来实现。在项目中,依赖关系通常以三种方式来实现:
1、一个类的对象作为另一个类中方法的参数
2、一个类的对象作为另一个类中方法的局部变量
3、在一个类的方法中调用另外一个类的静态方法
依赖关系以虚线带箭头形式表现。
五、泛化关系
泛化关系又称为继承关系,我们知道,面向对象有三个特征:封装、继承和多态,继承是实现代码复用的一种手段。在UML中,用空心三角箭头表示
六、实现关系
在面向对象中,还有一种关系是实现关系,它描述的是类与接口之间的关系。在UML中,使用虚线带空心三角箭头表示。