类关系图简记

类关系记忆技巧总结如下表所示:

分类 箭头特征 记忆技巧
箭头方向 从子类指向父类 定义子类需要通过 extends 关键字指定父类子类一定是知道父类定义的,但父类并不知道子类的定义只有知道对方信息时才能指向对方箭头的方向是从子类指向父类
继承/实现 用线条连接两个类; 空心三角箭头表示继承或实现 实线表示继承,是is-a的关系,表示扩展,不虚,很结实
虚线表示实现,虚线代表“虚”无实体
关联/依赖 用线条连接两个类; 普通箭头表示关联或依赖 虚线表示依赖关系:临时用一下,若即若离,虚无缥缈,若有若无表示一种使用关系,一个类需要借助另一个类来实现功能一般一个类将另一个类作为参数使用,或作为返回值
实线表示关联关系:关系稳定,实打实的关系,“铁哥们”表示一个类对象和另一个类对象有关联通常一个类中有另一个类对象作为属性
组合/聚合 用菱形表示:像一个盛东西的器皿(如盘子) 聚合:空心菱形,代表空器皿里可以放很多相同的东西,聚集在一起(箭头方向所指的类)整体和局部的关系,两者有独立的生命周期,是 has-a 的关系弱关系,消极的词:弱-空
组合:实心菱形,代表器皿里已经有实体结构的存在,生死与共整体与局部的关系,和聚合关系对比,关系更加强烈,两者具有相同的生命周期,contains-a 的关系强关系,积极的词;强-满

类图

下图是对动物衍生关系描述的类图。这个图非常有技术含量也非常经典。

类关系图

依赖与关联的区别

类与类之间由弱到强关系是: 没关系 >依赖 > 关联 > 聚合 > 组合

依赖

可以简单的理解,就是一个 类A 使用到了另一个 类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是 B类 的变化会影响到 A;

比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;

表现在代码层面,为 类B 作为参数被 类A 在某个 method方 法中使用。

用带虚线的箭头。

关联

他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;

表现在代码层面,为被关联类B以类属性的形式出现在关联 类A 中,也可能是关联 类A 引用了一个类型为被关联 类B 的全局变量;