StarUML使用说明-指导手册

StarUML是一种生成类图和其他类型的统一建模语言(UML)图表的工具。这是一个用Java语言描述的创建类图的简明手册。

StarUML(简称SU),是一种创建UML类图,并能够自动生成Java的“stub code” 的工具。SU也可以做JAVA逆向工程,以产生相应的UML图表。

在本教程中,我们将使用SU设计一个pizza饼。执行下列步骤,可以创建如下面所示的UML图。SU可以生成反映类结构的代码,而不是任何对象的具体行动。因此,在使用SU创建图表后,你会为此stub code添加剩余的功能性代码,填写每种方法本来应该做的事。

 

2.安装

首先,我们必须先安装将要使用的软件。StarUML ,是一个开放源码软件, 遵循GPL协议许可GNU公共许可证) ,并免费提供下载。

3.启动

安装以后就可以启动该程序。

4.添加新工程

然后,一个名叫:New Project By Approach的对话框会弹出。选择“Empty Project”并且按下"确定"。这里建议你不要勾选"设置为默认的做法" 复选框。

5.选择模块

在右边的“Model Explorer”框中选定“Untitled”模块。

6.添加模块

通过“Model”主菜单,或右击选定的模型,可以" Add/Design Model "

7.添加类图

通过“Model”主菜单,或右击选定模型,可以“Add Diagram/Class Diagram”:

8.设置profile

通过“Model/Profile...”菜单去设置工程所需的profile。这决定了工程所使用的规则和约定。一定要包含"JAVA Porfile"这一项目。

9.保存工程

立即就保存工程,这样在出现问题的时候,您就不会丢失信息。

从“File ”菜单,选择“Save” ,并选择一个地方以保存工程。你的StarUML项目现在应该看起来的是这样的:

10.创造图表

现在,开始真正创造图表,从默认就在屏幕的左边的“Toolbox”选择“类”图标,然后左键单击diagram窗口的某处。这样就使用通用名字创造了一个新的类。双击,将类改名为Circle。

11.添加属性

右击图中的目标,在弹出菜单中选择“Add”中的“Attribute”(被标示为绿色),为其添加一个属性(或者域),填入期望的名字“_radius”。

l            具体的数据类型,在属性面板(右下侧的窗口) ,由双打字,在"类型"时段。 在窗体右下边的Properties面板中,找到“Type”输入框,输入double作为_radius属性的类型。

l            类的内部数据(域/属性)都是私有的,因为他们是严格由类内部使用的。所以,在Properties面板中将_radius设置为“私有”。

12.继续进行设计

重复同样的过程,添加所谓的名字叫做Rectangle的类和double型的私有成员_width和_height。 (下面者段话是使用方面的主意事项,总感觉翻译部太好,九原文搬上来了)You may notice using the "Model Explorer" on the right is faster to add these, but do however note that adding the classes and interfaces themselves in this toolbox (instead of using the toolbox on the left and clicking on the palette to create the object) will not create the objects in the diagram.

13.创造 IShape interface

l            从toolbox中,选择“Interface”,并点击图表的某处。将其改名为IShape。创建以后,选中它。

l            在顶部工具栏,选择 “Stereotype Display” 下拉按钮,将值改变为“None”。这将改变以往的圆形形状,使其变为成长方形。

还是在顶部工具栏,取消选中" Suppress Operations "。这将使我们能够看到接口所拥有的方法。

l            向IShape 接口添加返回值为double的getArea方法。

n      可以通过右击interface的图标,在弹出菜单中点击红色的“Operation”按钮,然后输入getArea。

n      设定返回值类型。在“Model Explorer”中展开IShape节点,右击你刚刚创建的getArea方法,并选择“Add Parameter”。在“Properties”框中,将参数的名子变为空,将“DirectionKind”变为“RETURN”,将“Type”变为dboule。

l            将IShape和getArea的IsAbstract属性框打上勾,他们在图标上的名字将变为斜体。这是UML的标准,表示这是接口或者其他纯虚实体。

14.添加类和接口的关系

l            可以通过从toolbox中选择表示“Realization”的箭头,并从Circle拖拽向IShape,使Circle实现接口IShape。重复同样的过程,为Rectangle添加实现关系。这是添加了Circle 和 Rectangle对于IShape接口的实现关系。

