浅谈JAVA中类的几种关系

   作为一个程序员,我们难免要绘制一些UML类图,所以我们先要搞清楚类与类之间的关系,下面就简单的介绍下我们日常的类关系。

   一般来说,类与类之间有以下几种关系,依赖、关联、聚合、组合、继承(泛化)、实现。并且这几种关系耦合性是逐渐增强的,下面我们就简单的介绍下这几种关系种关系:

 

1.依赖(Dependency):对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。一个类调用被依赖类中的某些方法而得以完成这个类的一些职责。在UML类图使用带箭头的虚线表示,箭头从使用类指向被依赖的类。如下UML图:Presenter依赖于ICallBack,以requestModel这个方法的参数来建立和Presenter依赖联系。

 

浅谈JAVA中类的几种关系

2.关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,通常是属性的存在,如汽车和轮胎、师傅和徒弟、班级和学生等等。一般在UML类图中,用实线连接有关联关系的对象所对应的类。关联关系还有以下分类:( 注:关联关系中作为成员变量的类一般会在类中赋值  )

 2.1.双向关联:默认情况下,关联是双向的。比如说顾客和购买的商品,顾客拥有商品,并且被购买的商品持有顾客。顾客和商品之间属于双向关联关系。如下UML类图所示

浅谈JAVA中类的几种关系

2.2 单向关联:

类的关联关系也可以是单向的,单向关联用带箭头的实线表示。例如:顾客(Customer)拥有地址(Address),则Customer类与Address类具有单向关联关系。如下UML图所示,

浅谈JAVA中类的几种关系

 

 

2.3自关联,在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。例如:一个节点类(Node)的成员又是节点Node类型的对象。如下UML图所示:

 

浅谈JAVA中类的几种关系2.

3.聚合(Aggregation):表示has-a的关系,是一种不稳定的包含关系。较强于一般关联,有整体与局部的关系,并且没有了整体,局部也可单独存在。比如说员工和老板,员工可以独立存在,就算是公司倒闭了,员工还可以换工作。如下UML类图所示(注:聚合关系中作为成员变量的类一般使用set方法赋值)

浅谈JAVA中类的几种关系

4.组合 (Composition) : 表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。如公司和部门的关系,没有了公司,部门也不能存在了;调查问卷中问题和选项的关系;订单和订单选项的关系。在类图使用实心的菱形表示,菱形从局部指向整体。如下UML类图所示:( 注:组合关系中的成员变量一般会在构造方法中赋值。)

浅谈JAVA中类的几种关系

5.泛化(generalization):简单来说就是继承关系is-a 也是四种关系中耦合度最大的一种,通常我们在绘制UML类图的时候,子类以箭头的方式指向父类,比如下面的UML类图中的MainActivity指向父类抽象类。

浅谈JAVA中类的几种关系

6.实现(Realization):在类图中就是接口和实现的关系。这个没什么好讲的。在UML类图中使用带三角箭头的虚线表示,箭头从实现类指向接口。如下图所示MainActivity实现了ICallBack这个接口:

浅谈JAVA中类的几种关系

本文参考文章:https://blog.csdn.net/zhengzhb/article/details/7187278