StarUML使用教程.docx
《StarUML使用教程.docx》由会员分享,可在线阅读,更多相关《StarUML使用教程.docx(12页珍藏版)》请在冰豆网上搜索。
![StarUML使用教程.docx](https://file1.bdocx.com/fileroot1/2023-1/25/92f9e6df-76ff-41c6-b4e8-87db4888a76e/92f9e6df-76ff-41c6-b4e8-87db4888a76e1.gif)
StarUML使用教程
StarUML使用说明-指导手册
原著:
StephenWong 翻译:
火猴
1.综述
StarUML是一种生成类图和其他类型的统一建模语言(UML)图表的工具。
这是一个用Java语言描述的创建类图的简明手册。
StarUML(简称SU),是一种创建UML类图,并能够自动生成Java的“stubcode〞 的工具。
SU也可以做JAVA逆向工程,以产生相应的UML图表。
在本教程中,我们将使用SU设计一个pizza饼。
执行如下步骤,可以创建如下面所示的UML图。
SU可以生成反映类结构的代码,而不是任何对象的具体行动。
因此,在使用SU创建图表后,你会为此stubcode添加剩余的功能性代码,填写每种方法本来应该做的事。
2.安装
首先,我们必须先安装将要使用的软件。
StarUML ,是一个开放源码软件, 遵循GPL协议许可〔GNU公共许可证〕 ,并免费提供下载。
3.启动
安装以后就可以启动该程序。
4.添加新工程
然后,一个名叫:
NewProjectByApproach的对话框会弹出。
选择“EmptyProject〞并且按下"确定"。
这里建议你不要勾选"设置为默认的做法" 复选框。
5.选择模块
在右边的“ModelExplorer〞框中选定“Untitled〞模块。
6.添加模块
通过“Model〞主菜单,或右击选定的模型,可以"Add/DesignModel"
7.添加类图
通过“Model〞主菜单,或右击选定模型,可以“AddDiagram/ClassDiagram〞:
8.设置profile
通过“Model/Profile...〞菜单去设置工程所需的profile。
这决定了工程所使用的规如此和约定。
一定要包含"Java Porfile"这一项目。
9.保存工程
立即就保存工程,这样在出现问题的时候,您就不会丢失信息。
从“File〞菜单,选择“Save〞 ,并选择一个地方以保存工程。
你的StarUML项目现在应该看起来的是这样的:
10.创造图表
现在,开始真正创造图表,从默认就在屏幕的左边的“Toolbox〞选择“类〞图标,然后左键单击diagram窗口的某处。
这样就使用通用名字创造了一个新的类。
双击,将类改名为Circle。
11.添加属性
右击图中的目标,在弹出菜单中选择“Add〞中的“Attribute〞(被标示为绿色),为其添加一个属性(或者域),填入期望的名字“_radius〞。
● 具体的数据类型,在属性面板〔右下侧的窗口〕 ,由双打字,在"类型"时段。
在窗体右下边的Properties面板中,找到“Type〞输入框,输入double作为_radius属性的类型。
● 类的内部数据〔域/属性〕都是私有的,因为他们是严格由类内部使用的。
所以,在Properties面板中将_radius设置为“私有〞。
12.继续进展设计
重复同样的过程,添加所谓的名字叫做Rectangle的类和double型的私有成员_width和_height。
(下面者段话是使用方面的主意事项,总感觉翻译部太好,九原文搬上来了)Youmaynoticeusingthe"ModelExplorer"ontherightisfastertoaddthese,butdohowevernotethataddingtheclassesandinterfacesthemselvesinthistoolbox(insteadofusingthetoolboxontheleftandclickingonthepalettetocreatetheobject)willnotcreatetheobjectsinthediagram.
13.创造 IShapeinterface
● 从toolbox中,选择“Interface〞,并点击图表的某处。
将其改名为IShape。
创建以后,选中它。
● 在顶部工具栏,选择 “StereotypeDisplay〞 下拉按钮,将值改变为“None〞。
这将改变以往的圆形形状,使其变为成长方形。
还是在顶部工具栏,取消选中"SuppressOperations"。
这将使我们能够看到接口所拥有的方法。
● 向IShape 接口添加返回值为double的getArea方法。
⏹ 可以通过右击interface的图标,在弹出菜单中点击红色的“Operation〞按钮,然后输入getArea。
⏹ 设定返回值类型。
在“ModelExplorer〞中展开IShape节点,右击你刚刚创建的getArea方法,并选择“AddParameter〞。
在“Properties〞框中,将参数的名子变为空,将“DirectionKind〞变为“RETURN〞,将“Type〞变为dboule。
● 将IShape和getArea的IsAbstract属性框打上勾,他们在图标上的名字将变为斜体。
这是UML的标准,表示这是接口或者其他纯虚实体。
14.添加类和接口的关系
● 可以通过从toolbox中选择表示“Realization〞的箭头,并从Circle拖拽向IShape,使Circle实现接口IShape。
重复同样的过程,为Rectangle添加实现关系。
这是添加了Circle 和 Rectangle对于IShape接口的实现关系。
⏹ 如果想使连接线表现为直角的方式,右击连接线,并选择"Format/LineStyle/Rectilinear"菜单。
你通过这种方式,使箭头重叠在一起,可以使你的图看起来更整洁。
15.添加类基于接口的行为
● 由于Circle和Rectangle类都实现了IShape接口,就必须有同样的行为(方法)。
⏹ 在“ModelExplorer〞面板中,复制getArea法(按Ctrl-C或者右键点击并选择Copy菜单〕,并粘贴到Circle和Rectangle类。
⏹ 这些实现了的方法在Circle和Rectangle类中都不是抽象的,而是具体的。
这是因为他们实际上是执行一些特定行为〔例如,为一个圆形和长方形分别计算面积〕 ,所以不要勾选IsAbstract框。
16.你的图现在应该是这样的:
17.添加Pizza类
● 向Pizza添加double型的私有域_price。
● 添加返回double类型的共有操作getPrice。
18.为Pizza类添加IShape 的引用
● 从toolbox中选择"DirectedAssociation"箭头,点击Pizza类,并向IShape拖拽 。
⏹ 选中箭头,在右边的“Properties〞框上,将name一栏改为“has-a〞,“End1.Aggregation〞 一栏改为“AGGREGATE〞(这个图示说明Pizza和shape对象是“聚合“的关系)。
⏹ 将“End2.Name〞一栏改为_shape 。
这样就自动为Pizza添加一个名字为_shape,使用IShape接口的私有域,的所谓_shape型ishape以pizza饼。
⏹ 将“End2.Visibility〞改为私有。
● 为_shape创建一个“获得者〞方法,名字叫做getShape,返回IShape 。
这就是创建一个行为,名字是getShape,返回IShape 。
19.为pizza类添加构造函数
● 为Pizza添加构造函数,右击,在弹出的“Add〞 菜单中选择“Operation〞。
从这里,增加一个普通的带有dboule型price参数和IShape类型shape参数的操作
● 增加一个输入参数,就像之前增加了一个返回型的输出参数一样,你指定的参数的名称,如价格和形状等,以与适当的数据类型。
● 为Circle增加一个带有double型的radius参数的构造函数。
● 为Rectangle增加一个带有double型width和height参数的构造函数。
20.你的图现在应该是这样的:
21.添加Test_Pizza类
为了说明UML类图更多的功能,又增加了一个叫做“Test_Pizza〞的类,它用作测试目的,并使用到Pizza和IShape类。
● 两个类之间的关系有多种形式。
举例来说,一个类可以实例化另一个类,而不是将其作为一个成员。
又或,一类的方法可能需要另一个类作为输入参数,保存一个引用仅仅是为这个方法的执行。
● 通过从toolbox中选择“Dependency〞箭头,从一个类拖向他所以来的类,来添加不通类之间的依赖关系。
在这个例子中,Test_Pizza 依赖于Pizza,Circle和Rectangle类,因为它实例化了它们。
● 从Propertiesbox选择name属性,或者双击图表上的“依赖线〞,可以为依赖关系添加标签。
特别的是,当一类实例化另一个类,我们会把依赖线叫做“instantiates〞。
● 你可以选中并拖动依赖线的标签,以达到更美观的效果。
● 依赖关系不会影响代码生成。
22.你的图现在应该像本文最开始所示。
23.对你的图随意做些修改。
你还可以拖动你的类图,并且使箭头以不通的方式展示(使箭头显示为直线,选择一个箭头,右击它,弹出菜单中选择“LineStyle〞,并选择“Rectilinear〞)。
你一定要体验这个工具,并去了解它。
24.保存项目
在“File〞菜单中,选择“Save〞。
SU的所有资料只有一个单一的项目文件,所以你目前应该只有一个文件生成。
25.导出
将图表导出为其他格式,例如图片等,是非常有用的。
您可以通过选择“File〞菜单的“ExportDiagram〞 ,并且选择适宜的文件类型来执行改操作。
26.生成Javastub代码:
● 点击主菜单的“Tools->Java〞菜单,选择“GenerateCode〞。
● 从对话框中选择你的模块(这里可能Model1),点击“Next〞。
● 为了使你的模块或者图标的所有类都生成stubcode,选择“SelectAll〞然后按“Next〞。
● 选择一个有效的输出目录,“Next〞。
● Inthe"OptionsSetup",besuretocheckboth"GeneratetheDocumentationbyJavaDoc"and"GenerateemptyJavaDoc". Allothercheckboxesshouldbeunchecked. Thenpress"Next".在“OptionsSetup〞 ,请务必选中“GeneratetheDocumentationbyJavaDoc〞,“GenerateemptyJavaDoc〞,所有其他复选框不选中,“Next〞。
● 现在StarUML将从你的图产生代码,点击“Finish〞退出对话框。
● 现在,您可以编辑生成的代码,以增加应用。
27.添加实现代码
现在就开始定义程序实际做的事情,例如,为你图标中的类描述添加实现代码。
● 使用DrJava添加代码,为相关的类,.Java文件添加代码。
代码会和你使用HW02是一样的。
〔注意:
为Test_Pizza些代码,最好由DrJava自动生成,而非手工在StarUML里面创建。
我们这里只是为了说明。
〕
● 记得那IShape的getArea()方法是抽象的,因此没有代码。
● 请您像代码X例一样添加注释。
这种注释是“JavaDoc〞风格的。
关于JavaDoc您将会在随后学到更多。
28.逆向工程
StarUML还可以从现有的Java代码创建一个类图,这被称为“reverseengineering〞,当你想从现有的代码生成图表,或者你修改了SU生成的代码,并且想在图表中反响出来的时候,逆向工程功能就非常有用了。
通过图表或者DrJava这样的文本编辑器去反复工作的过程,称作“round-tripengineering〞。
这也是面向对象变成中的一个根本过程。
● 到主菜单栏中选择“Tools/Java/ReverseEngineer...〞,可以将现有的代码逆向工程。
● 选择Java代码所在的目录,并点击“Add〞或“AddAll〞按钮,将它们包括在逆向工程过程中,然后单击“Next〞 。
● 选择你想将类参加的模块,这里可能是“Model1〞,然后“Next〞。
● 在OptionSetup里面:
⏹ 确认“public〞,“package〞,“protected〞和“private〞是选中的〔这是默认设置〕。
⏹ 同样,在默认情况下,单项选择按钮“CreatethefieldtotheAttribute〞也是选中的。
⏹ 除非你想SU创建其他东西,例如布局很糟糕的包含所有类的图表,不要选中“CreateOverviewDiagram〞框。
⏹ 当你对选项做了检查后,点击“Run〞。
⏹ SUwillnowimporttheclassesintheselectedfilesintoyourmodel. Click"Finish"toexitthedialogwhenitisplete.苏现在进口班,在被选定的文件到你需要的产品型号,点击"完成"退出对话框时,就完成了。
● SU会向你的模块添加导入的类,但不是你的图表。
为了将它添加到您的图,只需要简单地从ModelExplorer拖动它们即可。