类图表示不同的实体(人、事物和数据)如何彼此相关,显示了系统的静态结构。类图可用于表示逻辑类,逻辑类通常就是业务人员所谈及的事物种类,比如摇滚乐队、CD、广播剧,或者贷款、住房抵押、汽车信贷及利率的抽象描述。类图还可用于表示实现类,实现类就是程序员要编写的类。实现类图与逻辑类图可能会用来描述一些相同的类。然而,实现类图与逻辑类图不会使用相同的描述属性。
类图是一个分为三个部分的矩形。最上面的部分显示类的名称,中间部分显示类的属性,最下面的部分显示类的操作(或者说“方法”)。实际上,最常用、最简单的类图就是一个在里面显示了类名的长方形,因为在UML中,大多数类只要有一个能够清楚表达的命名就可以了。
在类名部分还可以显示类的构造类型。类的构造型显示在一对双角括符号“« »”之间,经常放在类的名称上面。常见的构造类型包括实现类(直接显示类名)、接口(在类名上面显示 «interface»),以及工具类(在类名上面显示 «utility»)。如果类名用斜体表示,或者在类名下面标上{abstract},就表示这个类是一个抽象类。
在属性和方法的前面有一个字符用来表示属性或方法的作用域,它们的意义如下:
—“-”表示属性或方法是私有的(private);
—“#”表示属性或方法是保护的(protected);
—“+”表示属性或方法是公用的(public)。
紧接在属性或方法的参数名称的冒号(:)号之后,显示了属性的类型或方法的参数的类型。方法的返回值类型显示在方法后面的冒号之后。
下图显示了一个类Person的类图,它对应的类的C#源代码如下:
|
Person |
|
+name: string +sex: char -age: int |
|
+Work(in type: string): void +Person(in name: string, in sex: char, in age: int): void +Speak(): void +Eat(): void |
{
public string name;
public char sex;
private int age;
public Person(string name, char sex, int age)
{
}
public void Eat()
{
}
public void Speak()
{
}
public void Work(string type)
{
}
}
对象图用来表示类的实例化对象。对象图用一个两层的矩形来表示,上层标识对象名和类名,下层标识对象的实例化属性值。下面的代码将创建一个Person类的对象mary:
Person mary = new Person("Mary", 'F', 24);
|
mary: Person |
|
name: string ="Mary" sex: char ='F' age: int =24 |
表示各对象之间的关系的对象图说明了系统在某一个特定时刻的状态,经常叫做系统的快照(snapshot)。
|
内幕:UML与源代码 UML是一种设计语言,它的目的不是表现细节,而是表现结构,仅仅展示必要的细节。因此,UML不可能与源代码一一对应,只存在结构上的对应关系。作为一种参考,下面列出了图6-7中的类图的C#源代码: interface IHuman { } class Person : IHuman { void Read(Book book) { // … } } class Author : Person { public Book[] books; } class Book { public Author author; public Page[] pages; } class Page { } class Bookshelf { public Book[] books; } |




UML/Rational/PD





此内容无附件