草庐IT

UML建模与软件开发设计(三)——UML常用开发工具

云里飞鸟轻轻摇摆 2023-04-05 原文

4.4.UML常用开发工具

常用的UML设计工具有微软Office自带的VisioRational RosePowerDesign以及StarUML。在本文档中,我们使用StarUML来作为类图和时序图的设计工具。

4.4.1.StarUML开发工具的下载与破解

4.4.1.StarUML下载地址

1)普通版本(免费):StarUML免费版_StarUML免费版官方下载[最新版]-下载之家

2V2.7.0_标准版本(推荐):https://www.duote.com/soft/15371.html

4.4.2. V2.7.0_标准版本StarUML的破解

V2.7.0_标准版本比普通版本的StarUML功能更符合,V2.7.0_标准版本StarUML的破解步骤如下所示。

1)找到并打开安装目录下LicenseManagerDomain.js文件;

2)在LicenseManagerDomain.js文件的try前面加上如下代码:

return {

  name:"0xcb",

  product:"StartUML",

  licenseType:"vip",

  quantity:"hello word",

  licenseKey:"later equals never"

};

例如:

 

(3)打开StarUML,Help->Enter License输入license(许可)信息:

Name: StarUML

Licence Key: 8888-000-8888

点击确认即可。例如:

如果提示下面的信息,则表示license(许可)注册okV2.7.0版本的StarUML破解成功:

4.4.2.StarUML开发工具的基本使用

4.4.2.1.创建UML项目

(1)创建UML项目

4.4.2.1-1项目的创建

(2)维护项目的名称

4.4.2.1-2项目的命名

(3)创建项目的模块。在新建的模块中,可以用来存储各种图(Diagram),例如类图(Class Diagram)、时序图(Sequence Diagram)等。

4.4.2.1-3项目模块的创建

(4)UML图的创建

右击“模块”->Add Diagram(图),在弹出的模态框中选择并创建相应的图:

4.4.2.1-4图的创建

注意:一个项目对应多个模块,一个模块可以创建多个相同或多种不同的图。

4.4.2.2.类图的基本操作

        类图设计是一种结构模型设计,具体内容如下所示。

4.4.2.2.1.StarUML类图的基本组件

        在类图中,常用设计组件如下所示:

(1)普通版本的类图组件

V_4.4.2.2.1-1普通版本的类图组件

(2)标准版本的类图组件及基本操作

单击选择Class,至工作区域内单机左键,即可创建一个类图。创建类图后,选中类图的某个区域,会显示一堆功能按钮,如下是各个功能按钮的作用:

1. 用来标识Class的可见性(默认为public);

2. 用来添加注释或说明;

3. 增加类的属性;

4. 增加类的操作方法;

5. 增加Reception(接收器,通常是一个方法,可以用来接受一个参数);

6. 增加子类;

7. 增加父类;

8. 添加已有的接口;

9. 添加需要的接口;

10. 添加关联关系类;

11. 添加聚合关系类;

12. 添加组合关系类;

13. 添加端口;

14. 添加部件。

注意:有向关联组件用来表示单向关联、自关联和多重性关联。

4.4.2.2.2.类的UML图示

        在UML中,使用包含类名、属性和操作且带有分割线的长方形来表示类图。例如定义一个Student类,它包含属性id、name和方法getId()、setId()、getName()及setName(),对应的UML类图如下所示:

图4.4.2.2.2-1

        对应的Java代码如下所示。

public class Student {

       

        private Long id;

        private String name;

       

        public Long getId() {

                 return id;

        }

       

        public void setId(Long id) {

                 this.id = id;

        }

       

        public String getName() {

                 return name;

        }

       

        public void setName(String name) {

                 this.name = name;

        }

}

4.4.2.2.3.接口组件

        通过StarUML的接口组件设计接口时,默认情况下是一种棒糖型接口,如下图所示:

        但通常我们希望显示为下图所示的类状接口

        并且默认情况下,为接口新增方法后,接口组件无法显示方法名称,如果希望修改接口的样式并显示方法名称,那么可以按照如下步骤进行:

修改后的效果如下所示:

4.4.2.2.4.添加类图的属性

1)添加属性

UML规定属性的表示方式如下所示:

[访问修饰符]名称:类型[=默认值]

可以在StarUML中通过如下步骤来完成属性的添加:

图4.4.2.2.4-1

2)设置属性类型

        根据第(1)步操作为类图添加属性后,这时在右侧的“Model Explorer”会显示添加的属性,然后选中该属性->“Properties”->“Type”,手动维护属性的类型:

图4.4.2.2.4-2

3)设置属性的访问修饰符

