- 类图表示不同的实体(人、事物和数据)如何彼此相关,显示了系统的静态结构。
- 类图是一个分为三个部分的矩形。
- 最上面的部分显示类的名称,
- 中间部分显示类的属性,
- 最下面的部分显示类的方法(或者说“操作”)。
类名
<<类型>>
类名
类型
- 类的构造型显示在一对双角括符号“<<>>”之间 , 经常放在类的名称上面。
<<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
class Person {
public string name;
public char sex;
private int age;
public void Person(string name, char sex, int age){}
public void Eat(){}
public void Speak(){}
public void Work(string type){}
}
类之间的关系
- 关联(association):类之间的关联大多用来表示变量实例持有对其他对象的引用,这种关系是半永久的,但没有包含关系。
- 继承(inheritance):继承是指一个类从其父类派生而来,继承了父类的属性和方法。
- 基于接口的继承,叫做实现(realization)。
基于类的继承叫做一般化(generalization), - 依赖(dependency):依赖是不同类的实例之间的暂时关系。
- 聚合(aggregation):聚合是关联的一种特殊形式,它意味着一种整体/部分(whole/part)的关系,但是部分也可以作为其他整体的组分,而且部分和整体之间也没有生命期的依赖。
- 组合(composition):组合是聚合的一种特殊形式,组合的关联性比聚合更强,部分只能作为唯一的一个整体的部分,而且部分的生命周期依赖于整体的生命周期。
类的实例
实例一
- CDSalesReport类继承自Report类。
- 一个CDSalesReport类与一个CD类关联,但是CD类并不知道关于CDSalesReport类的任何信息。
- CD类和Band类都彼此知道对方,两个类彼此都可以与一个或者多个对方类相关联。
实例二
- Person类实现了IHuman接口,
- Author类继承了Person类;
- Book类与Author类之间的关联是1对多的,即一本书可能有一个或多个作者;
- Person读书,这是一种暂时的单向依赖;
- Book由一个或多个Page组成,每一个Page只能作为一本Book的一部分,这是一种组合关系;
- Bookshelf里可以不放或者放多本Book,Book也可以放在其他的Bookshelf中,Bookshelf的存在并不能影响Book的存在性,这是一种聚合关系。