什么是类图?类图是干什么的?
类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。类图也可用于数据建模。
类图的规范
格式
-
接口
接口(Interface)是一系列操作的集合,它指定了一个类所提供的服务。它直接对应于Java中的一个接口类型。具体画法见下例:
-
抽象类
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。具体画法见下例:
-
类
类(Class)一般包含3个组成部分。第一个是类名;第二个是属性(attributes);第三个是该类提供的方法。属性和方法之前可附加的可见性修饰符:
加号(+)表示public;减号(-)表示private;井号(#)表示protected;省略这些修饰符表示具有package(包)级别的可见性。具体画法见下例:
注意
- 接口一定有
<<interface>>
的标识,接口中的方法必须斜体(默认都是抽象方法) - 抽象类名和抽象方法必须斜体,非抽象方法不斜体
- 注意访问控制符、返回值、参数等格式的正确性
- 类中属性、方法要描述全面
- 类中使用注解或者new的方式声明的其他类的成员变量也是该类的属性:
原因一:对此类本身而言,此类的类内结构包括属性(成员变量)和方法(成员方法)
原因二:对类间关系而言,虽然这个类与其他类(这个类声明其他类对象)之间有关联(或其他关系),但是这个关系是体现在类间的。 - 类图中要标注使用的设计模式
类之间的关系
常见的关系有:继承(Inheritance),关联关系(Association),聚合关系(Aggregation),复合关系(Composition),依赖关系(Dependency),实现关系(Realization/Implementation)。
其中,聚合关系(Aggregation),复合关系(Composition)属于关联关系(Association)。
类图中的关系表示
一般关系表现为继承或实现关系(is a),关联关系表现为变量(has a ),依赖关系表现为函数中的参数(use a)。
一般化关系:表示为类与类之间的继承关系,接口与接口之间的继承,类对接口的实现关系。
表示方法: 用一个空心箭头+实线,箭头指向父类。或空心箭头+虚线,如果父类是接口。
关联关系:类与类之间的联接,它使一个类知道另一个类的属性和方法。
表示方法:用 实线+箭头, 箭头指向被使用的类。
聚合关系:是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。关联关系的两个类处于同一层次上,而聚合关系两个类处于不同的层次,一个是整体,一个是部分。
表示方法:空心菱形+实线+箭头,箭头指向整体。
组合关系:是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期,组合关系不能共享。
表示方法:实心菱形+实线+箭头,
依赖关系:是类与类之间的连接,表示一个类依赖于另一个类的定义。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。
表示方法:虚线+箭头 箭头指向被依赖的一方,也就是指向局部变量。