UML图学习笔记

电子说

1.3w人已加入

描述

标准建模语言UML可以由下列5类图来定义。

用例图 :从用户角度描述系统功能,并指出各功能的操作者。

静态图 :包括类图和对象图。类图描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系,如关联、依赖、聚合等,也包括类的属性和操作,类图描述的是一种静态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全相同的标识。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。

行为图 :描述系统的动态模型和组成对象间的交互关系,包括状态图和活动图。状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件,状态图是对类图的补充,活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并进行活动。

交互图 :描述对象间的交互关系,包括时序图和协作图。时序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;协作图描述对象间的协作关系,协作图跟时序图相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用时序图;如果强调上下级关系,则选择协作图。

实现图 :包括组件图和部署图。组件图描述代码部件的物理结构及各部件之间的依赖关系,组件图有助于分析和理解部件之间的相互影响程度;部署图定义系统中软硬件的物理体系结构。

采用UML来设计系统时,第一步是描述需求;第二步根据需求建立系统的静态模型,以构造系统的结构;第三步是描述系统的行为。其中在第一步与第二步中所建立的模型都是静态的,包括用例图、类图、对象图、组件图和部署图等5种图形,是标准建模语言UML的静态建模机制。其中第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、时序图和协作图等4种图形,是标准建模语言UML的动态建模机制。

首先对UML中的各个图的功用做一个简单介绍:

1、用例图

描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。

2、类图

类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。

3、对象图

与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。

4、活动图

描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。

5、状态图

描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。

6、序列图(顺序图)

序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。

7、协作图

和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。

8、构件图 (组件图)

描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。

9、部署图 (配置图)

是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。

UML中的四种关系

建模

实列

第一节:初步认识UML

1.UML中的元素

用例、类、接口、组件等

2.UML中的四种关系

关联、依赖、继承、实现

3.UML中的九种图

用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、配置图UML学习

Unified Modeling Language(UML),又称统一建模语言

支持模型化和软件系统开发的图形化语言

描述软件开发的各个阶段

进一步认识UML

UML是为面向对象开发提供建模的

一般是为软件设计提供开发说明的

UML的目的是为了用简洁的方式说明系统的需求、功能、结构。便于开发人员、用户、维护人员了解软件系统

UML构建出的是一个模型。就像一座建筑的框架和功能、以及如何去盖这座楼。(设计图?)

UML是一种语言,具有一些标准。(Rational Rose、EA等专业工具绘制)

UML的核心就是抽象、分解。将问题分解,抽象为一个个小模块。然后分而治之。

第二节:UML中的常用元素

类:相同属性对象的集合

接口:类或组件提供的,可以完成特定功能的一组操作的集合

用例:系统的一个功能

(用例通常与某个角色相互关联,代表该角色使用此功能)

节点:一个状态或一个动作

(如下图的状态节点以及判定节点等)

组件:可替换的功能块

辅助事物:包

注释

行为事物:四种关系(依赖、关联、继承、实现)的交互

第三节:UML四种关系——依赖

UML中的四种关系

依赖关系(Dependency)

表示一个类使用(Use)另一个类,是四种关系中最弱的一种关系

依赖关系是单向的(不推荐双向依赖)

例如动物依赖水

具体的实现代码有三种形式

(注:被依赖的类作为局部变量而不能作为成员变量,否则转化为关联关系)

Water是公共的类,Animal可以调用

Water是Animal的一个方法中的变量

Water是Animal函数的参数或者返回值

水类

动物类

第四节:UML四种关系——关联

关联关系(Association)

表示一个类拥有(has)另一个类,关联相对于依赖来说大大增强

分为聚合和组合,例如雁群和大雁(聚合,较弱),大雁和翅膀(组合,较强)

关联关系比依赖关系更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以单向、双向的

具体代码表现为被关联类作为一个全局变量或属性

翅膀类

大雁类(翅膀与大雁间存在组合关系)

雁群类(大雁与雁群间存在聚合关系)

第五节:UML四种关系——泛化

泛化关系(Generalization)

是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力

继承是类与类或者接口与接口之间最常见的关系

是一种父子关系,两个类之间的关系非常强

例如鲨鱼继承鱼,麻雀继承鸟

代码上表现为继承,在java中使用extends关键字

鱼类

鲨鱼类(通过extends关键字继承Fish类)

数据库访问对象基类

具体数据库访问对象类(继承DaoBase)

父接口

子接口(继承父接口。可以通过接口实现多继承)

第六节:UML四种关系——实现

实现关系(Realization)

是一个class类实现interface接口(可以是多个)的功能(是类与接口的关系)

是一种最常见的关系,设计时鼓励使用

接口是一种功能的抽象。例如有两个接口:飞翔、捕食。一个鸟(class)类可以实现这两个接口,实现以后,就具有这两个接口所拥有的功能

在java代码中使用关键字implements表示

飞翔接口

捕食接口

Bird类(继承Fly接口及Prey接口,并实现其方法)

第七节:UML中的九种图——用例图

用例图实现关系(Use Case Diagram)

作用是帮助开发团队以一种可视化的方式理解系统的功能需求,捕捉系统的需求,是需求分析阶段必备的工具

用例:指一个系统的功能单元

用例图由用例和角色两部分构成,主要用来描述“用户、需求、系统功能单元”之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。

建模

如何使用用例图做需求分析

确定系统的参与者,也就是业务主角

分析参与者都能通过系统做什么

将参与者所做的事情,通过用例图体现出来

以一个图书馆管理系统为例,基于用例图做一个需求分析

图书管理系统举例

图书管理员可以管理读者信息、管理图书的基本信息;还可以查询某位读者的信息、某本图书的借阅情况

读者可以通过该系统借书、还书、查询书籍信息、预定图书等

建模

用例图的特点

用例是相对独立完整的,一个用例一般不需要其他用例来完成和它进行交互。但是有时候为了体现功能之间的联系,用例之间也会存在两种关系(扩展:extend,包含:include)

用例图中的包含关系(图书信息管理模块包含图书添加和图书删除两个模块)

用例图中的扩展关系(查询完图书信息后还可以进行图书信息导出)

用例的执行结果对于参与者来说是可见的,有意义的

一个用例必须是由一个参与者发起的,不存在没有角色的用例,用例也不该自动启动

用例一定是动宾短语(谁(角色)+做什么(用例))

一个用例是一个需求单元、分析单元、设计单元、开发单元、测试单元

第八节:UML中的九种图——类图

类图(Class Diagram)

体现类的属性和方法以及类与其他类之间的关系的图

类与类之间的关系:依赖、关联、继承、实现

类图的作用:是对代码的直接体现

如何在实际中使用类图分析系统

图书管理系统举例

图书管理员可以管理读者信息、管理图书的基本信息;还可以查询某位读者的信息、某本图书的借阅情况

读者可以通过该系统借书、还书、查询书籍信息、预定图书等

建模

第九节:UML中的九种图——对象图

对象图(Object Diagram)

表示某一时刻一组对象以及它们之间关系的图。对象图可以看作是类图在系统某一时刻的实例(相当于系统的运行的一个切片或镜像)

作用

论证类模型的设计:当设计了类模型时,你可以通过对象图来模拟出一个运行时的状态,这样就可以研究在运行时设计的合理性。同时,也可以作为开发人员讨论的一个基础。

分析和说明源代码:由于类图只是展示了程序的静态类结构,因此通过类图看懂代码的意图是很困难的。因此在分析源代码时,可以通过对象图来细化分析。而对于开发人员,对于逻辑较复杂的类交互时,可以考虑画出一些对象图来做补充说明。

建模

阅读对象图

首先找出所有的类,即在“:”之后的名称

整理完之后,就可以通过对象的名字来了解其含义

按类来归纳属性,然后再通过关联来确定含义

第十节:UML中的九种图——状态图

状态图(Statechart Diagram)

描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action)

状态图的元素

States:对象的生命周期中某个条件或者状况

Transitions:是两个状态之间的一种关系

Event:引起状态转移的事件

Actions:是状态变化过程中执行的操作

作用是帮助开发者梳理一个业务中核心对象的发展状况

某电商订单系统状态图

