类与类的六种关系与UML图

类的关系:泛化(继承) = 实现 > 组合 > 聚合 > 关联 > 依赖

泛化:(is-a),类与类、接口与接口的继承关系

****************************************************************************************

实现:指的是一个class类实现interface接口(可以是多个)的功能

****************************************************************************************

关联:A类作为B类的属性样式的存在,即“有”的关系

这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。

分类:

单向关联A类关联B类   Climate:气候

双向关联:A类关联B类,B类关联A类

多重性:

一对一关联:一个学生只能在一个班级里学习

一对多关联:一个学生可以参与多个班级的学习

解决一对多关联的方案是集合和数组

聚合:是比较强的关联关系,整体——部分

部分可以独立存在,所以是比较弱的拥有关系

雁群类——大雁类

组合:是更强的关联关系,部分完全依赖整体存在

整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在没有任何意义,是比较强的拥有关系

大雁类——翅膀类

聚合和组合总结:

1.构造函数不同

聚合类:构造函数中包含了另一个类作为参数。 雁群类(GooseGroup)的构 造函数中要用到大雁(Goose)作为参数传递进来。大雁类(Goose)可以脱离雁群类而独立存在。

组合类:构造函数中包含了另一个类的实例化。 表明大雁类在实例化之前,一定要先实例化翅膀类(Wings),这两个类紧密的耦合在一起,同生共灭。翅膀类(Wings)是不可以脱离大雁类(Goose)而独立存在。

2.信息的封装性不同

   聚合:客户端可以同时了解雁群类和大雁类,因为他们都是独立的。

   组合:客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀类被严密的封装在大雁类中。

****************************************************************************************

依赖:(use-a),指一个类A使用到了另一个类B

特性:被使用的B类变化会影响到A类,这种关系是微弱的,偶然的

具体表现: B类作为参数在A类的方法中使用

例如:人与车

关联和依赖:

关联是"has"关系,依赖是"use"关系

A类关联B类,是指B类作为A类的属性存在

A类依赖B类,是指B类作为A类的方法参数存在

依赖关系只在被调用时产生

关联关系是当类实例化的时候即产生,当类销毁的时候,关系结束

猜你喜欢

转载自blog.csdn.net/CharmaineXia/article/details/110641925