『软件工程13』浅谈面向对象方法,统一建模语言UML

简介: 该文章介绍了面向对象方法的基本概念及其在软件工程中的应用,并详细探讨了统一建模语言(UML)的各种图示及其在系统设计中的作用。

在下面的这篇文章中,将讲解我们平常常用的一种面向对象的画图方法,即统一建模语言UML(Unified Modeling Language)。

接下来开始进行讲解。

一、UML的含义

  • 标准的建模语言(具有语言的规范)
  • 促进沟通(各种图示表达规范)
  • 支持系统构建(正向工程,反向工程)

二、UML的主要内容

1、UML的概念模型

UML具有一个完整的概念模型,提供了一套完整、全面的表达方法,其主要元素包括:①UML的基本构造块支配这些构造块如何放在一起的规则一些运用于整个UML的公共机制

2、UML概念模型图例

UML概念模型 $ \begin{cases} 基本构造块\begin{cases} 事物:结构事物、行为事物、分组事物、注释事物 \\ 关系:依赖、关联、泛化、实现 \\ 图:用例图、类图、对象图、包图、交互图等 \end{cases} \\ 规则 \\ 公共机制\begin{cases} 规格说明 \\ 修饰 \\ 通用划分 \\扩展机制 \end{cases} \end{cases} ​​$

下面依据概念模型中的这三大类进行一一讲解。

三、UML的基本构造块

在UML中可以将词汇划分为3中构造块,即3类词汇或基本元素:事物、关系和图。

1、UML中的事物

(1)UML中的四种事物

事物是对模型中最具有代表性的成分的抽象,可分为结构事物行为事物分组事物注释事物

1)结构事物

通常是模型的静态部分,描述概念的物理元素。主要有以下五种结构事物:

  • (class) :与面向对象方法中类的概念一致。
  • 接口 (interface) :描述了一个类或构件的一个服务的操作集。
  • 用例 (use case) :代表了一个系统功能,是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者(即系统用户)有价值而且可观察的结果。
  • 构件 (component) :描述的是系统中的软件物理事物。
  • 节点 (node) :是在运行时存在的物理元素,表示了一种可计算的资源。

2)行为事物

行为事物主要有:状态、交互。

3)分组事物

分组事物主要有:包。

4)注释事物

注释事物主要有:注解。

(2)UML中各种事物的图示法

依据上面对四种事物的描述,下面给出UML中各种事物的图示。

UML中各种事物的图示法

2、UML中的四种关系

UML中的四种关系是:依赖、关联、泛化、实现。

(1)依赖

两个模型元素中,有一个是独立的,一个是非独立的,独立的模型元素发生改变,会影响非独立的模型元素

用带箭头的虚线来表示依赖关系。

如图所示:

依赖关系

(2)关联

关联是一种结构化的关系,指两个模型元素有联系。双向关联用一条实线来表示。

注意:关联关系有多重度,主要有: 010..10..*1..*

如图所示:

关联关系

值得注意的是,关联中有两种特殊的关联关系:组合和聚合

如果是组合和聚合类型,则再加一个棱形符号

如下图所示:

组合
聚合

(3)泛化

一般特殊的关系,也就是继承的关系。用实线加空心三角号来表示。

如图所示:

泛化关系

(4)实现

实现关系是,一种模型元素保证另外一种模型元素的执行,该关系主要用在接口中。用一条实线来表示。

如图所示:

实现关系

讲到这里,以下再给出一张完整的图来回顾这四种关系。

四种关系

3、UML中的图形(五大类十种图)

(1)用例图

1)用例图的定义

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

用例图显示若干角色执行者 (actor) 以及这些角色与系统提供的用例之间的连接关系。用例图定义的是系统的功能需求

2)用例图的基本构成

  • 用例;
  • 角色;
  • 角色之间的关系(如果有,主要是泛化);
  • 角色和用例之间的关系(单向关联或双向关联);
  • 用例和用例之间的关系(包含、扩展、泛化)。

3)元素与元素之间的关系

include:

  • include(包含关系),当两个或多个用例中共用一组相同的动作,可以将其抽出来作为一个独立的子用例,供多个基用例所共享。
  • 基用例并非一个完整的用例,所以必须和子用例一起使用才够完整。
  • include关系在用例图中使用带箭头的虚线表示(在线上标注 <<include>> ),箭头从基用例指向子用例