n      如果想使连接线表现为直角的方式,右击连接线,并选择" Format/Line Style/Rectilinear"菜单。你通过这种方式,使箭头重叠在一起,可以使你的图看起来更整洁。

15.添加类基于接口的行为

l        由于Circle和Rectangle类都实现了IShape接口,就必须有同样的行为(方法)。

n        在“Model Explorer”面板中,复制getArea法(按Ctrl-C或者右键点击并选择Copy菜单),并粘贴到Circle和Rectangle类。

n        这些实现了的方法在Circle和Rectangle类中都不是抽象的,而是具体的。这是因为他们实际上是执行一些特定行为(例如,为一个圆形和长方形分别计算面积) ,所以不要勾选IsAbstract框。

16.你的图现在应该是这样的:

17.添加Pizza类

l        向Pizza添加double型的私有域_price。

l        添加返回double类型的共有操作getPrice。

18.为Pizza类添加IShape 的引用

l        从toolbox中选择" DirectedAssociation "箭头,点击Pizza类,并向IShape拖拽 。

n        选中箭头,在右边的“Properties”框上,将name一栏改为“has-a”,“End1.Aggregation” 一栏改为“AGGREGATE”(这个图示说明Pizza和shape对象是“聚合“的关系)。

n        将“End2.Name”一栏改为_shape 。这样就自动为Pizza添加一个名字为_shape,使用IShape接口的私有域,的所谓_shape型ishape以pizza饼。

n        将“End2.Visibility”改为私有。

l        为_shape创建一个“获得者”方法,名字叫做getShape,返回IShape 。这就是创建一个行为,名字是getShape,返回IShape。

19.为pizza类添加构造函数

l        为Pizza添加构造函数,右击,在弹出的“Add” 菜单中选择“Operation”。从这里,增加一个普通的带有dboule型price参数和IShape类型shape参数的操作

l        增加一个输入参数,就像之前增加了一个返回型的输出参数一样,你指定的参数的名称,如价格和形状等,以及适当的数据类型。

l        为Circle增加一个带有double型的radius参数的构造函数。

l        为Rectangle增加一个带有double型width和height参数的构造函数。

20.你的图现在应该是这样的:

 

 

21.添加Test_Pizza类

为了说明UML类图更多的功能,又增加了一个叫做“Test_Pizza”的类,它用作测试目的,并使用到Pizza和IShape类。

l        两个类之间的关系有多种形式。举例来说,一个类可以实例化另一个类,而不是将其作为一个成员。又或,一类的方法可能需要另一个类作为输入参数,保留一个引用仅仅是为这个方法的执行。

l        通过从toolbox中选择“Dependency”箭头,从一个类拖向他所以来的类,来添加不通类之间的依赖关系。在这个例子中,Test_Pizza 依赖于Pizza,Circle和Rectangle类,因为它实例化了它们。

l        从Properties box选择name属性,或者双击图表上的“依赖线”,可以为依赖关系添加标签。特别的是,当一类实例化另一个类,我们会把依赖线叫做“instantiates”。

l        你可以选中并拖动依赖线的标签,以达到更美观的效果。

l        依赖关系不会影响代码生成。

22.你的图现在应该像本文最开始所示。

23.对你的图随意做些修改。

你还可以拖动你的类图,并且使箭头以不通的方式展示(使箭头显示为直线,选择一个箭头,右击它,弹出菜单中选择“Line Style”,并选择“Rectilinear” )。你一定要体验这个工具,并去了解它。

24.保存项目

在“File”菜单中,选择“Save”。 SU的所有资料只有一个单一的项目文件,所以你目前应该只有一个文件生成。

25.导出

将图表导出为其他格式,例如图片等,是非常有用的。您可以通过选择“File”菜单的“Export Diagram” ,并且选择合适的文件类型来执行改操作。

26.生成Java stub代码:

l        点击主菜单的“Tools->Java”菜单,选择“Generate Code”。

l        从对话框中选择你的模块(这里可能Model1),点击“Next”。

l        为了使你的模块或者图标的所有类都生成stub code,选择“Select All”然后按“Next”。

l        选择一个有效的输出目录,“Next”。

