1、UML模型由事物、关系和图组成

2、事物是 对模型中最具代表性成分的抽象,UML中分为结构事物、行为事物、分组事物和注释事物四类。

3、结构事物是UML模型的静态部分,主要用来描述概念的或物理的元素,包括类、主动类接口、对象、用例、参与者、协作、构件和节点等。

①类:
用带有类名、属性和操作的矩形框来表示。从上到下分为三个部分,分别是类名、属性和操作,其中类名是必须有的。

②接口:
接口描述了一个类或构件的一组外部可用的服务集,是一组操作的描述而不是实现,接口体现了使用与实现分离的原则。

③用例:
用于表示系统想要实现的行为,即描述一组动作序列(即场景)。而系统执行这组动作后将产生一个对特定参与者有价值的结果。

④参与者:
是指与系统有信息交互关系的人、软件系统或硬件设备,在图形上用简化的小木头人表示。

4、行为事物是UML模型的动态部分,包括交互和状态机两类。

5、分组事物是UML模型的组织部分,其作用是为了降低模型复杂度,用包来表示。

6、注释事物是UML模型的解释部分,它们用来描述和标注模型的任何元素。通常可以用注释修饰带有约束或者解释的图。

7、UML常用的关系有依赖、关联、泛化、实现四种。

①依赖是两个事物之间的语义关系,其中一个事物发生变化会影响到另一个事物的语义,用虚线箭头从源事物指向目标事物表示源事物依赖于目标事物。

②关联是一种结构关系,描述两个或多个类之间的联系关系,是一种特殊的依赖,分为普通关联、限定关联、关联类以及聚合与复合。
普通关联是最常见的关联关系,只要类之间有连接关系就可以用普通关联表示,图中用实线连接,线上可以写上关联名并在线的两端写上个数的对应关系,如果没表则默认一对一。


三个及以上的类关联时,用多元关联表示,多个类引实线到菱形,关联名可以 标注在旁边。

限制关联通常用在一对多或多对多的关联关系中,可以把模型中的多重性从一对多变成一对一,或将多对多简化成多对一。在类图中把限定词放在关联关系末端的一个小方框内。

或关联通常用在两个关联间加上虚线并标以来描述。

某些情况下,需要对关联关系的语义做详细的定义、存储和访问,为此可以建立关联类,用来描述关联的属性。 关联中的每个链与关联类的一个实例相联系。关联类通过 一条虚线与关联连接。

聚合是一种特殊的关联。它描述了整体和部分之间的结构关系。分为共享聚合和复合聚合。如果聚合关系中处于部分方的实例可以同时参与多个处于整体方实例的构成,则称为共享聚合。如果部分完全隶属于整体类,且两者共存,一旦整体类不存在部分类也会消失,这种聚合称为复合聚合。


③泛化关系就是一般类和特殊类之间的继承关系,图中表示为从特殊类指向一般类的空心箭头。

泛化又分为普通泛化和受限泛化。
普通泛化可以理解为一般的继承。受限泛化是指泛化具有约束条件,一般有四种:交叠、不相交、完全、不完全

④实现是泛化关系和依赖关系的结合, 也是类之间的语义关系。图中用带箭头的虚线表示。

8、UML的图
①用例图
用例模型描述的是外部参与者(actor)所理解的系统功能。用例模型用于需求分析阶段,它的建立是统开发者和用户反复讨论的结果,描述了开发者和用户对需求规格达成的共识。
用例之间可以有扩展、包含和泛化三种关系。扩展和包含是继承关系(即泛化关系)的两种不同形式。 参与者和用例之间存在一定的关系,这种关系属于关联关系。
用例图中用例之间有三种关系:扩展、包含、泛化
向一个用例中加入一些新的动作后构成了另一个用例,这两个用例之间的关系就是扩展关系,后者通过继承前者的 一些行为得来,通常把后者称为扩展用例。扩展用例指向基本用例(大指向小)。
当一个用例使用另一个用例时,这两个用例之间就构成了包含关系。基本用例指向包含用例(使用者指向被使用者)。
在用例的泛化关系中,子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或覆盖父用例中的行为 和含义。父用例表示通用的行为序列。


②类图
类图描述类和类与类之间的静态关系,它是从静态 角度表示系统的,因此类图属于一种静态模型。类 图是构建其他图的基础,没有类图就没有状态图、 协作图等其他图,也就无法表示系统其他方面的特性。
类图中类的画法和前面提到的类一样,从上到下分三部分,类名属性方法,类之间用线表示关联、聚合、泛化关系。

③顺序图
顺序图用来表示用例中的行为顺序,属于动态模型
绘制时参与者和对象按照从左到右的顺序排列; •一般最多两个参与者,他们分列两端。启动这个用例的参与者往往排在最左边,接收消息的参与者则排在最右端;对象从左到右按照重要性排列或按照消息先后顺序 排列;将对象置于顺序图的顶部意味着在交互开始的时候 对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的。 发送过去用实线,回收用虚线,同步用三角箭头,异步用空箭头。

④协作图
协作图是顺序图的一种变化形式,用于描述相互协作的对象间的交互关系和链接关系。 协作图和顺序图都表示出了对象间的交互作用,但侧重点不同,顺序图强调了时间顺序,但是忽略了对象间的关系,协作图强调对象间的关系但时间顺序必须要从顺序号中获得。

⑤状态图
中间状态用圆角矩形表示,可能包含三个部分, 第一部分为状态的名称;第二部分为状态变量的 名字和值,这部分是可选的;第三部分是活动表, 这部分也是可选的。

