类图属于静态建模中的其中之一,各对象之间通过属性相互联系。类图在软件开发业务模型设计中经常遇到,可以在设计实现之初用来描述整体的思路,便于更好的理解和发现不足。
UML图画图工具很多,可以自由选择,用word也没关系,手画也行
- 元素图例及概念解释(配图)
- 类图示例(配图)
元素图例
- 类
每个类主要包含三部分:类名称、类属性、类操作(也叫类方法)。常见画法为一个矩形按顺序上下分三部分即可。另外要想完整描述一个类,还需要画出类的职责、约束、注释等信息。
类图可以画简单类图,即只写类名,属性和方法省略,但是分层还是必须的;另一种就是详细的列出属性和方法。
类之间的关系主要有四种:依赖、泛化、关联、实现
- 类名称
类的命名应该是名词,准确描述一个问题域且不加任何前缀或者后缀。名称分为简单名称和路径名称。
- 类属性
属性数量没有限制
可见性:公有(public)“+” 、私有(private)“-”、 受保护(protected)“#”。
类型:简单类型、包装类型、系统中的其他类型
- 类操作
可见性:公有(public)“+” 、私有(private)“-”、 受保护(protected)“#”、包内公有(package)“~”。
- 类的职责
类与其他元素的契约或义务,自由文本形式的非形式化方法。可在类图下方增加第四个分区。
- 类的约束
指定类要满足的一个或者多个规则,形式化的方法。
- 类的注释
注释可以包含图形或者文本
- 接口
在没有给出对象的实现和状态的情况下对对象行为的描述。
包含操作但不包含属性。
没有对外界可见的关联。
一个类可以实现一个或多个接口。
- 依赖关系
表示两个或多个模型元素之间语义上的关系。
客户以某种形式依赖于提供者。
关联、实现和泛化都是依赖关系。
- 使用依赖(Usage)
表示客户使用提供者提供的服务以实现它的行为,包括:
使用(《use》)
调用(《call》)
参数(《parameter》)
发送(《send》)
实例化(《instantiate》)- 抽象依赖(Abstraction)
表示客户与提供者之间的关系,依赖于在不同抽象层次上的事物,包括:
跟踪(《trace》)
精化(《refine》)
派生(《derive》)- 授权依赖(Permission)
表达一个事物访问另一个事物的能力,包括:
访问(《access》)
导入(《import》)
友元(《friend》)- 绑定依赖(Binding)
较高级的依赖类型,用于绑定模板以创建新的模型元素,包括:
绑定(《bind》)
- 泛化关系
存在于一般元素和特殊元素间的分类关系。
可以用于类、用例以及其他模型元素。
描述了一种“is a kind of” 的关系。
泛化主要用途:
多态
继承 :单继承、多重继承
- 关联关系
一种结构关系。
指明事物的对象之间的联系。
- 名称(Name)
使用一个动词或动词短语来命名关联。
清晰而简洁地说明对象间关系。
关联的名称并不是必需的。
可以前缀或后缀一个指引阅读方向的方向指示符,以消除歧义。
- 角色(Role)
关联关系中一个类对另一个类所表现出来的职责。
角色的名称应该是名词或名词短语,以解释对象是如何参与关系的。
- 多重性(Multiplicity)
指有多少对象可以参与该关联。
可以表达一个取值范围、特定值、无限定的范围或一组离散值。
格式:“minimum…maximum” (均为Int型)。
赋给一个端点的多重性表示该端点可以有多少个对象与另一个端点的一个对象关联。
- 聚合关系(Aggregation)
一种特殊类型的关联。
表示整体与部分关系的关联。
描述了“has a”的关系。
- 组合关系(Composition)
聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合。
成员对象的生命周期取决于聚合的生命周期。
聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和解构。
- 导航性(Navigation)
描述一个对象通过链进行导航访问另一个对象。
使用导航性可以降低类间的耦合度。
包括:单向关联和双向关联。
- 实现关系
规格说明和其实现之间的关系。
客户必须至少支持提供者的所有操作。
泛化和实现都可以将一般描述与具体描述联系起来:
1.泛化将同一语义层上的元素连接起来,并且通常在同一模型内。
2.实现将不同语义层内的元素连接起来,并且通常建立在不同的模型内。
类图示例
基本关系类图示例
客服系统
售票系统
适配器模式类图
简单工厂模式
工厂模式
抽象工厂模式