类图(Class Diagram)属于结构图,常被用于描述一个系统的静态结构。一个类图通常包含类(Class)的UML图、接口(Interface)的UML图以及泛化关系(Generalization)的UML图、关联关系(Association)的UML图、依赖关系(Dependency)的UML图和实现关系(Realization)的UML图
一、类(Class)
在UML中,使用一个长方形描述一个类的主要构成,将长方形垂直分为三层。
1、第一层:名字层,如果类名字是常规字形,表明该类是具体类,如果类名字是斜体,表明该类是抽象类
2、第二层:变量层,也称属性层,列出类的成员变量及类型,格式是“变量名:类型”。‘+’表示变量的访问权限是public,‘-’表示变量的访问权限是private,‘#’表示变量的访问权限是protected
3、第三层:方法层,也称操作层,列出类的方法及返回类型,格式是“方法名字(参数列表):类型”。
二、接口(Interface)
UML表示接口的UML图和表示类的UML图类似,使用一个长方形描述一个接口的主要构成,将长方形垂直分为三层。
1、第一层:名字层,接口的名字必须是斜体,而且需要用<<interface>>修饰名字,并且该修饰和名字分列在两行
2、第二层:常量层,列出接口中的常量及类型,格式是“常量名字:类型”。在Java中常量的访问权限是public,所以需要在常量名字前用“+”修饰
3、第三层:方法层,也称操作层,列出接口中的方法及返回值类型,格式是“方法名(参数列表):类型”。在Java中常量的访问权限是public,所以需要在常量名字前用“+”修饰
三、泛化关系(Generalization)
对于面向对象语言,UML所说的泛化关系就是指类的继承关系。如果一个类是另一个类的子类,那么UML通过使用一个实线连接两个类的UML图来表示二者之间的继承关系,实线的起始端是子类的UML图,终点端是父类的UML图,在终点端使用一个空心三角形表示实线的结束。
四、关联关系(Association)
如果A类中成员变量是用B类(接口)来声明的变量,那么A和B的关系是关联关系,称A关联于B。如果A关联于B,那么UML通过使用一个实线连接A和B的UML图,实线的起始端是A的UML图,终点端是B的UML图,终点端使用一个指向B的UML图的方向箭头表示实线结束。
五、依赖关系(Dependency)
如果A类中某个方法的参数是用B类(接口)来声明的变量或某个方法返回的数据类型是B类型的,那么A 和B的关系是依赖关系,成A依赖于B。如果A依赖于B,那么UML通过使用一个虚线连接A和B的UML图,虚线的起始端是A的UML图,终点端是B的UML图,终点端使用一个指向B的UML图的方向箭头表示虚线结束。
注:在Java中,习惯上将A关联于B也称作A依赖于B,当需要强调A是通过方法参数依赖于B时,就在UML图中使用虚线连接A和B的UML图
六、实现关系(Realization)
如果一个类实现了一个接口,那么类和接口的关系是实现关系,称类实现接口。UML通过使用虚线连接类和它所实现的接口,虚线起始端是类,虚线的终点端是接口,终点端使用一个空心的三角形表示虚线的结束。
七、注释
UML使用注释为类图提供附加的说明。UML在一个带卷角的长方形中显示给出的注释,并使用虚线将这个带卷角的长方形和它所注释的实体连接起来