一文读懂 UML 建模:概念、图形与应用实例

目录

一文读懂 UML 建模:概念、图形与应用实例

UML 建模概述

UML 中的关系

UML 主要视图

UML 各类图详解

类图

用例图

顺序图

活动图

状态图

通信图

构件图


在软件开发的世界里,UML 建模就像是建筑师手中的蓝图,帮助开发者清晰地规划和理解软件系统的结构与行为。今天,我们就来深入探讨 UML 建模,揭开它神秘的面纱。

UML 建模概述

UML,即统一建模语言(Unified Modeling Language),是面向对象软件的标准化建模语言。它由三个要素构成:基本构造块、规则和公共机制。UML 的词汇表包含事物、关系和图这三种构造块。事物是模型中具有代表性成分的抽象,比如类、接口等;关系用于把事物结合在一起,像依赖、关联等;图则聚集了相关事物,不同类型的图从不同角度展示系统。

UML 中的事物又分为结构事物、行为事物、分组事物和注释事物。以 Java 语言为例,结构事物中的类和接口,在 Java 编程中随处可见。定义一个 “动物” 类,它有 “奔跑”“进食” 等行为,这就体现了结构事物和行为事物。分组事物如包,能将相关的类组织在一起,便于管理,就像 Java 中不同功能的类会放在不同包下。注释事物用于解释说明模型元素,在代码中添加注释帮助理解代码含义。

UML 中的关系

UML 中有依赖、关联、泛化和实现这四种主要关系。依赖关系指一个事物变化会影响另一个事物,在 Java 中,一个类的方法使用了另一个类的对象作为参数,就是一种依赖关系。关联关系描述对象之间的连接,例如学生和课程之间的选课关系。聚合和组合是特殊的关联关系,聚合表示整体与部分的关系,部分可以脱离整体存在,如班级和学生;组合则是更强的聚合,部分不能脱离整体独立存在,像人体和心脏。泛化是特殊与一般的关系,子类可以替代父类,如 “猫” 类继承 “动物” 类,猫就具有动物的一些共性。实现关系主要用于描述接口和实现接口的类之间的关系,在 Java 中,一个类实现某个接口,必须实现接口中定义的方法。

UML 主要视图

UML 主要有结构视图和动态视图。结构视图展现系统的静态结构,包括类图等;动态视图展示系统的动态行为,像顺序图、活动图等。这些视图从不同方面帮助开发者理解系统,在设计一个电商系统时,结构视图能展示系统中各个类的结构和关系,如商品类、用户类等;动态视图则可以呈现用户购买商品的流程等动态行为。

UML 各类图详解

类图

类图是 UML 中最常见的图,展现了对象、接口、协作及其之间的关系,给出系统的静态设计类视图。在一个图书管理系统中,有 “图书” 类、“借阅记录” 类、“用户” 类等。“图书” 类有书名、作者等属性,以及 “借阅”“归还” 等方法。类图的考察方式主要有填类名、方法名、属性名,填多重度,填关系这三种。比如,“借阅记录” 类和 “图书” 类之间的多重度关系,可能是一个借阅记录对应一本图书,用 “1” 表示;也可能一个借阅记录对应零本或多本图书(比如批量借阅时),用 “0..*” 表示。在关系考察中,“图书” 类和 “计算机图书” 类是泛化关系,因为 “计算机图书” 是 “图书” 的一种特殊类型;“借阅记录列表” 和 “借阅记录” 是聚合关系,因为借阅记录列表由多个借阅记录组成。

用例图

用例图展现了用例、参与者以及它们之间的关系,关键在于有参与者,通常用小人表示。还是以图书管理系统为例,参与者可能有图书管理员、读者。用例有 “查询图书信息”“借阅图书”“归还图书” 等。用例之间存在扩展关系和包含关系,比如 “查询图书信息” 和 “借阅图书” 之间可能存在扩展关系,读者查询图书信息后,如果图书有库存,可能会进行借阅操作;“登记借阅信息” 和 “借阅图书” 是包含关系,借阅图书时必然要登记借阅信息。在考察时,可能会给出一段文字描述,让你判断用例之间的关系,这就需要牢记扩展(extend)和包含(include)的英文单词,因为答题时单词拼写错误是没分的。

顺序图

顺序图是强调消息时间序列的交互图,用于对系统的动态方面进行建模。在一个在线支付系统中,顺序图可以展示用户发起支付请求,系统验证用户信息,调用支付接口,支付成功后返回结果的过程。顺序图的执行流程是从上到下的,考察时通常会挖空消息内容,给出一段文字描述系统流程,要求你根据描述找出代表消息的名词,并对应到相应步骤。比如,在支付流程中,可能会挖空 “调用支付接口” 这一步的消息内容,你需要从文字描述中提取出相关信息进行填空。

活动图

活动图是特殊的状态图,展现系统内活动到另一个活动的过程,属于动态视图,对系统功能建模很重要,强调对象间的控制流程。在电商系统的订单处理流程中,活动图可以展示用户下订单后,根据不同情况进行分支处理,如用户选择支付方式、订单取消、支付成功后发货等过程。活动图一般包括活动状态、动作状态、转换和对象这几个部分,在对系统动态方面建模时,可以用于对工作流程或操作进行建模。

状态图

状态图由状态、转换、事件和活动组成,关注系统的动态视图,对接口、类协作的行为建模尤为重要,强调对象行为的事件顺序。以电梯控制系统为例,电梯有 “上升”“下降”“停止” 等状态,当接收到 “楼层请求” 事件时,会发生状态转换,从 “停止” 状态转换为 “上升” 或 “下降” 状态。状态图的特点很明显,有状态、触发事件和动作等元素,出现相关图形时很容易判断。

通信图

通信图强调收发消息的对象的组织结构,有路径和序号两大特点。在一个聊天系统中,通信图可以展示不同用户之间发送和接收消息的过程,将用户作为图的顶点,消息传递路径作为弧,用消息来修饰这些链,从而清晰地展示对象之间的交互关系。通过通信图,能在协助对象的组织结构语境中观察控制流的可视化轨迹。

构件图

构件图展示了一组构件之间的组织和依赖关系,专注于静态实现视图,通常会把构件映射为多个类、接口或协作。在一个大型软件项目中,可能有数据库访问构件、业务逻辑处理构件、界面展示构件等,构件图可以展示它们之间的依赖关系,比如界面展示构件依赖业务逻辑处理构件提供数据。在考察时,可能会让你根据构件图填写相关类,只要能识别出构件图并理清关系,这类题目并不难。

UML 建模在软件开发中起着至关重要的作用,不同类型的图从不同角度为开发者提供了系统的全面视图。希望通过这篇博客,大家能对 UML 建模有更深入的理解,在软件开发过程中更好地运用它。如果在学习过程中有任何疑问,欢迎在评论区留言交流。

你可能感兴趣的:(软考,软考)