⽤Visio画UML图类结构图(基本篇)
因为类图很直观,所以恐怕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图用什么软件画
上⾯的操作,只是设定函数的⼀些基本信息,更详细的信息可以通过选中函数后,点击[属性]按钮,在出现的[UML Operation Properties]窗⼝中设定。⾸先是设定函数的基本信息。和上⾯的窗⼝重复的内容,我们不再说明。我们只说明[Profix]和[Suffix]。如果我们想要返回的类型是指针类型或者是应⽤类型的话,只要在[suffix]中填写[*]或[&]就可以了。
接下来是设定函数的参数。这个函数只有⼀个参数rect,但是[Parameter]窗⼝中却出现了,两个参数。不过通过观察[Kind]列的内容可以知道,第⼀个参数[SetRect]是函数的返回值。第⼆个[rect]才是我们想要的。这个参数的[Kind]是[in]表明这个参数是⽤来向函数传递信息的。如果是⽤来取得信息的,就选择[out],如果是双⽅向传递信息的,就选择[inout]。
完成上⾯的⼯作以后,点击[OK]按钮两次,回到作图画⾯。来看看我们的成果吧。
实际的例⼦⼯程中的CGraphicObject的UML图可以参照Sample1Vsd.zip.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。