UML总结

192 阅读3分钟

uml概述

uml形式

  • 类图
  • 时序图

类图是展示软件项目中,类与类关系的逻辑图。
时序图展示的是软件的方法调用流程。

uml类图

先从一张图片说起:

uml类型示例.png

图中一共包含五种关系

  • 泛化
  • 聚合
  • 组合
  • 依赖
  • 关联

泛化

泛化关系,有两种类型

  • 继承 上图中小汽车和suv就是继承关系,小汽车是suv的父类,对应在uml图上就是用一个空心三角箭头指向父类
  • 实现 上图中小汽车实现车这个接口,也是空心三角箭头指向接口,但线是虚线

聚合

聚合关系,表示由A组成B,但如果B不存在了,A还能独立存在,A是B的一部分。对应上图的学生和班级,由实线菱形箭头表示

组合

组合关系,表示A是B的一部分,但如果B不存在了,那么A也不再存在。对应上图的轮胎和小汽车,由实现黑色菱形箭头表示,箭头指向B。
组合关系和聚合关系非常相似,都表示A是B的一部分,但组合关系相对更加箭单一些,只要A是B的全局变量,则可以使用组合关系表达,但聚合关系稍微复杂,表示A能脱离B而单独存在,比如学生与班级,班级不存在了,学生依旧存在。

依赖

依赖关系,使用带虚线的箭头表示,表示在运行时的依赖,是一种临时性的关系。
上图中,学生就依赖于自行车。
对应软件上,本人理解的就是,A依赖B,B是A在运行时的局部变量。

##关联 关联关系,使用实线箭头表示,但表示的是一种静态关系的依赖。 关联关系,在最终代码上是以成员变量形式存在的。与组合,聚合类似。

如上图所示,Adress是Customer的一个成员变量,它们之间就是关联关系,箭头处为成员变量。

总结下6个关系它的的区别和不同:

image.png

在绘制复杂的uml图时,可以使用plantuml插件来绘制,可以在idea中安装对应插件,新建.pu结尾的文件,在文件中输入对应的关系,即可自动生成对应的uml图:

如下示例,使用如下关键字申明相关类及接口:

  • class: 类
  • abstract class:抽象类
  • interface:接口

然后一些相关关系使用如下字符串表征:

  • ..|> :实现
  • --|>:继承
  • o--: 聚合

更多的介绍可参考: blog.csdn.net/vitaviva/ar…

@startuml

abstract class AiServices
class AiServiceContext
class DefaultAiServices

interface ChatLanguageModel
interface ChatMemory
class ToolService
interface RetrievalAugmentor
class EmbeddingStoreContentRetriever
class InMemoryEmbeddingStore


together {
class DefaultRetrievalAugmentor
interface ContentAggregator
interface ContentInjector
interface ContentRetriever
interface EmbeddingStore
interface EmbeddingModel
}

DefaultAiServices ..|> AiServices
AiServices o-- AiServiceContext
AiServiceContext o-- ChatLanguageModel
AiServiceContext o-- ChatMemory
AiServiceContext o-- RetrievalAugmentor
AiServiceContext o-- ToolService

DefaultRetrievalAugmentor ..|> RetrievalAugmentor
DefaultRetrievalAugmentor o-- ContentAggregator

DefaultRetrievalAugmentor o-- ContentInjector
DefaultRetrievalAugmentor o-- ContentRetriever

EmbeddingStoreContentRetriever ..|> ContentRetriever
InMemoryEmbeddingStore ..|> EmbeddingStore
EmbeddingStoreContentRetriever o-- EmbeddingStore
EmbeddingStoreContentRetriever o-- EmbeddingModel


@enduml

uml时序图

uml时序图,用于表示软件的调用流程,使用starUml软件绘制uml时序图特别方便,标注也很清晰。
uml类图,本人倾向于使用visio 2013绘制
uml时序图具体示例请看下图

uml时序图示例.png