关于Star UML
为什么是使用Star UML而不是Visio 2013呢?
以前本人在大学期间使用的Visio 2013来绘制UML的,最近一个星期因为在阅读源码,所以有多学了一门UML绘制工具—Star UML,下面就来聊一聊Star UML相对于Visio 2013有哪些优点:
- Star UML是专注了UML领域,没有其他额外的功能。而Visio 2013是一个大而全的软件,在UML绘制这方面,个人觉得没有Star UML好用。
- Star UML的面板跟Visual Studio差不多,可以很轻松·上手。
- Star UML支持的可用图种类多,分别有类图、用例图、顺序图、顺序图(角色)、协作图、协作图(角色)、状态图、活动图、构建图、部署图、组合结构图。
- 在一个UML工程中,我们更容易、有效地组织管理我们的文件结构,这得益于Star UML引入了模型、子系统、和包这三个概念。
- 支持C#的框架的导入。目前Star UML仅仅是支持古老的C#的框架的导入,这些框架分别是.NET 1.0以及MFC 6.0。导入了这个框架之后,我们可以用比较少工作来创建一个有效的类图。
- 对用一个元素有多种展示方式,在一个Class Diagram中,我们可能只需要展示这个某个我们以及很熟悉的类的名称,而不需要展示这个类的属性、字段以及方法的使用,我们可以让这个类以Texture方式展示。对于一个元素,Star UML支持None、Textual、Iconic、Decoration展示。与此同时,我们还可以选择展示一个方法或属性哪些信息。
有这么多优点,当然也会有确定啊,他相对于Visio 2013来说,他的界面过于古老,和Visio 2013那种风格是不能比较的。与此同时,Star UML的的元素对齐方面也和Visio 2013相差太远。
说了这么多,让我们来看看Star UML是怎么绘制一个类图的。下面是摘录自网上的教程,在这个教程之后,还有其他东西要聊一聊的。
1.综述(What)
Star UML是一种生成类图和其他类型的UML图表的工具。本文是一个使用Star UML创建类图(Java语言描述)的简明手册。
Star UML(简称SU),是一种创建UML类图,并能够自动生成C Sharp的“stub code” 的工具。SU也可以做C Sharp逆向工程,以产生相应的UML图表。
在本教程中,我们将使用SU设计一个pizza饼。执行后续步骤,可以创建如下面所示的UML图。SU可以生成反映类结构的代码,而不是任何对象的具体实现。因此,在使用SU创建图表后,你还应该为此stub code添加剩余的功能性代码,填写每种方法本来应该做的事。
2新建“画布”
2.1 添加新工程
启动StarUML,然后一个名叫“New Project By Approach”的对话框会弹出,选择“Empty Project”,在右边的“Model Explorer”面板中可以看到新建的“Untitled”工程,工程的属性可以在下方的Properties面板中修改(工程名、作者等)。
2.2添加模型
通过“Model”主菜单,或者在Model Explorer面板的工程上右击,依次” Add — Model ”
2.3添加类图
通过“Model”主菜单,或右击选定模型,依次“Add Diagram — Class Diagram”。
2.4设置profile(UML轮廓)
通过“Model — Profile…”菜单去设置工程所需的profile。这决定了工程所使用的规则和约定。一定要包含”JAVA Porfile”这一项目。
2.5保存工程
立即就保存工程,这样在出现问题的时候,您就不会丢失信息。
从“File ”菜单,选择“Save” ,并选择一个地方以保存工程。你的StarUML项目现在应该看起来的是这样的:
3开始“作画”(How)
3.1创造图表
现在,开始真正创造图表,从默认就在屏幕的左边的“Toolbox”面板选择“类”图标,然后左键单击diagram窗口的某处。这样就使用通用名字创造了一个新的类。双击,将类改名为Circle。
3.2添加属性
右击图中的目标,在弹出菜单中选择“Add”中的“Attribute”(被标示为绿色),为其添加一个属性(或者域),填入期望的名字“_radius”。
- 在窗体右下边的Properties面板中,找到“Type”输入框,输入double作为_radius属性的类型。
- 类的内部数据(域/属性)都是私有的,因为他们是严格由类内部使用的。所以,在Properties面板中将_radius设置为“私有”。
3.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.
3.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的标准,表示这是接口或者其他抽象实体。
3.5添加类和接口的关系
可以通过从toolbox中选择表示“Realization”的箭头,并从Circle拖拽向IShape,使Circle实现接口IShape。重复同样的过程,为Rectangle添加实现关系。这是添加了Circle 和 Rectangle对于IShape接口的实现关系。
小技巧:如果想使连接线表现为直角的方式,右击连接线,并选择” Format — Line Style — Rectilinear”菜单。你通过这种方式,使箭头重叠在一起,可以使你的图看起来更整洁。
3.6添加类基于接口的行为
由于Circle和Rectangle类都实现了IShape接口,就必须有同样的行为(方法)。在“Model Explorer”面板中,复制getArea方法(按Ctrl-C或者右键点击并选择Copy菜单),并粘贴到Circle和Rectangle类。
注意:这些实现了的方法在Circle和Rectangle类中都不是抽象的,而是具体的,所以取消勾选IsAbstract框。
现在的类图看起来应该是这样的:
3.7添加Pizza类
向Pizza添加double型的私有域_price,添加返回double类型的公有操作getPrice。
3.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 。
3.9添加构造函数
1.为Pizza添加构造函数,右击,在弹出的“Add” 菜单中选择“Operation”。从这里,增加一个普通的带有dboule型price参数和IShape类型shape参数的操作。
2.为Circle增加一个带有double型的radius参数的构造函数。
3.为Rectangle增加一个带有double型width和height参数的构造函数。
你的图现在应该是这样的:
3.10添加Test_Pizza类
为了说明UML类图更多的功能,又增加了一个叫做“Test_Pizza”的类,它用作测试目的,并使用到Pizza和IShape类。
- 通过从toolbox中选择“Dependency”箭头,从一个类拖向他所以来的类,来添加不通类之间的依赖关系。在这个例子中, Test_Pizza 依赖于Pizza、Circle和Rectangle类,因为它实例化了它们。
- 从Properties box选择name属性,或者双击图表上的“依赖线”,可以为依赖关系添加标签。特别的是,当一类实例化另一个类,我们会把依赖线叫做“instantiates”。 你可以选中并拖动依赖线的标签,以达到更美观的效果。
- 依赖关系不会影响代码生成。
现在的图应该像本文最开始所示。
看完如何绘制一个类图,下面就聊聊我这使用过程中遇到的一些问题:
- 要懂得区分Class和Class Diagram的区别:Class Diagram是图表的意思。在Star UML中,他描述、展示着各种Class、Interface之间的关系。Class和Interface都是我们描述现实世界的类、接口。他们一旦存在模块(Model)中的时候,我们可以通过两种方式来从模块(Model)中删除这个Class或者Interface。第一种是在Class Diagram中选中这个Class,通过Ctrl+Delete来删除,直接通过Delete键的话,只能在该Diagram中删除该Class,并不能从Model中删除该Class。第二种是在Model Explorer中选中这类,然后右击,选择Delete From Model。
- 在输入一些简单的类或者方法的时候,直接在Class Diagram中输入的完整的字符串,会比你去Properties面板中修改参数更方便。比如我在Class Diagram中输入比我在Properties面板中一个一个属性地去改更方便,高效。
3.打开软件的时候,会弹出如下对话框,选择不同的项目类型,其实只是在初始化的时候给你加载的项目文件结构不一样,针对于简单小型的项目,我更倾向于悬着EmptyProject。
参考文档:
http://www.flyne.org/article/379
关于Star UML的更多相关文章
- 轻松学习UML之用例图,时序图
本文主要讲解UML图中的用例图(Use Case Diagram)和时序图(Sequence Diagram)相关内容,如有不足之处,还请指正. 概述 统一建模语言(UML,UnifiedModeli ...
- 轻松学习UML之类图,状态图
本文主要讲解UML图中的类图与状态图相关内容,如有不足之处,还请指正. 概述 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模语言,UML因其简单.统一 ...
- 制作流程图,activity,好不容易找到的
Star UML指导手册 Module by: Stephen Wong 原著:Stephen Wong 翻译:火猴 1. 综述:http://pan.baidu.com/s ...
- StarUML使用简明教程
最近了解到StarUML比较多,所以写一篇教程供大家参考,不足支持,请见谅. StarUML(简称SU),是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具.StarUML是一 ...
- starUML 2.5.1 for mac
http://www.macupdate.com/app/mac/55571/staruml/download 一直在windows下使用 star UML,占用资源少,简洁易用. Mac下也能够用了 ...
- 用eclipse开发需要准备什么?
1.到eclipse的官网上,https://www.eclipse.org/ 下载好eclipse,安装好eclipse,修改eclipse.ini文件,把内存改大点,避免出现内存溢出的情况. [ ...
- Java设计模式(一):设计模式概述、UML图、设计原则
1 设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977年美国著名建筑大师.加利福尼亚大学伯克利分校环境结构 ...
- UML课程复习重点
第一章 一.UML图示建模工具 二.UML--统一建模语言,以图形符号为基础,描述软件模型既简洁又清晰.它不是开发方法,是独立于任何开发方法之外的语言.它用于描述软件系统分析.设计和实施中的各种模型. ...
- UML图中经常用到几种的关系图例
学习这个东西挺奇怪的,时间一长就容易忘记,或者记不清楚.今天看到一些UML图的关系,发现有些出入了,索性就写下来,以后再忘记的时候过来看看. 在UML的类图中,常见的有以下几种关系: 继承(Gener ...
随机推荐
- Git练习1
- js index of()用法
含义: indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置.(工作中常用) 提示和注释: 注释:indexOf() 方法对大小写敏感! 注释:如果要检索的字符串值没有出现,则该方 ...
- 操作iframe的一些方法
//父页面操作iframe里的内容 oInput.onclick=function(){ var oBox = oIframe.contentWindow.document.getElementByI ...
- 项目 06 Bootstrap
项目班 06 Bootstrap 一.介绍 #基于HTML,CSS,JS的简洁灵活的流行前端框架及交互组件集 #为快速WEB开发提供了一套前端工具包,包括布局.网格.表格.按钮.表单.导航.提示等等 ...
- Windows 新增 Sublime Text3 右键快捷方式
Win10 创建 Sublime Text 3 右键快捷方式 Windows + R 输入 regedit 打开注册表编辑器: 依次找到 计算机\HKEY_CLASSES_ROOT\*\shell: ...
- 3Ds Max FTL:Virtual device creation failed.
1.在安装完成并激活3DsMax2017中文版后,启动提示:渲染错误消息:FTL: Virtual device creation failed.(中文译:虚拟设备的创建失败). 2.关闭渲染错误消息 ...
- python右键Edit with IDLE
在windows下试用python,Py文件的右键菜单有个Edit with IDLE,虽然这个ide不是那么功能强大,但是胜在方便.对于脚本语言的一般使用来说是足够了.但是有时候,这个菜单就消失了, ...
- 转 nagios监控oracle运行状况
https://blog.csdn.net/heizistudio/article/details/8638488 nrpe安装脚本 nagios-plugins-1.4.13.tar.gznrpe- ...
- D. Beautiful numbers
题目链接:http://codeforces.com/problemset/problem/55/D D. Beautiful numbers time limit per test 4 second ...
- set<int> 的用法
博客学习:https://blog.csdn.net/yas12345678/article/details/52601454 介绍一下 *max_element(a,a+n) 求取数组最大的元素 ...