UML的九种模型图
本文转自UML 的九种模型图,仅供学习交流!
一、作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。
- UML语义:描述基于UML的精确元模型定义。
- UML表示法:定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。
二、标准建模语言UML可以由下列5类图来定义。
- 用例图:从用户角度描述系统功能,并指出各功能的操作者。
- 静态图:包括类图和对象图。类图描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系,如关联、依赖、聚合等,也包括类的属性和操作,类图描述的是一种静态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全相同的标识。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
- 行为图:描述系统的动态模型和组成对象间的交互关系,包括状态图和活动图。状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件,状态图是对类图的补充,活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并进行活动。
- 交互图:描述对象间的交互关系,包括时序图和协作图。时序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;协作图描述对象间的协作关系,协作图跟时序图相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用时序图;如果强调上下级关系,则选择协作图。
- 实现图:包括组件图和部署图。组件图描述代码部件的物理结构及各部件之间的依赖关系,组件图有助于分析和理解部件之间的相互影响程度;部署图定义系统中软硬件的物理体系结构。
采用UML来设计系统时,第一步是描述需求;第二步根据需求建立系统的静态模型,以构造系统的结构;第三步是描述系统的行为。其中在第一步与第二步中所建立的模型都是静态的,包括用例图、类图、对象图、组件图和部署图等5种图形,是标准建模语言UML的静态建模机制。其中第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、时序图和协作图等4种图形,是标准建模语言UML的动态建模机制。
首先对UML中的各个图的功用做一个简单介绍:
和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。
一:这九种模型图各有侧重,
1:用例图侧重描述用户需求,
2:类图侧重描述系统具体实现;
二:描述的方面都不相同,
1:类图描述的是系统的结构,
2:序列图描述的是系统的行为;
三:抽象的层次也不同,
1:构件图描述系统的模块结构,抽象层次较高,
2:类图是描述具体模块的结构,抽象层次一般,
3:对象图描述了具体的模块实现,抽象层次较低。
在有的文献书籍中,将这九种模型图分为三大类:
结构分类、动态行为和模型管理:
1:结构分类包括用例图、类图、对象图、构件图和部署图,
2:动态行为包括状态图、活动图、顺序图和协作图,
3:模型管理则包含类图。
画图说明
UML中有3种构造块:事物、关系和图,事物是对模型中最具有代表性的成分的抽象;关系是把事物结合在一起;图聚集了相关的的事物。具体关系图标如下:

说明:
构件事物是名词,是模型的静态部分。
行为事物是动态部分,表示行为。
分组事物是组织部分。
注释事物是解释部分。
聚集:特殊的关联,描述整体与部分的组合关系。
泛化:是一种特殊与一般的关系,如子元素(特殊)与父元素(一般),箭头指向父元素。
实现:类元之间的关系,其中一个类元指定了由另一个类元保证执行的契约。一般用在接口和实现他们的类之间或用例和实现它们的协作之间。
对象模型: 采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类图。
动态模型: 展现系统的内部行为。 包括序列图,活动图,状态图。




3.用例图:描述一组用例、参与者以及它们之间的关系,其展示的是该系统在它的外面环境中所提供的外部可见服务。如下图(摘自网络):

4.交互图:包括序列图(顺序图)和协作图,两者对应,顺序图是强调消息时间顺序,有对象生命线和控制焦点。协作图是强调接收和发送消息的对象的结构组织,有路径和顺序号。如下图(摘自网络):




6.状态图:展示了一个状态机,由状态、转换、事件和活动组成。强调事件行为的顺序。如下图(摘自网络):



UML的九种模型图的更多相关文章
- UML设计九种图例
一.作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分. UML语义:描述基于UML的精确元模型定义. UML表示法:定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语 ...
- UML之九种图
UML说是九种图吧!其实是众说纷纭,不管有几种图,我们只要能够很好的运用这几张图就好,主要有用例图.类图.对象图.状态图.活动图.序列图.协作图.构件图和部署图,至于包图是否属于这九种图,我也理不清楚 ...
- UML的9种图例解析
摘自: http://blog.csdn.net/fatherican/article/details/44966891 UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类 ...
- 【转】UML的9种图例解析
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中, ...
- UML的9种图例解析(转)
原帖已经不知道是哪一个,特在此感谢原作者.如有侵权,请私信联系.看到后即可删除. UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对 ...
- [UML]转:浅谈UML的概念和模型之UML九种图
转自:http://blog.csdn.net/jiuqiyuliang/article/details/8552956 目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UM ...
- 讨论UML概念和模型UML九种图。
文件夹: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图.在每一种视图中都包括一个或多种图. 本文我们重点解说UML每种图的细节问题: 1.用例图(use case d ...
- 【转】浅谈UML的概念和模型之UML九种图
原文地址:浅谈UML的概念和模型之UML九种图 目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图.本文我们重点讲解UML每种图的 ...
- [转]浅谈UML的概念和模型之UML九种图
目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图.本文我们重点讲解UML每种图的细节问题: 1.用例图(use case dia ...
随机推荐
- 13 vue学习 package.json
一:package.json文件详解 管理你本地安装的npm包 .定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文件,自动 ...
- DataTable批量插入数据库
最近在将excel中的文件导入到数据库中,用程序进行编写,由于数据量较大所以速度很慢,后来采用了SqlBulkCopy类,解决了速度的问题,我就insert语句,sqldataadapter.upda ...
- [hdu4812]D Tree(点分治)
题意:问有多少条路径,符合路径上所有节点的权值乘积模1000003等于k. 解题关键:预处理阶乘逆元,然后通过hash和树形dp$O(1)$的判定乘积存在问题,注意此道题是如何处理路径保证不重复的,具 ...
- Oracle tns 协议
下面是翻译国外的一篇博客,原文连接如下: https://thesprawl.org/research/oracle-tns-protocol/ 简介 TNS(Transparent Network ...
- go 时间戳和时间格式的相互转换
package main import( "fmt" "time" ) func main() { datetime := "2015-01-01 0 ...
- POJ 3281 Dining (网络流之最大流)
题意:农夫为他的 N (1 ≤ N ≤ 100) 牛准备了 F (1 ≤ F ≤ 100)种食物和 D (1 ≤ D ≤ 100) 种饮料.每头牛都有各自喜欢的食物和饮料, 而每种食物或饮料只能分配给 ...
- qscoj#19D(单调队列)
题目链接:http://qscoj.cn/problem/130/ 题意:中文题诶- 思路:直接用单调栈搞一下就好了 代码: #include <bits/stdc++.h> using ...
- Eureka 代码详解
看过之前文章的朋友们,相信已经对Eureka的运行机制已经有了一定的了解.为了更深入的理解它的运作和配置,下面我们结合源码来分别看看服务端和客户端的通信行为是如何实现的.另外写这篇文章,还有一个目的, ...
- python translate maketrans 字符串替换
string1='abcd-1234' print(string1.translate(string1.maketrans('abc','ABC'))) a='aeiou' b=' string2=' ...
- php输出变量加{}的作用
之前在输出字符串中有变量如 echo “中间有”; echo $i; echo "变量"; 现在发现一个好方法,把变量用{}括起来 echo "中间有{$i}变量&quo ...