概念
UML(Unified Modeling Language),统一建模语言。面向对象软件开发需要经过OOA面向对象分析、OOD面向对象设计、OOP面向对象编程三个阶段,OOA对目标系统进行分析并建立分析模型,并将之文档化,OOD用面向对象的思想将OOA的结果进行细化,得出设计模型。OOA和OOD的分析、设计结果需要统一的符号的描述、交流并记录,UML就是这种用于描述、记录OOA和OOD结果的符号表示法。
UML可分为结构型和行为型,但有些划分是并不明确的,结构型的图描述的是某种结构,这种结构在某段时间内应该是稳定的,“静态”的;而行为型的图描述的是某种行为,是“动态”的。
类图
类图是最古老、功能最丰富、使用最广泛的UML图形。类图表示系统中应该包含哪些实体,各个实体之间如何关联,其显示了系统的静态结构,类图可用于表示逻辑类,逻辑类即事务种类。
类图除了实体的静态内部结构之外,还可以表示实体之间的相互关系,类之间有三种相互关系:
- 关联(包括聚合,组合):聚合用带空心菱形框的实线表示,组合用带实心菱形框的实线表示;
- 泛化(与继承同一概念):用带箭头的的实线表示;
- 依赖(如果一个类的改动会导致另一个类的改动,则存在依赖):用带箭头的虚线表示;
组件图
组件图提供系统的物理视图,用途是显示系统中的软件对其他软件组件的依赖关系;
Stock Information组件依赖于Servlet2.4 API组件;
部署图
部署图是用来描述系统如何部署、本系统与其他系统是怎样的关系的一种图;
对象图
和类图相像;
用例图:
用例图表达的是什么角色通过软件系统能做什么事情,即用于描述系统提供的系列功能,而每个用例则代表系统的一个功能模块。用例图的主要目的是帮助团队以一种可视化的方式理解系统的需求功能,用例图对系统的实现不作任何说明,仅仅是是系统的功能描述,其主要包括用例和角色;
顺序图
顺序图显示具体用例的详细流程,并且显示了不同对象之间的调用关系,其描述了对象之间的交互,重点在于消息及时间顺序;顺序图有两个维度:垂直维度以发生的时间顺序显示消息/调用的序列;水平维度显示消息被发送到的对象实例;
活动图
活动图和状态机图都称为演化图;
- 活动图:用于描述用例内部的活动或方法的流程,若除去活动图中的并行活动描述后,就变成了流程图;
- 状态机图:描述某一对象生命周期中需要关注的不同状态,并会详细描述刺激对象的状态改变的事件,以及对象状态改变时所采取的动作;
活动图主要同于描述过程原理、业务逻辑以及工作流的技术,很多情况下,活动图和流程图十分相似,区别是活动图支持并发;
如图若将其拆开,则是两个传统的流程图;
状态机图
状态机图表示某个类所处的不同状态和该类的状态装换信息,
状态机图的符号集包括5个基本元素:
- 初始状态:使用实心圆绘制;
- 状态之间的转换:使用带箭头 的线段来控制;
- 状态:使用圆角矩形来绘制;
- 判断点:使用空心圆绘制;
- 一个或多个终止点:使用内部包含实心圆的圆来绘制
参考书籍:疯狂Java讲义
绘制软件:PlantUML http://plantuml.com