UML——在Visual Studio 2013/2015中设计UML类图
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
UML——在Visual Studio 2013/2015中设计UML类图的更多相关文章
- [.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.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...
- [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图
[.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...
- 在Visual Studio 2013/2015上使用C#开发Android/IOS安装包和操作步骤
Xamarin 配置手册和离线包下载 http://pan.baidu.com/s/1eQ3qw8a 具体操作: 安装前提条件 1. 安装Visual Studio 2013,安装过程省略,我这里安装 ...
- Visual Studio 2013 Preview 高清多图先睹为快
Visual Studio 2013 Preview已经发布.大家可以下载试用了哦: 选项加载明显比之前版本要快很多.
- Visual Studio 2013/2015/2017快捷键(转)
英文原文:19 Must-Know Visual Studio Keyboard Shortcuts 项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt + L = ...
- Visual Studio 2013/2015/2017快捷键(转载)
本文为转载文章,原文:[心存善念] [Fonour] 项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt + L = 显示 Solution Explorer(解 ...
- visual studio 2013 生成依赖项关系图出错
开始是说无法连接到sql服务器,我安装卸载localdb http://www.microsoft.com/zh-cn/download/details.aspx?id=29062 下载 CHS\x6 ...
- Visual Studio 2015中设计UML类图
1.UML简介 Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是 ...
随机推荐
- 基本排序算法——选择排序java实现
选择排序与冒泡排序有很大的相同点,都是一次遍历结束后能确定一个元素的最终位置,其主要思路是,一次遍历选取最小的元素与第一个元素交换,从而使得一个个元素有序,而后选择第二小的元素与第二个元素交换,知道, ...
- IOS开发基础知识--碎片16
1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断对象类型 -(BOO ...
- 初学HTML 常见的标签(二) 列表标签
上次介绍了一些简单的文本标签设计, 这篇介绍列表类标签, 通过列表能写出很好看的, 多元化的网络页面. ul-li 列表标签 <ul> <li>列表1</li> & ...
- OC 单例模式
OC 单例模式 概念 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约 ...
- 11-C语言指针&一维数组&字符串
一.用指针遍历数组元素 1.最普通的遍历方式是用数组下标来遍历元素 1 // 定义一个int类型的数组 2 int a[4] = {1, 2, 3, 4}; 3 4 int i; 5 for (i = ...
- 2015-SH项目总结
2015年,加入现在的公司(外包公司,名字就不说了),做SH项目(化名),在这个月(2016.01)结束了. 虽然公司也有做项目总结,不过我还是自己也总结一次. 项目概况: 这是个为一间私人会所提供全 ...
- SqlException 当前命令发生了严重错误 应放弃任何可能产生的结果
今天在信息发布功能时出现了一个怪异的错误(时而出错,时而不会): System.Data.SqlClient.SqlException: 当前命令发生了严重错误.应放弃任何可能产生的结果. >& ...
- Linux SSH登录慢案例分析
手头有台Linux服务器ssh登录时超级慢,需要几十秒.其它服务器均没有这个问题.平时登录操作都默默忍了.今天终于忍不住想搞清楚到底什么原因.搜索了一下发现了很多关于ssh登录慢的资料,于是自己也学着 ...
- python2不同版本安装json模块
1.常用json库主要有json-py和simplejson 1) json-py 包含json和minjson,用法一样 Python (#, Jan , ::) [GCC (Red Hat -)] ...
- 交叉编译总结 libosscore.a libcurl.a libmysqlclient.a
把工程文件交叉编译到arm上运行,着实花费了一番功夫. 首先遇到的错误是 X uses VFP register arguments, B does not 百度了一下,发现是硬浮点和软浮点的问题,原 ...