使用StarUML创建类图
使用StarUML创建类图
http://www.flyne.org/article/379
1、综述(What)
StarUML是一种生成类图和其他类型的UML图表的工具。本文是一个使用StarUML创建类图(Java语言描述)的简明手册。
StarUML(简称SU),是一种创建UML类图,并能够自动生成Java的“stub code” 的工具。SU也可以做JAVA逆向工程,以产生相应的UML图表。
在本教程中,我们将使用SU设计一个pizza饼。执行后续步骤,可以创建如下面所示的UML图。SU可以生成反映类结构的代码,而不是任何对象的具体实现。因此,在使用SU创建图表后,你还应该为此stub code添加剩余的功能性代码,填写每种方法本来应该做的事。
2、新建“画布”
1.添加新工程
启动StarUML,然后一个名叫“New Project By Approach”的对话框会弹出,选择“Empty Project”,在右边的“Model Explorer”面板中可以看到新建的“Untitled”工程,工程的属性可以在下方的Properties面板中修改(工程名、作者等)。
2.添加模型
通过“Model”主菜单,或者在Model Explorer面板的工程上右击,依次” Add — Model ”
3.添加类图
通过“Model”主菜单,或右击选定模型,依次“Add Diagram — Class Diagram”。
4.设置profile(UML轮廓)
通过“Model — Profile…”菜单去设置工程所需的profile。这决定了工程所使用的规则和约定。一定要包含”JAVA Porfile”这一项目。
5.保存工程
立即就保存工程,这样在出现问题的时候,您就不会丢失信息。
从“File ”菜单,选择“Save” ,并选择一个地方以保存工程。你的StarUML项目现在应该看起来的是这样的:
3、开始“作画”(How)
1.创造图表
现在,开始真正创造图表,从默认就在屏幕的左边的“Toolbox”面板选择“类”图标,然后左键单击diagram窗口的某处。这样就使用通用名字创造了一个新的类。双击,将类改名为Circle。
2.添加属性
右击图中的目标,在弹出菜单中选择“Add”中的“Attribute”(被标示为绿色),为其添加一个属性(或者域),填入期望的名字“_radius”。
- 在窗体右下边的Properties面板中,找到“Type”输入框,输入double作为_radius属性的类型。
- 类的内部数据(域/属性)都是私有的,因为他们是严格由类内部使用的。所以,在Properties面板中将_radius设置为“私有”。
3.继续进行设计
重复同样的过程,添加名为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.
4.创造 IShape interface
从toolbox中,选择“Interface”,并点击图表的某处。将其改名为IShape。创建以后,选中它。
- 在顶部工具栏,选择 “Stereotype Display” 下拉按钮,将值改变为“None”。这将改变默认的圆形形状,使其变为成长方形。
- 还是在顶部工具栏,取消选中” Suppress Operations “。这将使我们能够看到接口所拥有的方法。
向IShape 接口添加返回值为double的getArea方法。
- 设定返回值类型(☆)。在“Model Explorer”中展开IShape节点,右击你刚刚创建的getArea方法,并选择“Add Parameter”。在“Properties”框中,将参数的名子变为空,将“DirectionKind”变为“RETURN”,将“Type”变为double。
- 将IShape和getArea的IsAbstract属性框打上勾,他们在图标上的名字将变为斜体。这是UML的标准,表示这是接口或者其他抽象实体。
5.添加类和接口的关系
可以通过从toolbox中选择表示“Realization”的箭头,并从Circle拖拽向IShape,使Circle实现接口IShape。重复同样的过程,为Rectangle添加实现关系。这是添加了Circle 和 Rectangle对于IShape接口的实现关系。
小技巧:如果想使连接线表现为直角的方式,右击连接线,并选择” Format — Line Style — Rectilinear”菜单。你通过这种方式,使箭头重叠在一起,可以使你的图看起来更整洁。
6.添加类基于接口的行为
由于Circle和Rectangle类都实现了IShape接口,就必须有同样的行为(方法)。在“Model Explorer”面板中,复制getArea方法(按Ctrl-C或者右键点击并选择Copy菜单),并粘贴到Circle和Rectangle类。
注意:这些实现了的方法在Circle和Rectangle类中都不是抽象的,而是具体的,所以取消勾选IsAbstract框。
现在的类图看起来应该是这样的:
7.添加Pizza类
向Pizza添加double型的私有域_price,添加返回double类型的公有操作getPrice。
8.为Pizza类添加IShape 的引用
从toolbox中选择” DirectedAssociation “箭头,点击Pizza类,并向IShape拖拽 。
- 选中箭头,在右边的“Properties”框上,将name一栏改为“has-a”,“End1.Aggregation” 一栏改为“AGGREGATE”(这个图示说明Pizza和shape对象是“聚合“的关系)。
- 将“End2.Name”一栏改为_shape,将“End2.Visibility”改为私有。这样就自动为Pizza添加一个名字为_shape,使用IShape接口的私有域。
为_shape创建一个“获得者”方法,名字叫做getShape,返回IShape 。这就是创建一个行为,名字是getShape,返回IShape 。
9.添加构造函数
1.为Pizza添加构造函数,右击,在弹出的“Add” 菜单中选择“Operation”。从这里,增加一个普通的带有dboule型price参数和IShape类型shape参数的操作。
2.为Circle增加一个带有double型的radius参数的构造函数。
3.为Rectangle增加一个带有double型width和height参数的构造函数。
你的图现在应该是这样的:
10.添加Test_Pizza类
为了说明UML类图更多的功能,又增加了一个叫做“Test_Pizza”的类,它用作测试目的,并使用到Pizza和IShape类。
- 通过从toolbox中选择“Dependency”箭头,从一个类拖向他所以来的类,来添加不通类之间的依赖关系。在这个例子中, Test_Pizza 依赖于Pizza、Circle和Rectangle类,因为它实例化了它们。
- 从Properties box选择name属性,或者双击图表上的“依赖线”,可以为依赖关系添加标签。特别的是,当一类实例化另一个类,我们会把依赖线叫做“instantiates”。 你可以选中并拖动依赖线的标签,以达到更美观的效果。
- 依赖关系不会影响代码生成。
现在的图应该像本文最开始所示。
11.保存&导出项目
保存:在“File”菜单中,选择“Save”。 SU的所有资料只有一个单一的项目文件,所以你目前应该只有一个文件生成。
导出:将图表导出为其他格式,例如图片等,是非常有用的。您可以通过选择“File”菜单的“Export Diagram” ,并且选择合适的文件类型来执行改操作。
4、StarUML高级应用
1.生成Java stub代码:
在菜单中依次选择“Tools — Java — Generate Code”。
- 从对话框中选择你的模块(这里可能Model1),点击“Next”。
- 为了使你的模块或者图标的所有类都生成stub code,选择“Select All”然后按“Next”。
- 选择一个有效的输出目录,“Next”。
- 在“Options Setup” ,请务必选中“Generate the Documentation by JavaDoc”,“Generate empty JavaDoc”,所有其他复选框不选中,“Next”。
- 现在StarUML将从你的图产生代码,点击“Finish”退出对话框。
- 现在,您可以编辑生成的代码,以增加应用。
2.添加实现代码
正如开头所说的:SU可以生成反映类结构的代码,而不是任何对象的具体行动。因此,在使用SU创建图表后,你还应该为此stub code添加剩余的功能性代码,填写每种方法本来应该做的事。
3.逆向工程
StarUML还可以从现有的Java代码创建一个类图,这被称为“reverse engineering”。当你想从现有的代码生成图表,或者你修改了SU生成的代码,并且想在图表中反应出来的时候,逆向工程功能就非常有用了。
- 到主菜单栏中选择“Tools — Java — Reverse Engineer…”,可以将现有的代码逆向工程。
- 本文固定链接: http://www.flyne.org/article/379
- 转载请注明: 东风化宇 2014年07月31日 于 Flyne 发表
使用StarUML创建类图的更多相关文章
- 如何用Rational rose创建类图
UML中各种图形概要: 图名 对照 说明 用例图 use case diagram 用例图表明系统做什么,与谁交互.用例是系统提供的功能,参与者是系统与谁交互,参与者可以是人.系统或其他实体.一个系统 ...
- 使用StarUML画类图
1.综述(What) StarUML是一种生成类图和其他类型的UML图表的工具. StarUML(简称SU),是一种创建UML类图,并能够自动生成Java的“stub code” 的工具.SU也可以做 ...
- StarUML类图相关——关联、聚合、组合、泛化、依赖、实现
在阅读设计模式相关的书籍,或者其他一些项目.相关博客等等,经常会遇到类图,它对于一个类的信息,如变量.方法及其可见性,类与类(接口)之间的继承关系.依赖关系.聚合关系.组合关系等,都可以比较形象得当地 ...
- 四步轻松实现用Visio画UML类图
本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对Visio画UML类图的步骤一定会有所了解. 用Visio画UML类图 对于画类图的工 ...
- [UML]UML系列——类图Class
相关文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) 一.类图的概念及组成 1.类图的概念 类图是描述类.接 ...
- 类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)
类图的概念 (转) 一.概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图基础上,可以使用状态图.协作图. ...
- 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战
发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...
- powerDesigner创建类及数据模型
1.创建类图 / 2.创建类图的属性 3.创建一个类,这个是创建后的对应关系,可以给其他的地方引用 3.创建类时候的属性 name 和 code 取消关联 4.创建两个类的关系 这里有个科普知识(ht ...
- webpack环境搭建开发环境,JavaScript面向对象的详解,UML类图的使用
PS:因为所有的设计模式都是基于面向对象来完成的,所以在讲解设计模式之前先来过一下面向对象都有哪些知识点 搭建开发环境 初始化npm环境 下载安装nodejs安装即可,nodejs自带npm管理包,然 ...
随机推荐
- Codeforces Round #325 (Div. 1) D. Lizard Era: Beginning
折半搜索,先搜索一半的数字,记录第一个人的值,第二个人.第三个人和第一个人的差值,开个map哈希存一下,然后另一半搜完直接根据差值查找前一半的答案. 代码 #include<cstdio> ...
- paper 4:支持向量机系列一: Maximum Margin Classifier —— 支持向量机简介。
支持向量机即 Support Vector Machine,简称 SVM .我最开始听说这头机器的名号的时候,一种神秘感就油然而生,似乎把 Support 这么一个具体的动作和 Vector 这么一个 ...
- 【GDI+】一些规则多边形分离的问题
在近期的工作中,需要做一样工作:将一些有规则的图形,进行适当的分离,以达到不重叠的问题. 首先组成图形的点都可以是按照逆时针排好序的. 规则的图形可以大致分为三类: A :两个点组成的线 或者 四个点 ...
- 【转】Web UI自动化测试原理
目前市面上有很多Web UI自动化测试框架,比如WatiN, Selinimu,WebDriver,还有VS2010中的Coded UI等等. 这些框架都可以操作Web中的控件,模拟用户输入,点击等 ...
- Delphi中使用@取函数地址的问题(转)
Delphi中使用@取函数地址的问题 例如以下代码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes ...
- Content Delivery Network
Coding Standards & Best Practices 7 Reasons to use a Content Delivery Network CDN公共库汇总
- JavaEE基础(五)
1.Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基 ...
- java用freemarker导出数据到word(含多图片)
一.制作word模版 新建word文档,按照需要设置好字体等各种格式:这里为了显得整齐使用了无边框的表格. 将word文档另存为xml文件(注意不是word xml文档,我吃了这家伙的大亏了) 然后用 ...
- 在chrome浏览器和在IE浏览器中显示的页面样式不一样的解决办法
在IE浏览器中添加 一行代码即可:<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 位 ...
- 使用 MNIST 图像识别数据集
机器学习领域中最迷人的主题之一是图像识别 (IR). 使用红外系统的示例包括使用指纹或视网膜识别的计算机登录程序和机场安全系统的扫描乘客脸寻找某种通缉名单上的个人.MNIST 数据集是可用于实验的简单 ...