设置属性的访问修饰符是有必要的,在Java中,访问修饰符包括private(私有)、default(缺省)、protected(受保护的)和public(公共),在UML中分别用符号“-”、“~”(或“*”)、“#”和“+”来表示。但为了体现数据封装的完整性,通常会将属性设置为私有访问修饰符。StarUML设置访问修饰符有以下两种方式:

4.4.2.2.5.添加类图的方法

1)添加方法

UML规定方法的表示方式如下所示:

[访问修饰符]名称([参数1:类型,参数2:类型…])[:返回类型]

可以在StarUML中通过如下步骤来完成方法的添加:

图4.4.2.2.5-1

2)添加方法的入参

Model Explorer->选中方法->单击Properties的Parameters的右侧->在对话框中增加方法的参数:

        选中新增的参数->保持“Visibility”为“public”,并通过“Type”来设置参数类型->修改“DirectionKind”为“IN”:

3)添加方法的返回类型

Model Explorer->选中方法->单击Properties的Parameters的右侧->在对话框中增加方法的参数,点击确认后,再将参数名设置为空, 设置“DirectionKind”为“RETURN”,并通过“Type”来设置返回值类型。

4)显示方法签名

        默认情况下,新增的参数、参数类型等参数列表信息无法显示,需要设置方法的签名为“显示”状态:

5)设置方法的访问修饰符

4.4.2.2.6.生成Java文件

默认情况下,生成Java文件时会提示如下错误信息:

原因在于没有设置UML工程所需的Java profile,profile配置决定了工程所使用的规则和约定,可以通过如下步骤来配置profile:

设置好Java profile后,就可以生成类图对应的Java文件了:

4.4.2.2.6.逆向工程

        StarUML还可以从现有的Java代码创建一个类图,这被称为“reverse engineering”。当你想从现有的代码生成图表,或者你修改了SU生成的代码,并且想在图表中反应出来的时候,逆向工程功能就非常有用了。在StarUML中可通过如下步骤从Java代码逆向生成类图:

4.4.2.2.8.V2.7.0版StarUML的生成Java文件与逆向工程

默认情况下,V2.7.0版StarUML没有自带生成Java文件和逆向工程的功能,需要手动安装相应的Java插件,可通过“Tools”->“Extension Manager”->搜索“Java”在线下载并安装插件:

        单击“Tools”,这时我们就可以看到安装好的Java插件了,单击“Java”来使用相关功能:

4.4.2.3.时序图的基本操作

        时序如图设计是一种行为模型设计(交互设计),具体内容如下所示。

4.4.2.3.1.创建时序图

        通过“Model”-> “Add Diagram”->“Sequence Diagram”完成时序图的创建。

4.4.2.3.2.StarUML时序图的基本组件

4.4.2.3.3.StarUML时序图基本组件的使用

        时序图中包括如下元素:角色,对象,生命线,激活期和消息。下面分别介绍如果在StarUML中创建时序图的元素。

4.4.2.3.3.1.新增角色

        我们注意到,StartUML的时序图设计界面没有执行者角色组件,那么怎么添加角色呢?可按如下步骤进行:

效果如下所示:

4.4.2.3.3.2.新增对象/生命线

4.4.2.3.3.3.快捷增加时序图的元素

        选中时序图的某个元素,元素进入快捷编辑状态,可以很方便地增加时序图的其他元素:

4.4.2.4.删除组件

选中需要删除的组件->Edit->Delete(假删除)或Delete From Model(真删除):

4.4.2.5.修改图形的字体和背景颜色

        选中图形->Format->Font\Fill Color\Line Color来修改图形的字体、背景颜色等:

        对于V_2.7.0.而言,默认情况下图形是没有背景颜色的,因此就可能需要设置图形的背景颜色,而按照上述方法设置图形的背景颜色的话,每创建一个图形,都需要手动设置样式,这是在费劲,那么有没有一种永久性的样式设置方案呢?实际上,我们可以参考如下步骤来修改图形的背景颜色:

        (1)File->Preferences:

(2)General->Fill Color和Line Color:

将Fill Color设置为:#fefed2;将Line Color设置为:#a00000;再次绘图,效果如下所示。

有关UML建模与软件开发设计(三)——UML常用开发工具的更多相关文章

  1. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby-on-rails - 建模收藏夹 - 2

    我希望将Favorite模型添加到我的User和Link模型。业务逻辑用户可以有多个链接(即可以添加多个链接)用户可以收藏多个链接(他们自己的或其他用户的)一个链接可以被多个用户收藏,但只有一个所有者我对如何为这种关联建模以及在模型就位后如何创建用户收藏夹感到困惑?classUser 最佳答案 下面的数据模型怎么样:classUser:destroyhas_many:favorite_links,:through=>:favorites,:source=>:linkendclassLink:destroyhas_many:favor

  4. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  5. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  6. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  7. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  8. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  9. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  10. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

随机推荐