使用Astah画UML类图经验总结
从学习需求工程与UML开始,就开始接触到Astah这款软件,但是当时完全是为了对UML各种图的了解加深才使用了这款软件。当时画图,都是完全凭借自己想,并没有考虑实际情况,而且画的图都是很简单的,甚至有些图是已经给定的,只要在软件上再画一遍来了解软件的使用。所以当时,对与这款软件并没有很好的使用。在最近进行软件项目管理的时候,需要画类图,我再次使用了这个软件。由于这次的工程涉及的类很多(和我之前遇到的相比),所以画了比较长的的时间,我也从这个软件中,摸索到了一些我以前没有发现的东西,在此分享给大家。
Astah的简单介绍
首先简单介绍下Astah。Astah在官网http://astah.net/上就直接下载到。进入官网,点击右上角的Downloads如图1所示,就可以看到Astah的各种版本了,其中Community版本是免费使用的,我使用的就是这个版本。如果你是个学生也可以Astah for Student,但是需要申请,而且需要Academic Email Address(学术邮箱),我个人认为比较麻烦。但是Community版本版本有些功能是不能用的,这在画图中有时候会很麻烦。 Astah的安装也很简单,就是最基本的软件安装方法。
图1 Astah官网界面
安装完成后就可以使用了,点击进入Astah,最开始出现的界面如图2所示,这里有各种可供选择的图,可以根据自己的需要选择不同的图例。当然你也可以在菜单栏的Diagram中选择要建的图如图3所示。
图2 Astah主界面
图3 Astah主界面上选择Diagram
Astah中画类图
使用上面介绍的两种方法的任意一种进入Class Diagram中的画图界面,如图4所示。
图4 Class Diagram界面
画图的要了解的内容:
1、将鼠标放在图4所示的可选图标上,可以看到该图标代表的意思
2、图标右边带小三角形的可以点击,出现多个备选图标
3、关于表示关系的图标,只有关联的实体被画出之后才能使用
4、选择图标,然后在画图区域点击就可以将想要画的图给显示出来
5、当选择了表关系的图标后,想要取消可以点击箭头,如图4所示。
画图的经验总结
1、在类(class)或接口(interface)中快速添加新的attribute(属性;变量)或者 operation(操作;方法)。
一般情况下添加方法,在绘图区建立一个类或者接口时,将鼠标放在要添加属性或者操作的类或者接口上会发现有一个黄色菱形和绿色矩形出现,如图5,图6所示。点击菱形和绿色矩形会分别添加新的属性和操作。
图5 Class添加属性和操作 图5 interface添加属性和操作
但是这样,如果该类或接口的属性或者方法很多时,每次都要用鼠标来点击这两个按钮,然后再移到刚刚添加的属性或者操作的位置进行编辑,显然是很麻烦的。这个时候其实一个回车键就可以解决这个问题。当现在的属性编辑完确认后(以类为例),这个时候该属性周围有四个圆圈,如图7所示,这个时候按回车键就可以进入下一个属性的编辑,如图8所示。同样添加操作的方法也是一样的。在接口中添加方法和操作的方法也是一样的。
图7 快速添加属性1 图8 快速添加属性2
2、属性类型、方法返回类型、方法参数类型的编辑
在Astah中属性类型、方法返回类型、方法参数类型都是写在属性、方法、方法方法参数的后面,并且使用冒号(:)隔开。如下所示是类图中的一个方法,该方法的返回值是PageResult,访问权限是pubulic的。其中三个参数:queryHelper,pageNo,pageSize的类型分别为QueryHelper,int,int。
+ getPageResult(queryHelper : QueryHelper, pageNo : int, pageSize : int) : PageResult
似乎每个都要自己手动输入,是不是觉得很麻烦。但是我画了几个类之后,还是发现了一些东西。
(1)属性和方法参数的类型默认都是int
(2)方法的返回类型默认为void
(3)方法的访问权限默认为public
(4)属性的访问权限默认为private。
所以如果你的要编写的恰恰就是默认的值的画,其实你可以不用写,系统就能够自动帮你加上。而且你在输入的时候,也会像在eclipse上编写java一样,给你一些提示,你可以直接选择,也可以自己按“Alt+/”看到提示。当然你也可以在下图所示的红色方框区域对属性,操作等进行编辑,我个人认为还不如自己在图形上输入方便。
图9 属性操作编辑区
3、接口和类的互相转换
接口转换为类:将接口上面的<>删去即可;
类转化为接口:选中该类或者将鼠标光标放在该类上,右击选择“Add Stereotype”并在出现的编辑框类输入interface,如图10所示。按回车键完成。
转化完成后会看到右边的树状结构图区域相应的图标也发生了改变。
图10 类转化为接口
4、删除
删除分为“Delete from Model”和“Delete from Diagram”。前者是彻底删除了,图中所有相关部件都会删除,而后者只是删除当前图标。
5、将某一自定义类的类型的参数类型全部改掉
这一部分的意思是,比如你自己写的两个类,比如类1,类2,把本应该是类1类型的参数或属性类型全部写成了类2,而实际上类2是一个无用的类,完全可以删去。这个时候肯定不能将类2直接从模型中删去,直接删去的画,以类2为类型的参数类型都会变成默认值,这时候如果类很多,你再想全部改成类1就会很困难了。
这个问题在professional版本的Astah中就很好解决,点击Edit->search on Diagram查找类2,然后将类型全部改为类1就好了。
但是在Community版本的Astah中并没有这个功能。这个时候想要保证全部都改正过来了,可以点击树状结构区删除类2,如果diagram中还存在类2的话,系统会给出提示,如图11所示不存在的话就可以直接删除了。但是比较麻烦的是还是需要自己人工去寻找这些参数,并改正过来。
图11 图中存在的对象被删除时
注
以上就是我这次在画图中的一些经验,可能有些都东西一时没想起来,后期想起来的画或者有新的发现也会及时的更新。当然这些东西只是我自己总结出来的,可能存在一些问题

