UML
简介
UML: UndefiedModelingLanguage 统一建模语言。
是面向对象软件的标准化建模语言。对软件系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。
特点:简单,统一。
引言:
1)什么是模型?
模型是对现实世界的形状或状态的抽象模拟和简化。
2)为什么要建模?
为了能够更好地理解正在开发的系统。
通过建模,可以达到四个目的:
a.有助于按照需求对系统进行可视化的分析
b.能够系统的结构或行为
c.给出了知道构造系统的模板
d.对做出的决策进行文档化
网上对UML评论:
主要用在设计和分析阶段,但是 UML 不适合用来做代码生成。
使用 UML 来分析和设计,可以让大家对整个系统有个更全面的认知。
UML的7种视图
图片.png每个视图的简介:
图片.pngUML的七种视图各有各自的特点,各自有各自的作用。
只有正确的认识七种视图才能对UML的九种图进行更加详细、深入的学习。
UML的九种图是七种视图的具体表现形式。
每一种视图中都包含一个或多种图。
UML有7种视图,9种图。
UML 的 9种图
1)用例图
【概念】描述用户需求,从用户的角度描述系统的功能。
【描述方法】椭圆表示某个用例;任性符号表示角色。
【目的】帮组开发团队以一种可视化的方式理解系统的功能需求。
【用例图】
2)静态图
a.类图
【概念】显示系统的静态结构,表示不同的实体是如何相关联的。
【描述方式】三个矩形。
【目的】表示一个逻辑类或者实现类,逻辑类通常是用户的业务所涉及的事物;实现类是程序员处理的实体
【类图】
b.对象图
【概念】类图的一个实例,描述系统在具体时间点上锁包含的对象以及各个对象的关系。
【对象图】
3)交互图
用来描述对象之间的交互关系。
a.序列图(顺序图)
【概念】描述对象之间的交互顺序,着重体现对象间的消息传递的事件顺序。
【描述方式】横跨图的顶部,每个框表示每个类的实例或对象;类实例名称和类名称使用冒号分开。
【目的】显示流程中不同对象之间的调用关系,还可以显示不同对象的不同调用。
【序列图】
b.协作图
【概念】
描述对象之间的合作关系,侧重对象之间的消息传递
4)行为图
描述系统的动态模型和对象之间的交互关系
a.状态图
【概念】描述对象的所有状态以及事件发生而引起的状态之间的转移
【描述方式】
起始点:实心圆
状态之间的转换:使用开箭头的线段
状态:圆角矩形
判断点:空心圆
一个或多个终止点:内部包含实心圆的圆
【目的】表示某个类所处的不同状态以及该类在这些状态中的转换过程
b.活动图
【概念】描述满足用例要求所要进行的活动以及活动时间的约束关系
【描述方式】
起始点:实心圆
活动:圆角矩形
终止点:内部包含实心圆的圆
泳道:实际执行活动的对象
【目的】表示两个或多个对象之间在处理某个活动时的过程控制流程
【活动图】
活动图和状态图区别:
图片.png5)实现图
a.构件图(Component diagrams)
【概念】描述代码构件的物理结构以及各构件之间的依赖关系
【描述方式】构件
【目的】提供系统的物理视图,根据系统的代码构件显示系统代码的整个物理结构
【构架图】
b.部署图(Deployment diagrams)
【概念】系统中硬件的物理体系结构
【描述方式】
三维立方体表示部件
节点名称位于立方体上部
【目的】显示系统的硬件和软件的物理结构
【部署图】
九种UML图详解到此为止。
用例图详解
九种图中,用例图使用的最广泛。
1)概念
用例图是由参与者、用例以及它们之间的关系构成的用于描述系统功能的动态视图。
用例是系统中的一个功能单元,描述一个系统做什么(what)的信息,并不是怎么(how)做。用例图的作用是描述参与者和用例的关系,表示系统的用户使用了系统中的哪些用例。
2)组成
用例图组成的概念,我们通过一张图学习:
图片.png我们重点讲解用例组成中用例之间的关联。
a.包含
【表示方式】
虚线箭头 + 《 include》
;箭头由基础用例指向被包含用例
【作用】
提高用例模型的可维护性;简化描述避免多个用例中重复描述同一段行为或对同一段行为描述不一致。
【包含图】
b.扩展
【表示方式】虚线箭头 + 《extend》
;箭头指向基础用例
【作用】一定条件下,扩展用例为基础用例增加新的行为
【扩展图】
c.泛化
【表示方式】实线空三角箭头;箭头指向父用例
【作用】子用例继承父用例所有的结构、行为和关系,是父用例的一种特殊形式
【泛化图】
扩展关系和包含关系的比较:
1、扩展关系:基础用例提供一个或多个插入点,扩展用例为插入点提供需要插入的行为
包含关系中只有一个插入点
2、扩展关系:基础用例执行,扩展不一定执行
包含关系:基础用例执行,包含用例必须执行
3、扩展关系:即使没有扩展用例,基础用例本身是完整的
包含关系:没有包含用例,基础用例本身不完整
为大家简单的举一个机房收费系统的小例子: