UML基础——浅析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的意义
    • 架构师、项目经理:指导开发,分配任务,分析系统
    • 开发人员:理解设计,开发沟通等
    • 测试人员:组织测试,编写用例等

 

写在最后

本文中的所有图片都是通过Visio及StarUML绘制的。每种绘图软件的元素和关系构件的风格各不相同,绘制出来的UML图也有所差别,希望大家以了解为主,不要深究其差别(给自己没下载到Rational Rose来绘图找理由)。

本文是笔者在学习UML基础过程中的一部分总结,如有缺失,欢迎大家指正。

本文只是对UML统一建模语言的一个入门级别的概述,更多更详细的部分笔者将会后续通过其他博文进行叙述。有好的书籍或资料同样欢迎大家一起交流分享。

 

  • 12
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值