使用Astah画UML类图经验总结的更多相关文章
- 四步轻松实现用Visio画UML类图
本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对Visio画UML类图的步骤一定会有所了解. 用Visio画UML类图 对于画类图的工 ...
- Visio画UML类图、序列图 for Java
参考文档: 1.百度搜索: 怎样用Visio 2007画C++类图 连接 https://jingyan.baidu.com/article/9f7e7ec07286e16f281554f7.html ...
- 根据需求设计类并且画UML类图练习
题目如下: // 打车时,可以打专车或者快车.任何车都有车牌号和名称// 不同车价格不同,快车每公里1元,专车每公里2元// 行程开始时,显示车辆信息// 行程结束时,显示打车金额(假定行程就5公里) ...
- 设计模式学习笔记(详细) - 七大原则、UML类图、23种设计模式
目录 设计模式七大原则 UML类图 设计模式分类 单例模式 工厂设计模式 简单工厂模式 工厂方法模式(使用抽象类,多个is-a) 抽象工厂模式(使用接口,多个like-a) 原型模式 建造者模式 适配 ...
- 【转】学习设计模式之前你必须掌握的-看懂UML类图
UML类图是UML(unified modeling language,标准建模语言)五种图示法中静态图的一种-用来描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系如关联.依赖.聚合等,也 ...
- UML类图记忆口诀
UML类图在设计模式书籍中用的比较多,经常忘记,口诀挺重要的,比如我们从小到大,除了乘法口诀.元素周期表等口诀形式的知识,其它的知识都基本忘记了, 所以编写口诀如下 1.三级石 2.见关一 3.零足迹 ...
- 用MyEclipse将java文件转换成UML类图
用MyEclipse将java文件转换成UML类图 参考: 用MyEclipse将java文件转换成UML类图 - 君临天下的博客 - CSDN博客 http://blog.csdn.net/dan ...
- [转载]UML类图总结
前言 类图和序列图是UML中最常用的两种Diagram.我将做详细的总结.在许多书中,或者网站中,在介绍一个系统的子系统的设计时,很多时候,都是给出简单的类图来简述构成子系统的类之间的关系.这足以说明 ...
- UML类图总结
前言 类图和序列图是UML中最常用的两种Diagram.我将做详细的总结.在许多书中,或者网站中,在介绍一个系统的子系统的设计时,很多时候,都是给出简单的类图来简述构成子系统的类之间的关系.这足以说明 ...
随机推荐
- SVN Hook造成SVN提交速度慢的问题
单就个人感情来说,我其实喜欢git.但显然subversion才是更普遍的版本控制管理工具,适合用在团队开发中. 那么,有一个很常见的需求就是把工程师提交的代码,更新到htdocs目录,这时候需要用s ...
- poj 2125 Destroying The Graph 最小割+方案输出
构图思路: 1.将所有顶点v拆成两个点, v1,v2 2.源点S与v1连边,容量为 W- 3.v2与汇点连边,容量为 W+ 4.对图中原边( a, b ), 连边 (a1,b2),容量为正无穷大 则该 ...
- Python中各种括号的区别、用途及使用方法
python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也叫做花括号{ }.其作用也各不相同,分别用来代表不同的python基本内置数据类型. python中的小括号( ):代表 ...
- POJ 1066 - Treasure Hunt - [枚举+判断线段相交]
题目链接:http://poj.org/problem?id=1066 Time Limit: 1000MS Memory Limit: 10000K Description Archeologist ...
- ECNU 3263 - 丽娃河的狼人传说
一定要纪念一下第一道在比赛中自己做出来的贪心. 题目链接:http://acm.ecnu.edu.cn/problem/3263/ Time limit per test: 1.0 seconds T ...
- TensorFlow 的softmax实例理解
对于理论,简单的去看一下百度上的说明,这里直接上实例,帮助理解. # softmax函数,将向量映射到0-1的范围内,P=exp(ax)/(sum(exp(a1x)+exp(a2x)+...)) in ...
- Linux:32/64位程序(应用程序、共享库、内核模块)
摘要: Linux系统区分32/64位,相应地,应用程序.共享库和内核模块也区分32/64位. 本文以Ubuntu系统为例,介绍如何编译和使用32/64位的应用程序.共享库和内核模块. 1. 应用程序 ...
- 图论最短路——dijkstra
下午直接开始dijkstra的堆优化,很简单的这里把书上的原理说一下吧,小心和prim最小生成树的堆优化迷,Dijkstra算法基于贪心思想,它只适用于所有边都是非负数的图.当变长z都是非负数的时候, ...
- css 计算属性 calc的使用
宽度等于父元素的宽度减去16像素 高度等于父元素的高度减去16像素 注意:100%和16px 与减号之间必须有空格,否则高度会失效!!!! .box{ width:calc(100% - 16px ...
- SQL Server 学习博客分享列表(应用式学习 + 深入理解)
SQL Server 学习博客分享列表(应用式学习 + 深入理解) 转自:https://blog.csdn.net/tianjing0805/article/details/75047574 SQL ...