UML类图
类和类、类和接口、接口和接口之间存在一定关系,UML类图中一般会有连线指明它们之间的关系。
关系共有六种类型,分别是实现关系、泛化关系、关联关系、依赖关系、聚合关系、组合关系。
- 实现关系是指接口及其实现类之间的关系。在UML类图中,实现关系用空心三角和虚线组成的箭头来表示,从实现类指向接口。
- 泛化关系(Generalization)是指对象与对象之间的继承关系,泛化关系用空心三角和实线组成的箭头表示,从子类指向父类。
- 关联关系(Association)是指对象和对象之间的连接,它使一个对象知道另一个对象的属性和方法。双向关联关系用带双箭头的实线或者无箭头的实线双线表示。单向关联用一个带箭头的实线表示,箭头指向被关联的对象。
- 依赖(Dependency)关系是一种弱关联关系。依赖关系用一个带虚线的箭头表示,由使用方指向被使用方,表示使用方对象持有被使用方对象的引用。
- 聚合(Aggregation)是关联关系的一种特例,它体现的是整体与部分的拥有关系,聚合关系用空心菱形加实线箭头表示,空心菱形在整体一方,箭头指向部分一方。
- 组合(Composition)也是关联关系的一种特例,它同样体现整体与部分间的包含关系,但此时整体与部分是不可分的,部分也不能给其它整体共享,作为整体的对象负责部分的对象的生命周期。这种关系比聚合更强,也称为强聚合,组合关系用实心菱形加实线箭头表示,实心菱形在整体一方,箭头指向部分一方。
UML 用例图
用例图主要有三个部分组成:用例(Use Case)、参与者(Actor),以及它们互相间的关系(Relationship);形式上就是用椭圆、小人,以及箭头的连线组合。
- Systems,一个用例图一般只会有一个 System,之后我们会把所有该系统相关的是功能(“用例”)放置在系统内部,系统的相关方(“参与者”)放置在系统的左右两侧。
- Actors,参与者,即系统相关方,可以是人、组织、外部设备,或是其他系统。通常来说,一个用例图中会有两三个参与者,我们会把主要参与者放在系统左侧,次要参与者(主要参与者的回应方)放在右侧。
- Use Case,在系统内添加具体的用例,也就是该系统所提供的功能或是业务块。
- Relationships,把参与者与用例串联起来,就是我们所说的关系(Relationships),用例图中,关系还可以继续细分:
- association,“关联”是最朴素、最通用的一种关系形式——UML 图中用实线表示。
- include & extend,“包含”和“扩展”在表现上就是虚线+箭头的形式,然后在虚线上方注释具体的关系形式,必然发生的用例和后续可能发生的用例。
- Generalization,另外一种常见的关系叫做“泛化”,也可以称作“继承”。继承在 UML 中的表现方式是实线+空心箭头,“泛化”并不局限于用例之间,也可以是参与者继承参与者的形式。
- Extension points & Note,所有 UML 视图事实上都可以加注释,专业术语叫延伸(Extension points)和批注(Note);这两种注释性质形同,都是起说明作用。
- 延伸:通常是用例椭圆下半区加注的说明,相对来说内容较少。
- 批注:是一个类似文本的图案,用虚线连接特定元素,可以附带较多文字信息。
UML 时序图
时序图和活动图是各个设计阶段,从产品经理、架构师,到底层开发人员都会使用到的视图。
时序图(Sequence Diagram)是 UML 中最常见的交互图,通过描述对象间发送消息的时间顺序显示多个对象之间的动态协作状态。元素包括角色(Actors)、对象(Object)、生命线(Lifetime)、消息(Message)、激活(Focus of Control)等等。
- Actor(角色)& Object(对象),时序图的第一步是列出交互中出现的所有角色和对象。
- 角色:通常指“人”,也可以是组织、机器、系统等等“抽象的人”,和用例图一样,用小人图表示。
- 对象:就是与上述“人”对应的“物”了,包括所有产品、服务、设备等等抽象的物体。
- Lifeline(生命线),给每个角色和对象加上一条生命线。所谓的生命线就是从角色(或对象)引出向下延伸的虚线,表示时序图存在的时间轴。
- Message(消息),消息自然是有来有往的,发送出去的消息叫 Request(请求),反馈的消息成为 Response(响应)。请求用实心箭头示意,并在箭头上方加注说明,响应用虚线箭头表示,也会加上简单的返回内容。
- Combined Fragment(组合片段),组合片段用来解决交互执行中的条件反馈。最常用的就是 Alt 片段——抉择片段,通俗来说就是 if-else 的条件判断组合。
- Focus of Control(控制焦点),控制焦点又称激活,是覆盖在生命线上一段细长的矩形,表示在这个时间段内,对象或角色正处于活动状态。