1.UML简介

Unified Modeling Language (UML)又称统一建模语言或标准建模语言。

简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他们的主要用途简介:

1.用例图:对系统的使用方式分类.

2.类图:显示类和它们的相互关系。

3.对象图:只显示对象及它们的相互关系。

4.活动图:显示人或对象的活动,其方式类似于流程图。

5.状态机图:显示生命周期比较有趣或复杂的对象的各种状态。

6.通信图:显示在某种情形下对象之间发送的消息。

7.顺序图:显示与通信图类以的信息,但强调的是顺序,而不是连接。

8.包图:显示相关的类如何组合,对开发人员有用。

9.部署图:显示安装已完成系统的机器、过程和部署制品。

10.组件图:显示可重用的组件(对象或子系统)及期接口。

11.交互总图:使用顺序图喧赤活动的务个步骤。

12.时间图:显示消息和对象状态的准确时间限制。

13.复合结构图:显示对象在聚合或复合中的相互关系,显示接口和协作的对象

常用的 UML 图可分静(态)图、动(态)图两类,静态图主要描绘软件的静态结构,而动态图主要描绘软件的动态行为。
常用 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图。

转载:http://www.cnblogs.com/yubinfeng/p/5206158.html

.net 面向对象程序设计深入](1)UML的更多相关文章

  1. [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图

    [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图 1.活动图简介 定义:是阐明了业务用例实现的工作流程. 业务工作流程说明了业务为向 ...

  2. [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图

    [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图  1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...

  3. [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图

    [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...

  4. 面向对象程序设计第四单元总结(UML系列)

    2019面向对象程序设计第四单元总结 前言 ​ 本单元是面向对象程序设计课程的最后一个单元了,本单元是和UML模型相关,也就是说,我们需要正确理解UML模型的基础上,对构建出的UML模型进行解析,但是 ...

  5. UML与面向对象程序设计原则

    [实验任务一]:UML复习 阅读教材第一章复习UML,回答下述问题: 面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明. 1.  关联关系 (1)  双向关联 (2)  单向关联 (3)  ...

  6. [.net 面向对象程序设计深入](0) 开篇

    [.net 面向对象程序设计深入](0)开篇        [.net 面向对象编程基础]和 [.net 面向对象程序设计进阶]在15年底写完了,群里也加进来不少热爱学习的小伙伴.让我深切感受到在这个 ...

  7. [.net 面向对象程序设计进阶] (28) 结束语——告别2015

    [.net 面向对象程序设计进阶] (28) 结束语——告别2015 <.net面向对象程序设计进阶>这一系列文章写了太长的时间了,大概有半年没写,在年底又一口气写了好几篇.在整个过程中目 ...

  8. 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  9. 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》

    20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...

随机推荐

  1. String数据转Matrix矩阵

    String数据转Matrix矩阵 private Matrix String_To_Matrix(string str) { int[] Remove_Num = new int[10]; int ...

  2. python -ConfigParser模块讲解

    configParser 模块用于操作配置文件 注:Parser汉译为“解析”之意. 配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键= ...

  3. Oracle运算符收录(易忘记,但是又很重要的运算符)

    Create Table Test6( id ), name ), age ), sex ) ) 1. ||   符 字符串连接字符串,注意:文字和日期一定嵌入在单引号里面 select ID,Nam ...

  4. 解决C#中dynamic类型作为泛型参数的反射问题

    C#中dynamic类型作为泛型参数传递过去后,反射出来的对象类型是object,我用老外的这篇博文中的代码跑起来,得出的结果是:Flying using a Object map (a map),将 ...

  5. Java TCP/IP与HTTP协议个人总结(原创)

    首先举个例子方便理解: 1.应用层(http.ftp)就类似:淘宝.京东.易购等网购网站,主要用来负责选择购买商品(制定协议). 2.传输层(TCP.UDP)就类似:中通.申通等物流公司,主要负责传送 ...

  6. IE的haslayout的触发

    原文连接:http://www.cnblogs.com/yunxuange/archive/2012/09/19/2693886.html layout是Windows上的IE浏览器产生许多bug的根 ...

  7. hibernate 学习笔记3

    1. 多对多关联: 在双方都要用一个类型为Set的属性保存对方的信息,并在映射配置文件中指定这个属性的名字,并指定中间表.还需要通过<key column=””>来指定自己在中间表中对应的 ...

  8. poj 2259 Team Queue

    Team Queue Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2977   Accepted: 1092 Descri ...

  9. 下面我将随机抽取一名幸运女生,XXXXX

    个人在经过长久以来(约等于4小时)的奋战,终于实现了一个上课老师提问并抽奖的小程序.希望这个程序变得非常非常实用 课程的理解:在我的项目开始之前,先学习了一下UML项目类图的画法,和类与类之间的关系. ...

  10. OAuth2.0 微信授权机制

    我在了解设计Restful接口的时候,发现涉及到接口验证,可以利用OAuth2.0机制来验证. 我开发的微信端Web网页通过微信授权的时候,微信端也是用OAuth2.0机制来获取用户基本信息. OAu ...