extend:

  • extend(扩展关系),对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。
  • extend的基用例中将存在一个扩展点,只有当扩展点被激活时,子用例才会被执行。
  • extend关系在用例图中使用带箭头的虚线表示(在线上标注 <<extend>> ),箭头从子用例指向基用例

子用例和基用例的关系:

(泛化关系)子用例将继承父用例的所有结构、行为和关系。也就是说在任何使用基用例的地方都可以用子用例来代替。

(泛化关系)在用例图中使用空心的箭头表示,箭头方向从子用例指向基用例

4)图示

用例图

(2)静态图:类图、对象图、包图

1)类图

①定义: 类图(class diagram)描述系统所有涉及到的类以及类和类之间的关系。

②类图的基本构成:

  • 类(类名、属性和方法);
  • 类和类之间的关系(依赖、关联、泛化、实现)。

2)对象图

①定义: 对象图是类图的实例,几乎使用与类图完全相同的标识,但两者之间又有一定的差别,如下图例所示。

②图例:

对象图

(3)行为图:状态图、活动图

1)状态图

①定义: 状态图(state chart diagram)描述系统涉及到的某个对象的所有状态以及状态和状态之间转换的事件。

②状态图的基本构成:

  • 状态(圆角矩形);
  • 状态的起点、终点;
  • 状态之间转换的事件;
  • 注解(有时会有)。

③图例:

状态图

2)活动图

①定义: 活动图(activity diagram)描述满足用例功能需求所要进行的活动以及活动间的约束关系。

②活动图的基本构成:

  • 活动(注意符号与状态不同);
  • 活动的起点、终点(终点有时有多个);
  • 活动之间用箭头连接;
  • 判定(有时会有,棱型框);
  • 同步条(表示活动的分叉或汇合,包括水平、垂直两种);
  • 泳道(表示活动的不同职责)。

③图例:

活动图

(4)交互图:顺序图、协作图

1)顺序图

①定义: 顺序图显示对象之间的动态合作关系。。

②顺序图的基本构成:

  • 对象;
  • 生命线(对象正下方的虚线,表示对象在一段时期内的存在) ;
  • 窄矩形条(表示对象被激活,说明对象正在执行某种操作);
  • 交互的消息(有顺序之分,消息其实就是接收对象的操作方法);
  • 注解(有时会有);
  • 可以转换成协作图。

③图例:

顺序图

2)协作图

①定义: 协作图(callobaration diagram)和顺序图的作用一样,反映的也是动态协作

②协作图的基本构成:

  • 对象;
  • 实线(对象之间的连接线,注意没有箭头) ;
  • 交互的消息(有顺序之分,消息其实就是接收对象的操作方法);
  • 注解(有时会有);
  • 可以转换成顺序图。

③图例:

协作图

(5)实现图:构建图、部署图

1)构件图

**①定义:**描述代码构件的物理结构以及各构件之间的依赖关系。

②构件图的基本构成: 构件。

③图例:

构件图

2)部署图

①定义: 系统中硬件的物理体系结构。

②部署图的基本构成:

  • 三维立方体表示部件;
  • 节点名称位于立方体上部。

③图例:

部署图

四、写在最后

到这里,关于软件工程的体系知识就讲解结束啦!后面将会继续更新一些实践的内容。敬请期待!

🙋🙋🙋

同时,有不理解或有误的地方也欢迎评论区评论或私信我交流~

  • 关注公众号 星期一研究室 ,不定期分享学习干货,学习路上不迷路~
  • 如果这篇文章对你有用,记得点个赞加个关注再走哦~
相关文章
|
10天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
6天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2506 14
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
6天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1519 14
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
8天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
530 13
|
1月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19282 30
|
1月前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
18836 20
|
1月前
|
Rust Apache 对象存储
Apache Paimon V0.9最新进展
Apache Paimon V0.9 版本即将发布,此版本带来了多项新特性并解决了关键挑战。Paimon自2022年从Flink社区诞生以来迅速成长,已成为Apache顶级项目,并广泛应用于阿里集团内外的多家企业。
17524 13
Apache Paimon V0.9最新进展
|
8天前
|
人工智能 自动驾驶 机器人
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超级app,而是接管数字世界,改变物理世界。
457 48
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
|
1天前
|
云安全 存储 运维
叮咚!您有一份六大必做安全操作清单,请查收
云安全态势管理(CSPM)开启免费试用
353 4
叮咚!您有一份六大必做安全操作清单,请查收
|
2天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。