1.UML简介
Unified Modeling Language (UML)又称统一建模语言或标准建模语言。
简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他们的主要用途简介:
1.用例图:对系统的使用方式分类.
2.类图:显示类和它们的相互关系。
3.对象图:只显示对象及它们的相互关系。
4.活动图:显示人或对象的活动,其方式类似于流程图。
5.状态机图:显示生命周期比较有趣或复杂的对象的各种状态。
6.通信图:显示在某种情形下对象之间发送的消息。
7.顺序图:显示与通信图类以的信息,但强调的是顺序,而不是连接。
8.包图:显示相关的类如何组合,对开发人员有用。
9.部署图:显示安装已完成系统的机器、过程和部署制品。
10.组件图:显示可重用的组件(对象或子系统)及期接口。
11.交互总图:使用顺序图喧赤活动的务个步骤。
12.时间图:显示消息和对象状态的准确时间限制。
13.复合结构图:显示对象在聚合或复合中的相互关系,显示接口和协作的对象
常用 UML 动态图(5 个):用例图,活动图,状态机图,序列图,通信图。
常用 UML 静态图(4 个):类图,包图,部署图,构件图。
2.UML类图
在所有UML图中,类图是使用频率最高的UML图。
类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。
类图主要关系有:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
定义:显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。
类型:静态图
应用:设计阶段
2.1 泛化(Generalization)
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:苹果树是树的一种,即有苹果树的特性也有树的共性。
【代码体现】:类继承另一个类
【箭头指向】:带三角箭头的实线,箭头指向父类
2.2 实现(Realization)
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
【代码体现】:类实现接口成员
【箭头指向】:带三角箭头的虚线,箭头指向接口
2.3 关联(Association)
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线,指向被拥有者
上图,表示企业和员工的关联关系,员工都属于一个企业
除此之外,关联关系允许互相关联,比如夫妻关系,可以互相关联。也允许自关联,即自己也是自己的成员之一。
2.4 聚合(Aggregation)
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体
2.5 组合(Composition)
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体
2.6 依赖(Dependency)
【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者
例如:程序员需要依赖计算机
下面这张图是从网上下载的上面各种关系的一个综合图:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
3.类图中细节符号含义
UML是一种统一建模语言,在使用过程中就有统一的细节表示,下面是几种通用的表示方法,不论你使用什么工具,总体表示差异不大。
类:
抽象类,类名使用用斜体显示。
字段、属性、方法:
‘+’表示public
‘-’表示private
‘#’表示protected。
接口:
与类图的区别主要是顶端有<<interface>>显示 ,见上面的示例。
4.在Visual Stodio 2013/2015中创建UML类图
在.NET开发中,我们可以使用VS自有的功能方便设计类图,VS2013旗舰版和VS2015企业版都有建模工程,下面介绍一下如何使用VS建模
(1)在VS中新建,选择”建模项目“,如下:
(2)打开建模项目,增加一个UML类图
(3)打开新建的UML类图文件,通过工具栏建立类、接口等,并创建关系
(4)将设计好的UML类图,生成代码
(5)查看生成代码
(6)逆向(由代码生成类图)
在VS中,我们可以将代码很方便的生成UML类图,如下
5.UML类图工具
UML工具比较多,常用的三大UML建模工
(1)PowerDesign
(2)Rose
(3)Visio
还有一些免费的工具有:
(1)UMLet
(2)ArgoUML
(3)JUDE
(4)BOUml
(5)Visual Paradigm
在线建工具:
https://www.processon.com
根据自己爱好选用吧。
6.总结
本篇主要介绍了UML统一建模语言在面向对象程序设计中如何使用,几种关系的UML类图示例,最后介绍了在.NET开发中,使用VS2013/2015建立UML类图及生成代码。主要介绍的是其使用方法,具体使用,需要在不断的了解业务需求的基础上,才能设计出合格的UML图。
7.源代码下载:
GitHub:https://github.com/yubinfeng/BlogExamples
Visual Studio 2015中设计UML类图的更多相关文章
-
[.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图
[.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...
-
UML——在Visual Studio 2013/2015中设计UML类图
1.UML简介 Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是 ...
-
[.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图
[.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图 1.活动图简介 定义:是阐明了业务用例实现的工作流程. 业务工作流程说明了业务为向 ...
-
[.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图
[.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图 1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...
-
UML类图中箭头的含义
Explanation of the UML arrows Here's some explanations from the Visual Studio 2015 docs: UML Class D ...
-
UML类图中的各种箭头代表的含义(转自:http://www.cnblogs.com/damsoft/archive/2016/10/24/5993602.html)
1.UML简介Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他 ...
-
Visual Studio 2015 将json转换为实体类
最新写的一个接口需要接收json参数,然后序列化为实体类然后再进行后面的逻辑处理.因为json中键值对比较多,逐一去手写实体中的每个属性太麻烦,于是寻思是否有这样的工具可以将json转换为实体类. 经 ...
-
微软移除Visual Studio 2015中的UML
微软已经在Visual Studio 2015中移除了UML(Unified Modeling Language,统一建模语言),原因是该语言使用率过低.因此微软要优化产品结构,把好钢用在刀刃上. V ...
-
23种常用设计模式的UML类图
23种常用设计模式的UML类图 本文UML类图参考<Head First 设计模式>(源码)与<设计模式:可复用面向对象软件的基础>(源码)两书中介绍的设计模式与UML图. 整 ...
随机推荐
-
【转】python fabric实现远程操作和部署
fabric title是开发,但是同时要干开发测试还有运维的活……为毛 task*3 不是 salary * 3 (o(╯□╰)o) 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高 ...
-
使用ASP.NET注册工具aspnet_regiis.exe注册IIS
该工具的名称为aspnet_regiis.exe,在32位机上,该工具存在于C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,在64位机中“Framework ...
-
hdu 4717 The Moving Points(第一个三分题)
http://acm.hdu.edu.cn/showproblem.php?pid=4717 [题意]: 给N个点,给出N个点的方向和移动速度,求每个时刻N个点中任意两点的最大值中的最小值,以及取最小 ...
-
python的局部变量和全局变量
#coding=utf-8#全局变量与局部变量 #作用域def func(): i=8#print i# print object# j=9# print j #局部变量def func(a): i= ...
-
sublime text注册码(秘钥)
—– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA ...
-
前端基础之html-Day12
1.web服务本质 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bi ...
-
Linux命令行抓包及包解析工具tshark(wireshark)使用实例解析
在Linux下,当我们需要抓取网络数据包分析时,通常是使用tcpdump抓取网络raw数据包存到一个文件,然后下载到本地使用wireshark界面网络分析工具进行网络包分析. 最近才发现,原来wire ...
-
Linux 系统调用(system call)
1 系统调用:(SYSTEM CALL) 操作系统(operating system)内核中有一组实现系统功能的过程,系统调用就是对上述过程的调用.程序员利用系统调用,向OS提出服务请求,由OS代为完 ...
-
2-3 用组件改写Todolist案例
编写组件来改写2-2的Todolist案例
-
MFC中处理UI界面时的注意点
最近开发时,在处理界面上遇到了下面的问题: 上位机与下位机通信时,如果出现超时,弹出MessageBox提示的情况下,更新界面上的CStatic控件会出现重影. 经过调查发现 原因是由于在UI线程中处 ...