四步轻松实现用Visio画UML类图


原文链接:四步轻松实现用Visio画UML类图

四步轻松实现用Visio画UML类图

本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对Visio画UML类图的步骤一定会有所了解。 

用Visio画UML类图 

对于画类图的工具很多,曾经学过用starUML画类图,但这个是用于Java语言的,对于用vs编程C++语言,个人感觉用visio会好一点。以下用以前面的俄罗斯方块游戏中的一个Block类为例来讲述。

1.首先创建一个类图。接下来我们要做一下准备工作,因为我们这里用了PSDK中的POINT类型,在种数据类型在visio数据类型中找不到,所以我们先得追加这个数据类型。为了便于管理我们会先创建PSDK数据类型包.

创建数据包:菜单->UML->包.打开[UML包]对话框.点击[新建]按钮,在[包]列中输入[PSDK数据类型],并确定

2.追加POINT数据类型

这时我们可以看到模型资源管理器(若左边窗口没有,可以在从菜单->UML->视图->模型资源管理器调出)中选中刚建的PSDK数据类型,再右击->新建->数据类型,打开UML数据类型属性对话框。选择[数据类型]项目,在名称项目中填写[POINT],选择[确定]结束.

注意:在PSDK中POINT是一个结构体,但是由于我们并不关心POINT的细节,所以把POINT作为简单数据类型来处理。

类:Visio画UML类图时添加一个类很简单,从形状窗口中[UML静态结构]分类中拖动对象就可以了。

id="iframe_0.6580104613676667" src="https://www.cnblogs.com/show-blocking-image.aspx?url=http%3A%2F%2Fimages.51cto.com%2Ffiles%2Fuploadimg%2F20100628%2F1758390.jpg&maxWidth=1101&origin=http://www.cnblogs.com&iframeId=iframe_0.6580104613676667" frameborder="0" scrolling="no" height="329" style="border-style: none; width: 1101px;">

3.设定类的详细信息:设定类的详细信息的大部分工作都是同时属性对话框实现的.对于C++程序员来说,需要设定的内容包括类名,数据成员,成员函数.。

双击类或右击->属性打开UML类属性对话框。在[类别]中选择[类]项目,然后在右面的名称栏目中写入类名就可以了。这里还可以设定类的一些属性,可以暂时先不管。

添加数据成员在右面的表格中追加成员函数。。[特性]栏目中写入变量名,[类型]是用来选择数据类型的。这里我们选择[POINT]。[可见性]栏目选择的是这个成员是公共的(private)。[多重性]是指,在类中,数据成员的个数。[1]代表在这个类中,有而且只有一个数据成员。[0..1]表示,没有或者有一个。可以在[初始值]中输入数据成员的初值。同样添加其它数据成员。

4.添加成员函数:在[类别]窗口中选择[操作]项目。在右边表格中追加成员函数。在[操作]写函数名,在[可见性]中选择函数是,共有,保护还是私有的。[多态]也就是使否是虚函数。[范围]表示一个函数是属于实例,还是属于类,静态函数,也被称为类的成员函数,普通的成员函数也被称为实例的成员函数。所以如过,在这里选中了[分类器],就说明这个函数是静态函数。

Visio画UML类图时,对于上面的操作,只是设定函数的一些基本信息,更详细的信息可以通过选中函数后,点击[属性]按钮,在出现的[UML操作属性]窗口中设定。首先是设定函数的基本信息。和上面的窗口重复的内容,我们不再说明。我们只说明[前缀]和[后缀]。如果我们想要返回的类型是指针类型或者是应用类型的话,只要在[后缀]中填写[*]或[&]就可以了。

下图是用Visio画UML类图完成之后的效果。

id="iframe_0.9364435207098722" src="https://www.cnblogs.com/show-blocking-image.aspx?url=http%3A%2F%2Fimages.51cto.com%2Ffiles%2Fuploadimg%2F20100628%2F1758391.jpg&maxWidth=1101&origin=http://www.cnblogs.com&iframeId=iframe_0.9364435207098722" frameborder="0" scrolling="no" height="316" style="border-style: none; width: 1101px;">

 

 

==============================

Uml 关系主要有四大类: 依赖,关联,泛化,实现。

