统一建模语言提供了一种表示法,通过它,我们可以获取和说明程序设计。UML类图描述系统中的类、它们之间的静态关系、与类关联的属性和操作以及有关对象间连接的约束。
UML类图
在UML中,类由一个矩形来表示,并且通常分割成3部分:类名、属性和操作。上图说明了一个名为LibraryItem的类名。该类有两个关联的属性:title和callNumber,有两个关联的操作:checkout和return。
在类的表示法中,属性和操作是可选的。因此,如果需要,可以用一个只包含类名的矩形表示一个类。在UML的类表示法中还可以包含许多其他信息。在UML术语中,一种用“<< >>”括起来的注释称为构造型(stereotype)。在类名上面可以添加<<abstract>>和<<interface>>构造型,表明它表示一个抽象类或者一个接口。类的可视性默认为公有的,但是我们可以用花括号中的属性字符串标出非公有的类,诸如{private}。可见性也可以使用符号来表示,如:“+”表示public,“#”表示protected,“-”表示private。类中列出的属性还可以提供几种附加信息。表示一个属性的完整语法如下:visibility name:type=default-value。例如,我们还可以这样列出LibraryItem类的title属性:-title:String = “借书”,它表示属性title是一个String类型的私有变量,默认值为借书。此外,在属性上面可以加上构造型<<final>>,表示它是一个常量。同样,操作的完整语法为:visibility name(parameter-list):return-type{property-string}。类似于属性的语法,除了操作名外的所有其他项都是可选的。可视性修饰符与属性相同。parameter-list可以包含每个参数的名称和类型,并且用一个冒号隔开。return-type是返回值的类型。
UML关系
上图表示从LibraryItem类派生的两个类。继承用一个从子类指向父类的空心箭头表示。该例子说明Book类和Video类继承LibraryItem类的所有属性和操作,但是它们还可以用自己的属性扩展定义。注意,在本例中,除了父类中提供的那些操作,两个子类都没有任何新增的操作。
上图表示的是关联关系,它表示类的实例之间的关系。关联关系通过两个类之间的实线指出,并且在任何一边可以用关系的基数进行加注。本例表示一个LibraryCustomer和一个LibraryItem之间的关联。基数“0...*”表示“0个或者多个”,在配合中表示任何一个图书馆顾客可以借阅0本或者多本书,并且任何一本图书可以被多个顾客借阅。一个关联的基数可以表示关系,诸如一个确切的数字或者某个特定的范围。例如,如果一个顾客只允许借阅4本书,则可以由基数”0...5“指出。
上图表示聚合关系,这是指一个类在本质上至少部分地由其他类构成的情况。如上图所示,扩展前面的图书馆示例,以表示CourseMaterials类由Book、CourseNotes和Video类构成。聚合关系用聚焦端上的空心菱形表示。
上图表示的是实现的概念,这种关系发生在接口和实现该接口的任何类之间。图中表示一个称为Copyrighted的接口,它包含两个抽象方法。带有空心箭头的虚线表明Book类实现Copyrighted接口。
上图表示一个类使用另一个类的概念。这种概念的实例包括,老师使用黑板、司机使用汽车或者图书管理员使用计算机。图中说明了这种关系,表示LibraryCustomer可能使用Computer。使用这种关系由带有空心箭头的虚线表示,并且通常加注关系的说明。