类图
内部结构
类再类图上使用包含三个部分的矩形来描述,最上面的部分显示类名,中间是类的属性,最后是类的方法。
相互关系
1. 关联
两个类之间必然存在关联关系。
关联具有一定的方向性:如果仅能从一个类单方向的访问另一个类,则被称为单向关联。
如果可以互相访问,称为双向关联。
关联使用一条实线表示,带箭头的实线表示单向关联。
类里的某个属性引用到另一个实体时,则变成了关联。
-
聚合
当某个实体聚合成另一个实体时,该实体还可以同时是另一个实体的部分。
例如,学生既可以是篮球俱乐部的成员,也可以使书法俱乐部的成员 -
组合
当某个实体组合成另一个实体时,该实体不能是另一个的实体的部分。
聚合用空心菱形框,组合用实心菱形框
2. 泛化
泛化也就是继承
2. 实现(特殊)
补充:他其实就是继承关系
代码中体现为 类实现接口,用虚线区分。
3. 依赖
如果一个类改动会导致另一个类改动,则称两个类之间存在依赖
依赖关系使用带箭头的虚线表示。依赖是单向的。
与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;
注:在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系除了临时知道对方外,还是“使用”对方的方法和属性;
常见的两个依赖关系
Servlet 和 ServletRequest、ServletResponse
HttpServlet 和 HttpServletRequest 、 HttpServletResponse
依赖常见的可能原因:
- 改动的类将消息发给另一个类。
- 改动的类以另一个类作为数据部分
- 改动的类以另一个类作为操作参数。
D改变,J也发生改变。
关于依赖
依赖这块还可以参考我们 大多数框架(Spring)的实现核心 Ioc(控制反转)、也叫 Dependency Injection (依赖注入)。完美的和这儿的 依赖关系所吻合。
依赖注入不就是从组合聚合关系转化为依赖关系的一种体现吗?我认为就是这样的!
依赖注入可以参考专栏
关于 UML 类图 以及 别的类型的 UML 图 制作,可以看平台提供的文档;