其中 依赖和关联是事物之间语义上的横向关系,泛化和实现是事物之间的纵向关系。

一:依赖 Dependency

图示:----->

定义:关系最为松散的,单向的,暂时产生关系的事物之间使用。

使用图例:在静态图、组件图、部署图中两事物的弱依赖关系用此图示。

二:关联 Association

图示:此图为visio中画法(在uml静态结构中,拖动复合图例,然后双击此图例,将出现下图,在关联端list中,聚合列都选择无,然后在isNavigable列中选择划箭头的端。然后点选确定,就出现右侧的关联图例)。

 

定义:两事物之间的比较密切关系。

实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。关联转换为一个实例作用域的变量。可为一个关联附加其他修饰符。多重性(Multiplicity)修饰符暗示着实例之间的关系。

使用图例:在静态图中使用,其他图中也有类似的关联关系,但细化为其他关系。

其中具体细分了两种关系:聚合和组合。

1聚合 Aggregation

图示:此图为visio中画法(在uml静态结构中,拖动复合图例,然后双击此图例,将出现下图,在关联端list中,在聚合列中在需划箭头端选择共享选项。然后点选确定,就出现左侧的聚合图例)。

定义:整体和个体之间的关系,个体生命周期的消亡对整体生命周期没有太大的影响。has a的关系。

聚合是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。聚合也转换成一个实例作用域变量。
关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。

2组合 Composition

图示:此图为visio中画法(在uml静态结构中,直接拖动复合图例)

定义:整体和个体之间的关系,contains a 的关系。

组合是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。组合也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。

在visio中 聚合和组合关系被分别称之为共享和复合关系。主要在静态图中使用。菱形为整体一端,另一端为个体。

三:泛化 Generalization

图示:此图为visio中画法(在uml静态结构中,直接拖动归纳图例)

定义:特殊到一般的关系。在软件开发中被称为继承关系,is a 的关系。

四:实现 Realization

图示:此图为visio中画法(右击类,然后选择形状显示选项,然后再勾选如左边所示的实现链接,点选确定,此时选择此类例图,将出现黄色菱形,点选黄色菱形,然后划线到要关联的事物中。即出现此虚箭头线)。

定义:类元之间的实现关系,在软件开发中被称为实现接口,或者抽象类之间的实现关系。

 

另外在用例图中,存在3种关系

1:参与者与参与者之间泛化关系,即visio中的归纳图例。

2:参与者与用例之间用依赖关系。即visio中的通信图例。

3:用例与用例之间用关联关系,即拖拽visio中的扩展图例。有时也可以用泛化关系。

其中关联分为两类:include关系,extends关系。

1)包含关系:把几个用例的公共步骤分离成一个被包含的用例,用例间的包含关系允许包含提供者用例的行为到客户用例中.把包含用例称为客户用例,被包含用例称为提供者用例.包含用例提供功能给客户用例。通俗一点讲就是把一个复杂的事物,拆分成几部分,整体和部分之间用包含关系。

2)扩展关系:是把新行为插入到已有用例中的方法.基础用例提供了一组扩展点.这些扩展点可以添加新的行为.而扩展用例提供了一组插入片段.这些片段能插入到基础用例的扩展点。将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中,做基事件之后,我可能做扩展事件,也可能不做(在特殊情况下需要的新功能,扩展点就是特殊情况)。通俗一点讲就是一个操作,可以有多种选择方式,每种方式都可以实现此功能。多个实现和功能接口之间是一种扩展关系。

3)泛化关系:用例的泛化关系与类的泛化关系相似,即在用例泛化中,子用例表示父用例的特殊形式,子用例从父用例继承了行为和属性,还可以添加行为和属性,改变已继承的行为。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。

 

包含以及扩展过程与泛化过程类似

共性:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量

但三者对用例关系的优化侧重点是不同的。如下:
          ●泛化侧重表示子用例间的互斥性;
          ●包含侧重表示被包含用例对Actor提供服务的间接性;
          ●扩展侧重表示扩展用例的触发不定性;详述如下:

 既然用例是系统提供服务的UML表述,那么服务这个过程在所有用例场景中是必然发生的,但发生按照发生条件可分为如下两种情况:         