l        In the "Options Setup", be sure to check both "Generate the Documentation by JavaDoc" and "Generate empty JavaDoc".  All other checkboxes should be unchecked.  Then press "Next".在“Options Setup” ,请务必选中“Generate the Documentation by JavaDoc”,“Generate empty JavaDoc”,所有其他复选框不选中,“Next”。

l        现在StarUML将从你的图产生代码,点击“Finish”退出对话框。

l        现在,您可以编辑生成的代码,以增加应用。

27.添加实现代码

现在就开始定义程序实际做的事情,例如,为你图标中的类描述添加实现代码。

l        使用DrJava添加代码,为相关的类,.Java文件添加代码。  代码会和你使用HW02是一样的。(注意:为Test_Pizza些代码,最好由DrJava自动生成,而非手工在StarUML里面创建。我们这里只是为了说明。)

l        记得那IShape的getArea()方法是抽象的,因此没有代码。

l        请您像代码范例一样添加注释。这种注释是“JavaDoc”风格的。 关于JavaDoc您将会在随后学到更多。

28.逆向工程

StarUML还可以从现有的Java代码创建一个类图,这被称为“reverse engineering”,当你想从现有的代码生成图表,或者你修改了SU生成的代码,并且想在图表中反应出来的时候,逆向工程功能就非常有用了。通过图表或者DrJava这样的文本编辑器去反复工作的过程,称作“round-trip engineering”。这也是面向对象变成中的一个基本过程。

l        到主菜单栏中选择“Tools/Java/Reverse Engineer...”,可以将现有的代码逆向工程。

l        选择Java代码所在的目录,并点击“Add”或“Add All”按钮,将它们包括在逆向工程过程中,然后单击“Next” 。

l        选择你想将类加入的模块,这里可能是“Model1”,然后“Next”。

l        在Option Setup里面:

n        确认“public”,“package”,“protected”和“private”是选中的(这是默认设置)。

n        同样,在默认情况下,单选按钮“Create the field to the Attribute”也是选中的。

n        除非你想SU创建其他东西,例如布局很糟糕的包含所有类的图表,不要选中“Create Overview Diagram”框。

n        当你对选项做了检查后,点击“Run”。

n        SU will now import the classes in the selected files into your model.   Click "Finish" to exit the dialog when it is complete.苏现在进口班,在被选定的文件到你需要的产品型号,点击"完成"退出对话框时,就完成了。

l        SU会向你的模块添加导入的类,但不是你的图表。为了将它添加到您的图,只需要简单地从Model Explorer拖动它们即可。

