一. 前言
工作中,在写文档总结时,需要画类图,有助于理清楚类之间的调用关系和内部组成, Ubuntu下推荐使用StarUML 来画, 如果不知道这个工具,请参考笔者这篇文章下载安装:
当然StarUML这个工具可以画时序图 和 流程图 , 流程图的画法参考 StarUML画流程图
本篇文章主要讲解一下利用此工具来画类图(Class Diagram)
二. 菜单说明
打开之后,默认界面就是画类图, 默认创建了一个untitled
项目, 当然这个可以自定义修改
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。
对单个方法或接口, 或者整个类, 单独设置格式(Format)时的菜单:
三. 画类图
3.1 修改接口显示样式
StarUML默认显示接口为 是一个圆形样式, 通过如下方法可以让它显示关键字和添加接口文件中的方法:
步骤1,让其显示Interface关键字, 把默认的Icon 改成 Lable
步骤2: 可以显示接口中的方法
我在接口本来创建了两个方法operation1 和 operation2, 但不显示出来, 为了让显示
把Suppress Operations 勾选去掉, 上文也介绍过,就是禁止显示方法, 去掉就可以显示了.
修为之后的显示为, 这样子看起来类图就清晰明了.
3.2 创建类
双击,修改类的名字
3.3 添加属性
往类中添加属性Attribute
在右下角出现的属性进行编辑: 变量名, 修饰符(public/private/protected/pakcage), 类型, 默认值
3.4 添加方法
选中类后,右键Add
–>Operation
同样的,在右下角有方法的编辑区域, 可以设置方法的修饰符和名称
3.5 给方法添加参数
继3.4步骤, 高亮在已创建好的方法上面,右键 add-->parameter ,同样可以对参数进行编辑
我们可以设置参数名, 修饰符, 参数类型, 方法参数direction默认为in
3.6 给方法添加返回值
继3.4步骤, 同样高亮在已创建的方法上, 右键 add-->parameter, 如果是返回值的话, 设置如下:
如果添加方法返回值的话,注意三点:
1. name不需要填
2. type根据方法返回的实际类型填写, 可以是Activity, AsyncTask等
3. direction 选择 return
四. 效果图
五. 补充知识点
5.1 类的表示方法
在UML
类图中,类使用包含类名
、属性(field)
和方法(method)
且带有分割线的矩形来表示,比如下图表示一个Student类,它包含name
,age
和address
这3个属性, 以及work方法
代码:
public class Student {
private String name = "张三";
private int age = 18;
private String address = "中国";
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name=name;
}
public void setAge(int age) {
this.age=age;
}
public void work() {
}
}
属性/方法名称前加的加号和减号表示了这个属性/方法的可见性,UML类图中表示可见性的符号有三种:
+
:表示public
-
:表示private
- # : 表示protected
属性的完整表示方式是: 可见性 名称 :类型 [ = 缺省值]
方法的完整表示方式是: 可见性 名称(参数列表) [ :返回类型]
注意:
中括号中的内容表示是可选的, 刚开始画类图建议全部都写上
所以上面java类的UML类图如下:
还有其他的:
_ 下划线表示 static
static 可以修饰属性或者方法,用来表示静态属性或静态方法,被static 修饰的方法只可以在类未实例化时使用。
/ 斜体表示abstract
abstract 只可以修饰方法或类,用来表示抽象方法,该修饰符只能在抽象类中使用,且被修饰的方法不能由该抽象基类实现,必须由其派生类实现。注意抽象类无法实例化。