uml
UML分静态图和动态图两种,其中常用的静态图5种,动态图4种。
常用的静态图:用例图、类图、包图、对象图、部署图
常用的动态图:顺序图,通信图(UML1.x 时称为协作图),状态机图,活动图
用例图
用例图是编写需求说明时经常用到的需求表达方式,用于向开发、测试同事说明需求中用户与系统功能单元之间的关系。
用例图的三大组成元素:参与者、用例、参与者与用例之间的关系。
参与者与用例之间的关系(4种):关联、归纳(泛化)、包含、拓展和依赖。
此前回答过相关问题,这里不作赘述,有需要的小伙伴可以移步查看▼
类图
用于描述系统中所包含的类以及它们之间的相互关系。
类图的两个重要元素:类,以及类之间的关系。
类的关系(6种):依赖关系、继承/泛化关系、实线关系、关联关系、聚合关系、组合关系
此前对类图做过详细拆解,这里不作赘述,有需要的小伙伴可以移步查看▼
对象图
用于描述某一时刻的一组对象及它们之间的关系。
对象图的组成元素:对象、链。
此前对对象图做过详细拆解,这里不作赘述,有需要的小伙伴可以移步查看▼
对象图经常被拿来和类图做比较。对象图可以视作类图的实例,用来表达各个对象在某一时刻的状态。两者更多的联系和差别,可以查看此前的文章▼
包图
包图通常用于描述系统的逻辑架构——层、子系统、包等。层可以建模为UML包。UML包用一大一小两个矩形组合而成。如果内部显示了其成员,则包名称标在上面的小矩形内,否则可以标在包内。
包拥有的元素:类、接口、组件、节点、协作、用例、图以及其他包。包的可见性用来控制包外界的元素对包内元素的可访问权限。这种可见性它分为3种,即公有访问、保护访问和私有访问。
包之间可以有两种关系:依赖、泛化。
部署图
部署图是用来显示系统中软件和硬件的物理架构。使用部署图不仅可以显示运行时系统的结构,还能够传达构成应用程序的硬件和软件元素的配置和部署方式。
部署图的组成元素:结点、构件(因此部署图也经常和构件图一起使用)、接口、连接。
顺序图
顺序图,又名序列图、时序图。用于描述对象之间的传递消息的时间顺序(包括发送消息、接收消息、处理消息、返回消息等)。
顺序图的组成元素:对象、生命线、消息,其中消息又分为同步消息、异步消息、返回消息、自关联消息。
此前对顺序图做过详细拆解,这里不作赘述,有需要的小伙伴可以移步查看▼
关于流程图(换成活动图来理解也是没问题的)、顺序图、状态图的差别,感兴趣的小伙伴也可以查看▼
通信图/协作图
通信图描述的是对象和对象之间的调用关系,体现的是一种组织关系。
通信图组成元素:对象、链接、消息。
通信图和时序图有点类似。但时序图着重于时间顺序,而通信图则关注的是对象之间的组织关系,通信图中的时间顺序可以从消息序号中获得。在语义上这两个图是等价的可以互相转换而不会丢失信息。
状态机图
状态机图描述一个对象在其生命周期中的各种状态以及状态的转换。
状态机主要由状态、转换、事件、动作、活动5部分组成。
顺序图、通信图:描述多个对象间的交互。
状态机图:描述单个对象的状态及引起状态变化的原因。
用一个简化的图来表示三者的差别就是:
活动图
活动图描述活动的顺序,展现从一个活动到另一个活动的控制流,它本质上是一种流程图。
组成元素:起点、终点、活动名称、判断条件、分支与合并、接收信号、发送信号、泳道(其实和流程图很相像)
泛化
子类继承父类,关系用extend关键字标识;
关联
可以说是一种属于关系,图中即说的是PhoneNumber类属于Master类,同时,除了一对一的关系之外,还可以用一对多、多对一、多对多的关联关系,除了单向关联之外,双向关联也是存在的;
需要注意的是,在关联关系里面,还有着两种特殊的关系:聚合和组合
聚合
--体现出来的是整体与部分的关系,是一种“弱拥有”关系,部分能够脱离整体而单独存在
如上图所示,轮胎能够脱离汽车而单独存在;
组合
体现出来的是一种包含的关系,关系比聚合更强,是一种“强聚合”的关系,部分不能离开整体而单独存在
部门不能脱离掉公司而单独存在;
依赖
指一个类依赖于另一个类而存在;
上图就是指的是Person类依赖于Air类,即Person类的存在使用了Air类;
实现
一个class类实现一个interface接口;
用implements关键字标识;