问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何利用Visio画UML图类结构图

发布网友 发布时间:2024-08-18 21:42

我来回答

1个回答

热心网友 时间:2024-08-22 17:51

因为类图很直观,所以恐怕C++成员首先接触到的应该就是类图了.在这篇文章中我们要将下面一个在MFC程序中随处可以见到类用UML图表现出来.
class CGraphicObject
{
    CRect m_rectBound;
public:
    BOOL SetRect(CRect rect);
    CRect GetRect();
};
创建类图
在模型资源管理器中选择[Static Model]-[Top Package],点鼠标右键,从弹出菜单中选择[New]-[Static Structure Diagram]即可创建用于制作类结构图的图面了.
准备工作
首先我们遇到的问题是,CRect和BOOL两种类型在Visio数据类型中找不到.所以我们先从追加数据类型开始.为了便于管理我们会先创建MFC数据类型包.
创建数据包
右键点击下图中模型资源管理器的根节点.在弹出菜单中,选择[包]项目.
 
下图是弹出的包属性对话框.点击[New]按钮,在[UML Package]列中输入[MFC Data Types],点击[OK]按钮结束.上图可以看到追加的MFC数据类型包.

追加BOOL数据类型
在[MFC Data Types]项目上点击右键,选择[New]-[Data Type],在弹出的[UML Datatype Property]窗口中的类别窗口中选择[DataType]项目,在名称项目中填写[BOOL],选择[OK]结束.用同样的方法追加CRect类型.
注意:在MFC中CRect是一个类,但是由于我们并不关心CRect的细节,所以把CRect作为简单数据类型来处理.

追加一个类
追加一个类很简单,然后从形状窗口中的[UML Static Sturcture]分类中拖动[Class]对象就可以了.

设定类的详细信息
设定类的详细信息的大部分工作都是同时属性对话框实现的.对于C++程序员来说,需要设定的内容包括类名,数据成员,成员函数.
以开头提到的类为例。
类名
首先在[Categories]窗口中选择[Class]项目,然后在右面的名称栏目中写入类名就可以了.在这一页中我们可以暂时不必在意其他的内容.

如果只是设定类名的话,大可不必用属性对话框.只要在选中类对象后,再在最上面一栏中单击左键,然后在输入就可以了.
添加数据成员
在[Categories]窗口中选择[Attributes]项目,在右面的画面中增加属性。[Attribute]栏目中写入变量名,[Type]是用来选择数据类型的。这里我们选择[MFC DataTypes::CRect]。[Visibility]栏目选择的是这个成员是公共的(public),保护的(protected)还是私有的(private)。这里我们选择[protected].[Multiplicity]一般翻译成多重性,是指,在类中,数据成员的个数。[1]代表在这个类中,有而且只有一个数据成员。[0..1]表示,没有或者有一个。可以在[Init.Value]中输入数据成员的初值。

增加成员函数
在[Category]窗口中选择[Operations]项目,在右面的表格中追加成员函数。在[Visiblility]中选择函数是,共有,保护还是私有的。[Polymorphic]表示函数是否为多态,也就是使否是虚函数。[Scope]表示一个函数是属于实例(instance)还是属于类(classifier),静态函数,也被称为类的成员函数,普通的成员函数也被称为实例的成员函数。所以如过,在这里选中了[classifier],就说明这个函数是静态函数。

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

接下来是设定函数的参数。这个函数只有一个参数rect,但是[Parameter]窗口中却出现了,两个参数。不过通过观察[Kind]列的内容可以知道,第一个参数[SetRect]是函数的返回值。第二个[rect]才是我们想要的。这个参数的[Kind]是[in]表明这个参数是用来向函数传递信息的。如果是用来取得信息的,就选择[out],如果是双方向传递信息的,就选择[inout]。

完成上面的工作以后,点击[OK]按钮两次,回到作图画面。来看看我们的成果吧。

实际的例子工程中的CGraphicObject的UML图可以参照Sample1Vsd.zip.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 为什么快手播放量突然减少了? Visio画UML用例图只需八步轻松实现 快手播放量一直很低是什么原因? 快手播放量突然下降是什么原因? Visio画UML图基本操作及技巧解析 《极限国度》怎么换地图:地图更新:极限国度再现新风貌 要被南昌工程学院的专科入取了,听说这个学校不错,但我只是个专科生,我... 万皙是正规的吗 求一份 花生油工厂平面设计cad 就是流程图和俯视图都可以 6829312@163... ...和高神迹。。90万。。法资2181,体资3856,我该怎么加点, 小气道阻塞如何治疗 d3856次列车途经站点 小气道病变是什么意思 什么叫小气道功能障碍 小气道病变就是哮喘吗 小气道阻塞是哮喘吗 爆裂纹牛皮爆裂纹牛皮概述 你觉得王俊凯长得帅吗 求助:为什么我打开baidu.com会出现别的网站 枸杞粥需要加白糖吗? 快手播放量为什么会低? 烫发药水什么牌子的好?国际烫发药水排行榜10强 铁路12306怎么买学生票介绍_铁路12306怎么买学生票是什么 火花塞电极高度有影响吗 犯罪嫌疑人有哪些情形检察院可决定拘留 人民检察院对于有什么情形的犯罪嫌疑人能决定拘留 哪些情况下检察院能决定刑事拘留? 人民检察院在哪些情形下可以先行拘留犯罪嫌疑人? 如何判断小腿的骨头痛是不是在长高 骨头略疼,肌肉收紧。是不是长高的表现? 因为我发现我这个月直接长高4厘 ... 借喻写人的诗句事什么 欢乐喜剧人160327文松他大姐 欢乐喜剧人有一期,讲的是留守村庄的是哪集? 森田疗法中国式住院森田疗法 第五季欢乐喜剧人冠军是谁 冒险岛2弓箭手升级方法介绍_冒险岛2弓箭手升级方法是什么 套内面积怎么计算方式 买手机被骗店拖延退款手机在手是有三个月了还能退款吗 《欢乐喜剧人》免费观看 广东省历年年普通高校招生本科院校(文、理科类)征集志愿一般最终被哪一...