前言
在完成了系统的用例图后,就可以根据用例图的参与者以及用例来进行UML的静态设计了,静态图分别有类图、对象图和包图。
类图是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。
正文
类图包含7个元素:类、接口、协作、依赖关系、泛化关系、实现关系以及关联关系。
与UML建模中的其他图一样,类图也可以包含注解和约束。类图中还可以含有包和子系统。
一、类图元素——类
上图的矩形就是类,它被划分为3个部分:顶部——名称部分(Name)、中间——属性部分(Attribute)、底部——操作部分(Operation,也可以称为方法)。同时,属性和操作可以具有不同的可见性,可见性描述了该属性对于其他类是否可见,以及是否可以被其他类引用,而不仅仅是被该属性所在类可见。
属性的可见性包括:公有(Public)、私有(Private)、受保护(Protected)。
操作的可见性包括:公有(Public)、私有(Private)、受保护(Protected)、包内公有(Package)。
二、类图元素——接口
接口包含操作但不包含属性,并且它没有对外界可见的关联。一个类可以实现一个或多个接口,且所有的都可以实现接口中的操作。在类图中,接口之间的继承是用类继承所使用的符号显示的。
接口的两种表示方式,如下:
三、类图元素——关系
1.依赖(Dependency)关系:依赖表示两个或多个模型元素之间语义上的关系。它表示了这样一种情形,对于一个元素(提供者)的某些更改可能会影响或提供消息给其他元素(客户),即客户以某种形式依赖于其他类元。
举个栗子:人依赖水
2.泛化(Generalization)关系:泛化关系是一种存在于一般元素和特殊元素之间的分类关系。特殊元素与一般元素兼容,且还包含附加的信息。那些允许使用一般元素的地方都可以用特殊元素的一个实例来代替,但是反过来则不成立。泛化关系只使用在类型上,而不是实例上,如一个类可以继承另一个类,但是一个对象不能继承另一个对象。
a.单重继承:一个子类有且只有一个父类
b.多重继承:一个子类有两个或两个以上的父类
3.关联(Association)关系:是描述一组具有共同结构特征、行为特征、关系和语义的链接。
除了关联的基本形式外,还有6种应用于关联的修饰,分别是名称、角色、多重性、聚合、组合和导航性。
①名称(Name)。关联可以有一个名称,用来描述关系的性质。
②角色。当一个类处于关联的某一端时,该类就在这个关系中扮演一个特定的角色。具体来说,角色就是关联关系中一个类对另一个类所表现的职责。
③多重性(Multiplicity)。约束是UML三大扩展机制之一,多重性是其中的一种约束,也是使用最广泛的约束。
举个栗子:
一个学校可以有1个或更多的学生,而一个学生可能同时在0或多个学校中学习。
下表是多重性语法的一些示例:
修饰 |
语义 |
0 |
恰为0 |
0…1 |
0或1 |
0…n |
0或更多 |
1 |
恰为1 |
1…n |
1或更多 |
n |
0或更多 |
④聚合(Aggregation)。表示整体与部分关系的关联。
大学是由多个学院组成的。
⑤组合(Composition)。是聚合关系中的一种特殊情况,是更强形式的聚合,又被称为强聚合。
菜单和按钮不能脱离窗口对象而独立存在,如果组合被破坏,则其中的成员对象不会继续存在。
⑥导航性(Navigation)。可以在关联关系上加箭头表示导航方向。只在一个方向上可以导航的关联成为单向关联,用一条带箭头的实线来表示;在两个方向上都可以导航的关联成为双向关联,用一条没有箭头的实线来表示。
4.实现(Realization)关系:将一种模型元素与另一种模型元素连接起来,比如类和接口。
下图是我基于对机房的理解所画的类图,欢迎提出宝贵的建议。