建模

第十一节:UML中的九种图——时序图(序列图)

时序图(Sequence Diagram)

描述对象之间交互的时间顺序,也叫序列图

时序图的作用:从时间(方法执行先后)角度,描述一个角色额完成一个功能所涉及的对象,调用的所有方法,以及方法调用的顺序,甚至方法调用的细节(方法名,参数,返回值等)

时序图的元素:角色(Actor),对象(Object),生命线(Lifeline),激活期(Activation),消息(Message)

简单时序图(只突出大致流程)

建模

标准时序图(包含类信息,调用方法的方法名、参数类型、返回值等。可用于指导开发)

建模

第十二节:UML中的九种图——协作图

协作图(Collaboration Diagram)

表示在实现一个功能的过程中,一组对象以及这些对象间的消息传递

它和时序图是对应的,时序图侧重于时间顺序,协作图侧重于与对象之间的关系

协作图的作用:显示对象及其交互关系的空间组织结构,而非交互的顺序

时序图的三要素:

角色:功能的发起者

对象:类的实例

消息流:一个对象向另一个对象发起的操作

建模

第十三节:UML中的九种图——活动图

活动图(Activity Diagram)

活动图是描述系统在执行某一用例时的具体步骤,它主要表现的是系统的动作。

活动图的作用

从活动图中可以看出,系统是如何一步一步的完成用例的,主要用于业务建模阶段

活动图描述的是整个系统的事情。可以说活动图是对用例图的一种细化,帮助开发者理解业务领域

活动图的元素:活动节点(Activity),转移(Transition),判断节点(Decision),泳道(Swimlane)

和状态图的区别,状态图描绘一个对象的状态,重点描述结果,活动图描述状态转换的过程或者说原因

建模

第十四节:UML中的九种图——组件图

组件图(Component Diagram)

组件图是用来反映代码的物理结构。从组件图中,可以了解各软件组件(如源代码文件或动态链接库)之间的依赖关系

组件图的主要作用

显示系统组件间的结构关系

提供了将要建立的系统的高层次的架构视图,这将帮助项目管理者建立阶段目标,并决定开发的任务分配

组件图的核心元素:组件(Component),依赖关系(Dependency)

建模

第十五节:UML中的九种图——配置图(部署图)

配置图(Deployment Diagram)

配置图描述的是系统运行时的结构,展现了硬件的配置以及软件部署到网络结构中的方式

配置图也称部署图

一个系统模型只有一个部署图,通常用来帮助理解分布式系统

部署图的元素

处理器(Processor):能够执行软件、具有计算能力的节点、服务器、工作站

设备(Device):硬件设备,如打印机、路由器等

配置图和组件图的区别:配置图有硬件,以一个服务器为单位;组件图全是软件结构,以一个程序模块为单位

建模

第十六节:UML总体使用总结1

UML四种关系和九种图的作用

关联,依赖,继承,实现

用例图(系统的功能),类图(类及类间关系),对象图(类的对象在某时刻的关联关系),状态图(类的对象在整个生命周期的状态),时序图(功能按时间的执行顺序),协作图(功能的空间联系),活动图(描述功能的动作步骤),组件图(系统的软件结构),配置图(部署结构)

UML九种图的使用场景

做什么(用例图),做成什么样的(类图或对象图、状态图),怎么做(时序图、协作图),怎么用(组件图、配置图)

UML九种图分类

1.用例图:从用户角度描述系统功能,并指出各功能的操作者

2.静态图(Static Diagram):包括类图、对象图

3.行为图:描述系统动态模型和对象的组成的交互关系(状态图和活动图)

4.交互图:描述对象之间的交互关系(时序图,协作图)

5.实现图:配置图

第十七节:UML总体使用总结2

UML在设计过程中的使用

可行性分析、需求分析阶段(用例图)

概要设计(类图,组件图(架构图),对象图,活动图,状态图)

详细设计(时序图,协作图,也可以有状态图,对象图等)

学习UML的意义

架构师、项目经理:指导开发,分配任务,分析系统

开发人员:理解设计,开发沟通等

测试人员:组织测试,编写用例等

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分