当前位置: 首页 > news >正文

系统架构20 - 统一建模语言UML(上)

统一建模语言

  • 组成要素
    • 事物
    • 关系

在目前的软件开发方法中,面向对象的方法占据着主导地位。面向对象方法的主导地位也决定着软件开发过程模型化技术的发展,面向对象的建模技术方法也就成为主导的方法。
公认的面向对象建模语言出现于20世纪70年代中期。从1989年到1994年,其数量从不到10种增加到了50多种。
面对众多的建模语言,用户由于没有能力区别不同语言之间的差别,因此很难找到一种比较适合其应用特点的语言;其次,众多的建模语言实际上各有千秋,极大地妨碍了用户之间的交流。
因此,在客观上有必要在精心比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言工作,之后先后推出了 UML的多个版本。UML 的发展历史如下图
在这里插入图片描述
它的作用不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。UML 成为“标准”建模语言的原因之一在于与程序设计语言无关。而且, UML 符号集只是一种语言而不是一种方法学,不需要任何正式的工作产品。因为语言与方法学不同,它可以在不做任何更改的情况下很容易地适应任何公司的业务运作方式

组成要素

UML 由三个要素构成: UML 的基本构造块(事物、关系)、(支配基本构造块如何放置在一起的规则)和运用于整个语言的公用机制

事物

UML 中有4种事物:结构事物、行为事物、分组事物和注释事物。
(1)结构事物。
结构事物是UML模型中的名词。它们通常是模型的静态部分,描述概念或物理元素。结构事物包括类 (Class)、 接口 (Interface)、 协 作 (Collaboration)、 用 例 (UseCase)、 主动类 (Active Class)、 构件 (Component)、 制 品 (Artifact) 和结点 (Node)。
结构事物的图形表示
(2)行为事物。
行为事物是 UML 模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为。行为事物包括交互 (Interaction)、 状态机 (State Machine) 和活动 (Activity)。
行为事物的图形表示
状态机描述了一个对象或一个交互在生命期内响应事件所经历的状态序列。
活动是描述计算机过程执行的步骤序列,注重步骤之间的流而不关心哪个对象执行哪个步骤。
交互、状态机和活动是可以包含在UML 模型中的基本行为事物。
(3)分组事物。
分组事物是UML模型的组织部分,是一些由模型分解成的“盒子”。在所有的分组事物中,最主要的分组事物是包 (Package)。 包是把元素组织成组的机制,这种机制具有多种用途。结构事物、行为事物甚至其他分组事物都可以放进包内。包与构件(仅在运行时存在)不同,它纯粹是概念上的,即它仅在开发时存在。包的图形化表示如图
在这里插入图片描述
(4)注释事物。
注释事物是 UML模型的解释部分。这些注释事物用来描述、说明和标注模型的任何元素。注解 (Note) 是一种主要的注释事物。注解是一个依附于一个元素或者一组元素之上,对它进行约束或解释的简单符号。注解的图形化表示如图。
在这里插入图片描述

关系

UML中有4种关系:依赖、关联、泛化和实现。
(1)依赖。
依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。在图形上,把一个依赖画成一条可能有方向的虚线。
依赖
(2)关联。
关联是一种结构关系,它描述了一组链,链是对象之间的连接。聚集是一种特殊类型的关联,它描述了整体和部分间的结构关系。在关联上可以标注重复度和角色。
(3)泛化。
泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。在图形上,把一个泛化关系画成一条带有空心箭头的实线,它指向父元素
(4)实现。
实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。在两种情况下会使用实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间。在图形上,把一个实现关系画成一条带有空心箭头的虚线

http://www.lryc.cn/news/293841.html

相关文章:

  • 数据库学习笔记2024/2/4
  • Apache POI 处理excel文件 记录用法
  • Transformer实战-系列教程2:Transformer算法解读2
  • python_蓝桥杯刷题记录_笔记_全AC代码_入门3
  • STM32 IIC电量计LTC2944
  • Linux 链接 GitHub 出现 Connection timed out
  • vulnhub靶场之Thales
  • Qt之使用Qt内置图标
  • 《计算机网络简易速速上手小册》第10章:未来网络技术趋势(2024 最新版)
  • Vue引入Axios
  • 【git 本地管理版本及与github合并】 Init Push Pull操作解决方案
  • JavaSE-项目小结-IP归属地查询(本地IP地址库)
  • 使用最大边界相关算法处理文章自动摘要
  • ref和reactive, toRefs的使用
  • 从源代码看Chrome 版本号
  • Vue 图片加载失败处理
  • Quartus IP学习之ISSP(In-System Sources Probes)
  • Vue组件通信讲解[父子组件通信]
  • Qt应用开发(安卓篇)——调用ioctl、socket等C函数
  • centos 安装docker CE
  • 某赛通电子文档安全管理系统 UploadFileList 任意文件读取漏洞复现
  • Kafka运维相关知识
  • 鸿蒙Native项目生产动态库(.so) 和静态库(.a)
  • B站课程评分
  • 【C++】拷贝构造函数和赋值运算符重载详解
  • BUUCTF-Real-[ThinkPHP]5-Rce
  • 物联网中基于WIFI的室内温度检测系统设计
  • 驱动开发-系统移植
  • MySQL数据存储
  • 带着问题读源码——Spring MVC是怎么找到接口实现类的?