类图是最常用的UML图,它用于描述系统的结构化设计。其中包括类关系以及与每个类关联的属性及行为。类图还能出色地表示类与类之间的关系,类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。
类(图A)是对象的蓝图,其中包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。
属性和操作之前可附加一个可见性修饰符。加号(+)表示具有公共可见性。减号(-)表示私有可 见性。#号表示受保护的可见性。*号或省略表示具有package(包)级别的可见性。如果属性或操作具有下划线,表明它是静态的。在操作中,可同时列出它接受的参数,以及返回类型,
图A
如果是接口类 图B
1. 泛化(Generalization)
泛化在代码里表现出来的就是继承关系:
public abstract class ClassB{
}
public class ClassA extends ClassB{
}
2. 实现(Realization)
实现在代码里表现出来的就是接口的实现:
public interface InterfaceA{
}
public class ClassA implement InterfaceA{
}
3. 依赖(Dependency)
对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。一个类调用被依赖类中的某些方法而得以完成这个类的一些职责。在类图使用带箭头的虚线表示,箭头从使用类指向被依赖的类:
public classClassB{
}
public classClassA{
public int save(ClassB classB){
}
}
4. 关联(Association)
关联关系表现为变量(has a )。类与类之间的联接,它使一个类知道另一个类的属性和方法。例如如果A依赖于B,则B体现为A的全局变量。关联关系有双向关联(双向关联没有箭头)和单向关联。双向关联:两个类都知道另一个类的公共属性和操作。单向关联:只有一个类知道另外一个类的公共属性和操作。大多数关联是单向的:
(关联与聚会、组合的区别:是关联的两个类是处于同一层次上,而聚合、组合的两个类是“整体”与“局部”的关系;
聚会与组合的区别: 聚合的“局部”部分可以独立存在,而组合的“局部”部分不能独立存在,依赖于“整体”,即组合的“局部”是在“整体”创建时才创建的, 代码上是看不出来的区别的,只能通过业务区别;
)public classClassB{
}
public classClassA{
private ClassB classB;
}
5. 聚合(Aggregation)
聚合是是关联关系的一种,是强的关联关系。对象classB 是classA的一部分,并且对象classB可以独立存在。代码表现与关联一样。
6. 组合( Composition)
组合也是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。Composition(组合关系)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。如classA由classB组成,表现为classA包含有classB的全局对象,并且classB对象在classA创建的时刻创建,对象classB不能够单独存在。