『软件工程13』浅谈面向对象方法,统一建模语言UML
浅谈面向对象方法UML
- 一、UML的含义
- 二、UML的主要内容
- 1、UML的概念模型
- 2、UML概念模型图例
- 三、UML的基本构造块
- 1、UML中的事物
- (1)UML中的四种事物
- (2)UML中各种事物的图示法
- 2、UML中的四种关系
- (1)依赖
- (2)关联
- (3)泛化
- (4)实现
- 3、UML中的图形(五大类十种图)
- (1)用例图
- (2)静态图:类图、对象图、包图
- (3)行为图:状态图、活动图
- (4)交互图:顺序图、协作图
- (5)实现图:构建图、部署图
- 四、写在最后
在下面的这篇文章中,将讲解我们平常常用的一种面向对象的画图方法,即统一建模语言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中各种事物的图示。
2、UML中的四种关系
UML中的四种关系是:依赖、关联、泛化、实现。
(1)依赖
两个模型元素中,有一个是独立的,一个是非独立的,独立的模型元素发生改变,会影响非独立的模型元素。
用带箭头的虚线来表示依赖关系。
如图所示:
(2)关联
关联是一种结构化的关系,指两个模型元素有联系。双向关联用一条实线来表示。
注意:关联关系有多重度,主要有: 0
、 1
、 0..1
、 0..*
、 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)部署图
①定义: 系统中硬件的物理体系结构。
②部署图的基本构成:
- 三维立方体表示部件;
- 节点名称位于立方体上部。
③图例:
四、写在最后
到这里,关于软件工程的体系知识就讲解结束啦!后面将会继续更新一些实践的内容。敬请期待!
如有需要了解软件工程相关的其他内容,可到『软件工程』栏目进行查看学习~
『软件工程13』浅谈面向对象方法,统一建模语言UML相关推荐
- 软件工程—统一建模语言UML
一.ULM概述 统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述.可视化处理.构造和建立软件系统制品的文档.它记录了对必须构造的系统的决定和理解,可用于对系统的理解.设计.浏览.配 ...
- uml 时序图_面向对象设计与统一建模语言UML
面向对象设计 自从面向对象编程语言在软件开发中成为主流之后,遵循面向对象技术特点的软件设计工作,也一并发展了起来. 首先要提出一个问题,就是设计的工作是要做什么? 它包括的范围其实是很广泛的,从搜集用 ...
- 软件工程导论 统一建模语言UML概述
1.UML模型由事物.关系和图组成 2.事物是 对模型中最具代表性成分的抽象,UML中分为结构事物.行为事物.分组事物和注释事物四类. 3.结构事物是UML模型的静态部分,主要用来描述概念的或物理的元 ...
- 【c++开篇】浅谈面向对象与面向过程(举例说明)
浅谈面向对象与面向过程 前言:刚接触C++第一时间,都会经常听到这样一话:C语言面向过程,C++面向对象.在老师模拟面试时,问道你对面向对象与面向过程的认识时,我有点懵答的不是很完整,刚好C++开篇写 ...
- 浅谈 SOLIDWORKS 的同步建模技术 | 产品探索
浅谈 SOLIDWORKS 的同步建模技术 | 产品探索 SOLIDWORKS 可以用"同步建模"的方式进行产品设计,在 SOLIDWORKS 中这种建模方式我们称之为直接编辑.直 ...
- 殷人昆 数据结构(用面向对象方法与C++语言描述)(第二版)实现汇总(持续更新)
殷人昆 数据结构(用面向对象方法与C++语言描述)(第二版)实现汇总 殷人昆 数据结构(用面向对象方法与C++语言描述)(第二版)实现汇总 第二章 线性表 第二章 线性表 约瑟夫问题(线性表实现)约瑟 ...
- 浅谈面向对象程序设计方法
目录 定义 基本思想 早期发展 背景 审视问题域的视角 抽象级别 封装体 可重用性 特征 对象唯一性 抽象性 继承性 多态性(多形性) 开发方法 Booch方法 Coad方法 OMT方法 UML(Un ...
- 『软件工程9』结构化系统分析——解决软件“做什么”问题
结构化系统分析--解决软件"做什么"问题 一.系统分析的任务和过程 1.系统分析的任务 2.系统分析的过程 (1)问题识别 (2)分析与综合 (3)编制文档 (4)系统分析评审 二 ...
- 浅谈面向对象的编程思想:如何优雅地把大象装进冰箱?
许多人刚学编程时,想必都听到过这样的话:"*语言是面向对象的,而***语言是面向过程的".那时的新人还懵懵懂懂,就被大牛或者书上的大牛骗去学了一种听起来很厉害的语言,然而学了半 ...
最新文章
- vim的保存文件和退出命令
- 要市场导向,不要销售导向,更不要个人导向(转)
- Java中stringbutter_java中string与ButterString的区别
- Java基础---Java---基础加强---类加载器、委托机制、AOP、 动态代理技术、让动态生成的类成为目标类的代理、实现Spring可配置的AOP框架
- 淘宝客推广赚钱全攻略
- C语言知识点总结 (一 )
- JAVA 中的修饰符的适用范围
- C# 之 观察者模式实例 -- 订牛奶
- 人到底是为了什么活着?
- Java初学01:学习路线,Java程序员最新职业规划
- 【PHP】创蓝253云通信平台国际短信接口调用demo案例
- unity 音频可视化方案
- Collecting Luggage - UVALive 2397 - 蓝桥杯 算法训练
- python插入排序实现及详解
- Android Studio 使用记录
- 大数据产品研究 - Presto简介
- 【个人喜好诗词之一】雨巷
- 10个LED创意方案带你玩转初级驱动控制
- 华三服务器HDM打不开网页,服务器HDM无法登录
- Educational Codeforces Round 133 (Rated for Div. 2) 题解 CD
热门文章
- [转]2020年排名前20的基于SpringBoot搭建的开源项目,帮你快速进行项目搭建!
- 【小程序】刘一哥课堂随机点名提问神器V1.0(附源程序)
- MODIS NDVI数据处理相关问题
- Git之checkout到别的分支提示Your local changes to the following files would be overwritten by checkout:
- Android之HttpClient 和HttpResponse 小结
- autoload.php beanbun_Beanbun: 简单开放的 PHP 爬虫框架
- 杠杆原理的形象演示,你都懂了吗?
- 需要多快的速度,才能在抽走桌布之后保持桌面物体不掉?
- 一名毕业生的自述:我知道我必须写论文,但没聪明到可以写出来......
- 面试可以,但别打扰我睡觉! | 今日最佳