类图(class diagram)是UML中使用最多的一种图。
一个类,它远看是矩形,近看也是一个矩形,只不过有时候是一个矩形,有时候是2-3个矩形的集合。
一个类,通常会有一些属性和方法,用类图表示如下:
这个类图,由三个矩形组成,由上而下分别是类名,属性、方法。前面的 (“+”)号表示公开属性或方法(Public),("-")号表示私有的属性或方法(Private),而("#")号表示保护(Protected)。
当然,有的为了对类图进行简洁,将属性、方法中的一个或两个进行隐藏。
类图,并不是说画上一个矩形,写上名称、属性和方法就可以了。在实际的软件系统开发当中,类并不是孤立存在的,类与类之间存在一定的关系。
1.关联关系:
它是一种结构化关系,用于表示一类对象与另一个类对象之间有关系,例如,学生和老师,子女与父母等等。
例如:刚哥And 云姐is同学关系
在UML中,关联关系又包含以下几种关系:
(1)双向关联:指双方都知道对方的存在,都可以调用对方的公共属性和方法。实现两端都不带箭头。
例如:上图的刚哥and 云姐,就是一种种双向关联关系,即云姐既认识刚哥,刚哥也认识云姐。
(2)单向关联:表示一种单方面的相识关系:单向关联用实现的一头带箭头表示。
例如:刚哥And 比尔盖茨 ,刚哥认识比尔盖茨,而比尔盖茨不知道刚哥的存在。
(3)聚合关系:用一个空心菱形来表示,属于弱包含。
例如 cpu与computer,如果computer没有了,Cpu还是可以单独存在的。
(4)组合关系:用一个实心菱形来表示,属于强包含,比聚合关系还要强的一种。
例如,最典型的莫过于人和他自己的胳膊,如果一个人都没有了,那他的胳膊肯定也就消失了,胳膊是不能作为一个单独的个体来存在的。
PS: 聚合和组合关系都属于整体与部分的关系
2. 泛化关系:
用于描述一个类是另一个类的类型。就是一种子类继承父类的属性与方法的关系。例如:
篮球和足球都属于球类,都具有球的属性(圆的)和方法(拍,踢)
例如:篮球 is a 球。这种含有 is a 关系的一般为继承关系。
3. 依赖关系:是一种使用关系。特定事物的改变有可能会影响到使用该事物的其他事物。
例如,在系统开发当中,如果我们使用了一些公用类,供别的类使用,如果这些公用类出现了问题,那么调用这些公用类的其他类也会出现问题。在UML中依赖关系如下图表示:
4.实现关系:指的是对象实现一个接口的关系。例如:小鸟属于鸟类,它实现了鸟类会飞的这一个接口,所以小鸟也能在空中飞翔。
例如 用UML绘制类图,一般按照这三个步骤进行:
首先定义出类;其次明确类的属性和方法;最后分清类与类之间的关系。