中间状态的画法和类图中的类很相似。除此之外初始状态只有一个,用实心圆表示,终态可以有多个,用内圈实心的同心圆表示。

⑥活动图
活动图是一个流图,描述了从活动到活动的流。它是另一种描述交互的方式,它描述采取何种动作,动作的结果是什么(动作状态改变),何时发生(动作序列),以及在何处发生(泳道)。

⑦构件图
构件图描述软件构件及构件之间的依赖关系,显示代码的静态结构。构件图是面向对象思想的核心体现。 主要包含三种元素,即构件、接口和关系。

⑧部署图
部署图描述处理器、设备和连接,它显示系统硬件 的物理拓扑结构及在此结构上执行的软件。每个系 统只有一个部署图。 用于静态建模阶段。

软件工程导论 统一建模语言UML概述相关推荐

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

    浅谈面向对象方法UML 一.UML的含义 二.UML的主要内容 1.UML的概念模型 2.UML概念模型图例 三.UML的基本构造块 1.UML中的事物 (1)UML中的四种事物 (2)UML中各种事 ...

  2. 统一建模语言UML整理之开篇

    引言: 这段时间将致力于写UML方面的博客,由于个人能力的有限,如果博客中出现错误的地方还请广大博友批评指正.为了更好地了解一个过程或者事物,人们通常根据所研究对象的某些特征(形状.结构.或行为等)建 ...

  3. 统一建模语言UML轻松入门(1)――基本概念

    统一建模语言UML轻松入门(1)――基本概念 --------------------------------------------------------------------- 宋宝华 ema ...

  4. 统一建模语言UML轻松入门系列

    第五讲:统一建模语言UML轻松入门之综合实例 第四讲:统一建模语言UML轻松入门之动态建模 第三讲:统一建模语言UML轻松入门之静态建模:类和对象 第二讲:统一建模语言UML轻松入门之静态建模:用例 ...

  5. 统一建模语言UML轻松入门(3)――静态建模:类和对象

    统一建模语言UML轻松入门(3)――静态建模:类和对象 --------------------------------------------------------------------- 宋宝 ...

  6. 统一建模语言UML(四):领域模型和类图

    统一建模语言UML(四):领域模型和类图 领域模型 领域模型是对领域内概念类或现实世界中对象的可视化表示,也称为概念模型.是更为完整的业务模型的一个特例.从UML的表示法角度,领域模型被描述为一组没有 ...

  7. 统一建模语言UML(1)概述

    uml概述 uml(UNIFIED MODELING LANGUAGE) uml是一种工具,隐藏在其后面的是面向对象的想法 url非常适合面向对象分析和设计,在软件开发中想法很重要,而uml是用来表达 ...

  8. 软件工程—统一建模语言UML

    一.ULM概述 统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述.可视化处理.构造和建立软件系统制品的文档.它记录了对必须构造的系统的决定和理解,可用于对系统的理解.设计.浏览.配 ...

  9. uml 时序图_面向对象设计与统一建模语言UML

    面向对象设计 自从面向对象编程语言在软件开发中成为主流之后,遵循面向对象技术特点的软件设计工作,也一并发展了起来. 首先要提出一个问题,就是设计的工作是要做什么? 它包括的范围其实是很广泛的,从搜集用 ...

最新文章

  1. CentOS6.2 KVM 虚拟机命令行安装配置
  2. 页面怎么创建一个数组_怎么创建一个企业网站?
  3. python主要运用于-Python的8大主要应用领域,看看哪个是你的菜?
  4. 【php数组函数序列】之array_combine() - 数组合并
  5. PHP中操作MySQL的一些要注意的问题
  6. 如何反映两条曲线的拟合精度_你知道850加工中心定位精度的检测有哪些吗?
  7. js对象取值的两种方式及区别
  8. 字符串过滤非数字c语言,【新手】【求思路】如何判断用户输入的字符串中是否含有非数字?...
  9. springboot 2.0版本自定义ReidsCacheManager的改变
  10. c语言程序设计精髓第七周编程题,C语言程序设计精髓编程题在线测试
  11. 华为服务器虚拟化和存储虚拟化中标,idc服务器虚拟化排名
  12. 开关电源基本工作原理
  13. python外贸应用_Python脚本+Sublime免费查询阿里巴巴国际站产品排名
  14. java 实心圆_java JFrame窗口中画一个实心圆并设置背景颜色,但背景不显示,级求解!!...
  15. 考研由考生编号估计学校,报考人数和专业
  16. 关于glew.h / glut.h引用【转】
  17. BufferedStream
  18. 最新阿里云服务器和GPU服务器长期优惠活动价格表
  19. Linux服务器常用命令 - 记录(Anaconda/Matlab/VNC/Python)
  20. 2007我的找工作之旅 - 洛丽塔之痒 - 洛丽塔之痒 - 和讯博客

热门文章

  1. LoadRunner接口工作总结
  2. NET 自定义配置文件 Configuration
  3. 第25月第3天 Mxshop项目记录01
  4. 博客园修改页面显示样式
  5. python学习--面向过程程序设计实例
  6. GitHub和Microsoft TFS对比有什么优势
  7. 【每日Scrum】第三天(4.24) TD学生助手Sprint2站立会议
  8. 【SpringBoot】开启热部署(jsp 页面热部署、devtools 全局热部署)
  9. 【Java 异常】try-catch、finally、异常的种类、throws、thorw、自定义异常、断言类
  10. 【恋上数据结构】快速排序