⒈无条件发生:肯定发生的;         

⒉有条件发生:未必发生,发生与否取决于系统状态;

         因此,针对用例的三种关系结合系统状态考虑,泛化与包含用例属于无条件发生的用例,而扩展属于有条件发生的用例。进一步,用例的存在是为Actor提供服 务,但用例提供服务的方式可分为间接和直接两种,依据于此,泛化中的子用例提供的是直接服务,而包含中的被包含用例提供的是间接服务。同样,扩展用例提供的也是直接服务,但扩展用例的发生是有条件的。

 另外一点需要提及的是:泛化中的子用例和扩展中的扩展用例均可以作为基本用例事件的备选择流而存在。

 

备注:默认情况下visio没有include关系,可以通过一下方式来添加,选择工具栏uml,再选择构造型,添加如图所示的一行,点选确定。此后将可以引用此include关系。

拖一个扩展图例,然后双击,如下图,构造型中就多出一个list include,选择include,点选确定。此时右侧扩展图例上的文字将变为include.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26506.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用visio画UML类图

继承关系 继承关系是最容易理解的关系。画成图的话就像下面这样。面向对象的说法就是is-a关系。也就是说Class2 is a Class1。在C中我们说Class2是Class1的派生类,或者说Class1是Class2的基类。 聚集和组成 从容易理解的关系说起.经常有一个类是另一个类的数据成员的…

程序员画图利器——Visio

前两天老师让我们画图,可是给我愁坏了,当时老师给我们的是Visio2003,那个软件现在看来真的是好老一套的东西(可能老师用的时间比较长了吧),后来我自己又把Visio2003卸载掉,换成了Visio2016&…

如何用Visio2013画状态转换图

今天突然需要用Visio画状态转换图了……首先声明,用简单图形来画不难,必应可以搜到那种方法,这里不赘述。下面我说说我的办法,首先,状态转换图需要圆角矩形、实心圆、同心圆、箭头。经过一番寻找,在更多图形…

使用Visio画各种可视化的流程图之PERT图和日历图

一、PERT图 PETR图:用于项目或任务管理的PERT图表、日程、议程、任务分解结构、关键路径法、项目周期、目标设定和日程表。 步骤如下: 1.点击新建->类别-日程安排-PERT-创建。 2.拖动PERT1、PERT2到绘图页,并编辑任务属性。 3.根据任务之间的关系进行连接。 4…

比visio简单好用的绘图工具AxGlyph

文章目录 1 绘图效果例子1例子2 2 软件界面3 操作说明3.1 设置快捷键3.2 创建一个二维图形3.3 创建一个长方体3.4 设置两个物体的位置关系3.5 添加文字说明3.6 设置图层 4 绘制一个简单的流程图步骤1:创建框步骤2:去除颜色(个人喜好)步骤3:输…

一款性价比远超visio的画图小工具-Dia Diagram Editor(开源-跨平台)

前言 首先,流程图界的扛把子Visio,其功能方面是毋庸置疑的; 对比visodia安装包大小几百兆20兆以内安装后大小大70兆以内跨平台微软套装跨平台用户体验非常好可以用 但是问题,dia小呀,而且基本功能完全满足我的需求&…

使用Visio—UML画类图

在一个VS工程中,由于类的个数较多,而参数描述不是特别清晰。若此工程的生命周期较长,则有必要对工程进行完整分析,给出完整的文档。需要画出类图,并对每个成员进行详细描述。 一、画出类图 在VIsio中,新建软…

用Visio画软件(模块)功能图

最开始自己也不会画,画了好久也没画出自己心中所想的,比如下图这样的: 在形状框中搜索“方块”,其中的图形有“框”和“多树枝直角”这两个组件 从左边的“框”拖动到右边的幕布上,自己调整大小,双击编辑文…

用ChatGPT创作论文

ChatGPT 无法创作长文,但是可以借助他可以理解上下文的能力,通过引导,使得他一步步创造出内容 下文以写一篇《形势与政策》论文为例 我会向你一步步展示如何引导 chatGPT 一步步写出完整的文本 创作地址:https://aipro.boxly.cn/ 第一步:…

