1、概念
类图是描述类、接口以及它们之间关系的图,它显示了系统中各个类的静态结构,是一种静态模型。
2、什么是类?
类是具有相同属性和行为的对象集合。比如”人类“就是一个类,那么具体的某个人”张三“就是”人类“这个类的对象,而”名字、年龄“等信息就是对象的属性,人的动作比如”吃饭、穿衣、睡觉“等就是对象的操作。总之类就是有相同特征的事物集合,而对象就是类的一个具体实例。同时类有多态和继承,例如”人类“可以分为”男人、女人“。
在UML类图中,类使用包含类名、属性(field)和方法(method)且带有分隔线的矩形来表示。
属性的表示方式:可见性 名称:类型[ = 缺省值 ],中括号可选。
方法(也叫操作)的表示方式:可见性 名称(参数列表) [ : 返回类型],中括号可选。
3、类的属性
类的属性有可见性:public(公有)、private(私有)、Protected(保护)和数据类型:int、char、string、float、bool...
4、关联关系(聚合、组合)
关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用。
a)单向关联
单向关联用一个带箭头的直线表示。上图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量来实现。
b)双向关联
双向关联就是双方各自持有对方类型的成员变量,用一个不带箭头的直线来表示。上图中在Customer类中维护一个Product[]数组表示一个顾客购买了哪些产品;在Product类中维护一个Customer类型的成员变量表示这个产品被那个顾客所购买。
c)自关联
用一个带有箭头且指向自身的直线表示。上图的意思就是Node类包含类型为Node的成员变量,也就是“自己包含自己”。
聚合与组合是两种特殊的关联关系。
d)聚合
用带空心菱形和箭头的直线表示。聚合关系强调是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在。比如上图中汽车包含了发动机,而发动机脱离了汽车也能够单独存在。
e)组合
组合关系与聚合关系间的最大不同在于:这里的“部分”脱离了“整体”便不复存在。显然,嘴是头的一部分且不能脱离了头而单独存在。在UML类图中,组合关系用一个带实心菱形和箭头的直线表示。
5、依赖关系
依赖表示一个类以某种形式依赖于其他类。当两个类处于依赖关系中时,其中一个类的改变可能会影响另一个类。
Driver的drive方法只有传入了一个Car对象才能发挥作用,因此我们说Driver类依赖于Car类。在UML类图中,依赖关系用一条带有箭头的虚线表示。
6、泛化关系
在现实生活中,有时会出现一类事物具有另一类事物的全部特点,除此之外还有自身的特点。
如果一个类A(父类)的属性和操作能被另一个类B(子类)所继承,则类B不仅可以包含类A中的属性和操作,而且还可以添加自己独有的属性和操作,这种机制就是泛化,泛化也称之为继承或派生。
多态性:在泛化关系中,父类所定义的操作被子类继承之后,可以表现出不同的行为。多态性允许在(有继承关系的)多个类中定义同名的操作,并在每一个类中有不同的实现。
7、实现关系
接口是一组没有实现的操作的集合。接口只提供操作的声明,不提供任何相应的功能代码。具体的功能代码由使用该接口的类实现,这叫做实现关系。
实现关系的表示方法:带三角箭头的虚线,箭头指向接口(接口的操作为空)。
8、总结
说明:UML使用*来代表许多,..代表or关系,如 1..* 代表一个或多个。
——部分内容整理自网络——