已标记关键词 清除标记
相关推荐
<p> <span style="color:#4d4d4d;">当前课程中博客项目的实战源码是我在 GitHub上开源项目 My-Blog,目前已有 2000 多个 star:</span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdnimg.cn/202103310649344285.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;">本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 个人博客项目功能的讲解,<span style="color:#565656;">通过本课程的学习,不仅仅让你掌握基本的 Spring Boot 开发能力以及 Spring Boot 项目的大部分开发使用场景,同时帮你提前甄别和处理掉将要遇到的技术难点,认真学完这个课程后,你将会对 Spring Boot 有更加深入而全面的了解,同时你也会得到一个大家都在使用的博客系统源码,你可以根据自己的需求和想法进行改造,也可以直接使用它来作为自己的个人网站,这个课程一定会给你带来巨大的收获。</span></span> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"> </span></span> </p> <p> <span style="color:#e53333;"><span style="color:#e53333;"><strong>课程特色</strong></span></span> </p> <p> <span style="color:#e53333;"><span style="color:#e53333;"><strong> </strong></span></span> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"> </span></span> </p> <ol> <li> <span style="color:#565656;">课程内容紧贴 Spring Boot 技术栈,涵盖大部分 Spring Boot 使用场景。</span> </li> <li> <span style="color:#565656;">开发教程详细完整、文档资源齐全、实验过程循序渐进简单明了。</span> </li> <li> <span style="color:#565656;">实践项目页面美观且实用,交互效果完美。</span> </li> <li> <span style="color:#565656;">包含从零搭建项目、以及完整的后台管理系统和博客展示系统两个系统的功能开发流程。</span> </li> <li> <span style="color:#565656;">技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,对于提升你的市场竞争力有一定的帮助。</span> </li> </ol> <p> <strong>实战项目预览</strong> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"><span style="color:#e53333;"><strong> </strong></span></span></span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150303066258.png" alt="" /><br /> </span> </p> <p>   </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150305396930.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150305528842.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150306056323.png" alt="" /><br /> </span> </p>
简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB的实现 ,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密   Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。   设定字符串为“张三,你好,我是李四”   产生张三的密钥对(keyPairZhang)   张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节   通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥   Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥。 Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输   Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了易用的一键式设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。在常规修复过程中,程序还会自动检测DirectX加速状态,在异常时给予用户相应提示。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V4.0版分为标准版、增强版以及在线修复版。所有版本都支持修复DirectX的功能,而增强版则额外支持修复c++的功能。在线修复版功能与标准版相同,但其所需的数据包需要在修复时自动下载。各个版本之间,主程序完全相同,只是其配套使用的数据包不同。因此,标准版和在线修复版可以通过补全扩展包的形式成为增强版。本程序自V3.5版起,自带扩展功能。只要在主界面的“工具”菜单下打开“选项”对话框,找到“扩展”标签,点击其中的“开始扩展”按钮即可。扩展过程需要Internet连接,扩展成功后新的数据包可自动生效。扩展用时根据网络速度不同而不同,最快仅需数秒,最慢需要数分钟,烦请耐心等待。如扩展失败,可点击“扩展”界面左上角小锁图标切换为加密连接,即可很大程度上避免因防火墙或其他原因导致的连接失败。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有更新系统c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。除常规修复外,新版程序还支持C++强力修复功能。当常规修复无效时,可以到本程序的选项界面内开启强力修复功能,可大幅提高修复成功率。请注意,请仅在常规修复无效时再使用此功能。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 新版程序支持命令行运行模式。在命令行中调用本程序,可以在路径后直接添加命令进行相应的设置。常见的命令有7类,分别是设置语言的命令、设置窗口模式的命令,设置安全级别的命令、开启强力修复的命令、设置c++修复模式的命令、控制Direct加速的命令、显示版权信息的命令。具体命令名称可以通过“/help”或“/?”进行查询。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了7项高级功能。点击"常规”选项卡可以调整程序的基本运行情况,包括日志记录、安全级别控制、调试模式开启等。只有开启调试模式后才能在C
<p> <strong><span style="background-color:#FFFFFF;color:#E53333;font-size:24px;">本页面购买不发书!!!仅为视频课购买!!!</span></strong> </p> <p> <strong><span style="color:#E53333;font-size:18px;">请务必到</span></strong><a href="https://edu.csdn.net/bundled/detail/49?utm_source=banner"><strong><span style="color:#E53333;font-size:18px;">https://edu.csdn.net/bundled/detail/49</span></strong></a><strong><span style="color:#E53333;font-size:18px;">下单购买课+书。</span></strong> </p> <p> <span style="font-size:14px;">本页面,仅为观看视频页面,如需一并购买图书,请</span><span style="font-size:14px;">务必到</span><a href="https://edu.csdn.net/bundled/detail/49?utm_source=banner"><span style="font-size:14px;">https://edu.csdn.net/bundled/detail/49</span></a><span style="font-size:14px;">下单购买课程+图书!!!</span> </p> <p> <br /> </p> <p> <span style="font-size:14px;">疯狂Python精讲课程覆盖《疯狂Python讲义》全书的主体内容。</span> </p> <span style="font-size:14px;">内容包括Python基本数据类型、Python列表、元组和字典、流程控制、函数式编程、面向对象编程、文件读写、异常控制、数据库编程、并发编程与网络编程、数据可视化分析、Python爬虫等。</span><br /> <span style="font-size:14px;"> 全套课程从Python基础开始介绍,逐步步入当前就业热点。将会带着大家从Python基础语法开始学习,为每个知识点都提供对应的代码实操、代码练习,逐步过渡到文件IO、数据库编程、并发编程、网络编程、数据分 析和网络爬虫等内容,本课程会从小案例起,至爬虫、数据分析案例终、以Python知识体系作为内在逻辑,以Python案例作为学习方式,最终达到“知行合一”。</span><br />
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页