原腾讯QQ技术总监、T13专家,黄希彤被“离职”,原因竟是……

曾经风光无限的互联网“淘金地”,为无数技术人提供了造梦机会,也带领着一批程序员走向致富之路。然而,如今国内各大厂也在经历着“瘦身”运动。 据 TechWeb 消息,近日,腾讯前端开发领袖、原腾讯 QQ 空间技术总监、T13…

技术博客--Go语言调用ChatGPT AI接口

文章目录 一、技术概述二、技术详述Go语言调用ChatGPT接口流程图2.1 导入必要的包2.2 构造请求体2.3 发送HTTP请求2.4 处理响应的数据2.5 提取结果2.6 错误处理 三、遇到的问题和解决过程四、总结五、参考文献 一、技术概述 关于使用Go语言调用ChatGPT API接口,在我…

5分钟掌握利用pycharm插件BitoAI 实现chatgpt自动编写代码

一、BitoAI 简介 最近出现了一款新型编程助手BitoAI。今天的主要内容就是给大家介绍它,号称 IDE 的“瑞士军刀”,可以提升开发 10 倍的效率。 简言之它的强大之处就是可以通过类似于ChatGPT对话的方式来编写代码,分析代码,生成代…

和chatgpt学架构03-引入UI框架(elment-plus)

目录 1 项目目录及文件的具体作用1.1 App.vue1.2 main.js的作用1.3 main.js什么时候被调用1.4 npm run serve干了什么事情1.5 package.json的作用 2 安装UI框架2.1 安装命令2.2 全局引入 3 启动工程总结 我们已经安装好了我们的vue脚手架,用vscode打开工程目录 要自…

android手机图标 足球球星,盘点六大世界足坛球星logo,贝尔艺术感十足

一名职业足球运动员,能够在赛场上踢出精彩的表现,就可以得到球迷以及球队的认可。那么,要想让那些平时偶尔看球的人记住自己,把他们变成自己的粉丝,就需要一个标志性的事物。进球后的庆祝动作,个人球队号码…

ajax 足球球员年薪,2017年足坛年薪排行榜:C罗梅西并列第一(2200万欧元)

2017年足坛年薪排行榜出炉,C罗与梅西并列第一,年薪都是2200万欧元。两人部分伯仲的实力水平也体现在了年薪之上。而2017年足坛俱乐部平均年薪排名中,曼联以684万欧元居首,巴塞罗那和曼城分别以670万欧元和643万欧元紧随其后&#…

大数据告诉你梅西如何制霸足坛!

北京时间今天凌晨上演的欧冠决赛,巴萨以3比1击败尤文,赢得历史上第5座欧冠奖杯。虽然比赛中梅西没有取得进球,不过梅西的发挥依然获得《每日邮报》赛后为球员打分中的最高分。2004年梅西出道以来,素以步频逆天,反应快,球商高,过你没商量著称,他的天赋之高甚至掩盖了人们…

世界足坛的一些著名德比

可能很多朋友都听说过足球比赛中的"德比",什么"西班牙国家德比"、"英格兰默西赛德郡德比"、"德甲鲁尔区德比"等等,"德比"到底是什么? 历史相传,小城德比郡(Derby)曾是英国举办…

足坛转会闲聊

最近工作太紧张,上周有三天都12点之后到的家,生活和工作,还是要尽量平衡,但这往往不现实,尽管有困难,还是要朝着这个方向努力。 今儿闲扯一下,谈谈世界足坛的转会。欧洲五大联赛的顶级球会&…

重新定义座舱智能化的下半场?谁能抓住弯道超车的窗口期

2020年,高通8155上车之前,行业的定义更多是4G联网互联网生态(智能手机的复刻),以斑马智行为代表;而随着集成异构计算、高性能AI引擎(8TOPS算力)的高通8155密集上车,驱动行…

一场内容生产的革命 :从PGC、UGC到AIGC

1 概念解读 1.1 什么是PGC? PGC 是指专业生成内容(Professional Generated Content),是由专业的内容创作者或团队进行创作、编辑和发布的内容。PGC创作方式起源于传统媒体时代,如报纸、杂志、电视和电影等&#xff0…