startUML简单使用教程
最近在startUML上画图搞得我一个头两个大,找了一些比较实用的小方法分享给大家。
类图是可视化地表现类的属性和方法,以及类与类之间的关系。
1、类
a、类
普通实体类,它有对应的属性和方法:

双击类名,会弹出一些控制按钮:

右边区域,各个图标的含义依次是:
增加类的属性、增加类的操作(方法)、添加模板类类型参数、添加reception、添加子类、添加父类、添加已有的接口、添加需要的接口、
添加关联、添加聚合、添加组合、添加端口、添加部件。
(1) 添加属性

(2) 修改属性的属性
属性的属性设置:

stereotype: 属性描述,类图上的表现是会在属性名的前面加上<<>>,中间插入属性描述;

isstatic:表明该属性是否是静态属性,如果勾选了,属性下面会出现下划线;

isleaf:表明该属性是否是叶子属性,通俗理解是否是final属性,勾选之后,类图不会发生变化;
type:表明属性的类型,int、long等等,如果填写,会在属性名后面出现“:类型名”;

multiplicity:这个代表该类实例与其他类实例连接时所需要的数量范围,是一个可编辑的下拉框,可以是具体数字,也可以是一个区间,比如0..1代表着是0到1个,* 代表着无数个。

如果填写,会在属性后面增加“[]”,中间插入填写的值:

isReadOnly:代表该字段是否是只读字段,一般表示属性在对象创建的时候赋值,后续不再改变的变量,填写之后,会在图上增加{ReadOnly};

isOrdered:说明属性是可排序的,和multiplicity联用,代表着与其他实例连接时,该属性已排序,在图中表现为{ordered};

isUnique:说明属性是互斥性,和multiplicity联用,代表着与其他实例连接时,属性对象不会重复,在途中表现为{unique};

defaultValue:默认值
isDerived:代表该属性值是否是由自己运算出来,或者是由外界来设置,一般在编码中表现为一个setXXX方法,暴露给外面,让外面的对象设置该属性;
在类图中的表现为“/”,放在属性名前面;

aggregation:代表属性和类的关系,有三个选择:

所代表的意思:

shared 代表着这个属性对于类来说可有可无,属性值为NULL,对象也属于正常对象;
composite 代表着这个属性值一定得存在,就像 飞机(类)和机翼(属性),飞机离不开机翼,如果没有机翼,飞机就不能飞了,就不叫飞机了,顶多在地上跑,一辆大号的汽车而已。
这个属性设置,在途中没有表现。
isID:代表这个属性是否是这个类对象的唯一标识,在图中的表现为{id}:

(3) 添加方法

(4) 修改方法的属性
方法的属性也很丰富,只描述与属性不一样的属性设置:

raisedExceptions:表示方法抛出的异常,需要新创建一个异常类:

然后点击搜索按钮,会弹出一个对话框:

点击 add,选择刚才创建的异常类:

如果有多个,还可以调整顺序,调整完之后,点击close,此时在属性设置那里会出现:

添加之后,类图不会发生变化。
concurrency:代表这个属性的并发性,有是三个选项:

代表的意思:

修改之后,类图不会发生变化。
isQuery:代表该方法是否是查询方法,如果是的话,在类图上的表现是添加{query}:

isAbstract:标识该方法是否是抽象方法,如果选择是,在类图中的表现是所有的字都是斜的:

(5) 设置方法的参数
选中方法,右键,选择add->parameter;
在model explorer里会看到多了一个Parameter1:

选中它,修改它的两个属性:type(返回值的类型)、direction(设置返回值)。
direction设置成 return,type设置成需要的类型:

在类图上的表现为:在参数括号之后出现 “:返回类型”。

(6) 设置方法的参数
与设置返回值类似,但direction,调整为 in,并且name也要设置:

设置后的表现:

(7) 修改属性和方法的访问权限
属性和方法都可以通过左边的
控制访问权限。


(8) 添加类描述
用一句话描述这个类是什么类,用来干嘛的,目的是让读者能清晰准确地了解这个类,在类图的属性里添加。

添加这个之后,类名上面会出现<<>>包围的类描述。

(9) 修改类的访问权限
类的访问权限同样也具有四种,但是选择了之后,在图形上没有任何显示效果,但在后面做转化的时候(转化成java代码)会体现出来。

b、抽象类
抽象类是在工具栏里是没有的,要通过设置普通类的抽象属性来设置。

选中之后,抽象类的类名会变成斜的。

c、final 类
final类代表着类无法被继承,可以通过勾选类属性中的 isFinalSpecialization和isLeaf来表明,前者是为final类设置的,后者的意思是 是否是叶子类,也就是final类,意义是一样的,不过推荐使用前者,后者表意没有前者好。
设置isFinalSpecialization之后,类图上是没有变化的:

设置了isleaf之后,类图会发生变化

d、活动类
类分为活动类和被动类,活动类表示一个类能主动启动一个流程,而被动类是无法主动启动,只能被调用。
可以在类图属性里设置;

设置之后,会发现类图左右边线变成了两条。

e、接口类
可以使用Interface图形。

它也能像类一样,添加方法,添加的操作与类一致。

2、类之间的关系
a、内部类
一个类是另一个类的内部类。
新建两个类;

将”机翼”类拖动到”飞机”里去;

在model explorer 里,将”机翼”拖动到”飞机里去”。

b、继承关系
一个类继承于另一个类,两个类是父子关系;
在图中的表现是 两个类用箭头连起来;
箭头是空心的三角形,由子类指向父类。

c、实现
一个类实现一个接口;
在途中的表现是 两个类用箭头连接;
箭头是 实线,但在工具栏里,是一个虚线空心箭头,注意区分。

d、组合
A类要想完成工作,必须要B、C类参与,B和C在A类中表现形式是 定义 B类和C类类型的成员变量,A类与B、C类是强关联;
在途中的表现形式是A的类图分别与B、C类的类图用箭头连接起来;
箭头样式:带实心菱形头的实线箭头。

组合的数量关系是指在组合的时候,组合两方进行一次组合各需要的数量。
选择箭头,设置属性:


分别设置 end1.multiplicity 和 end2.multiplicity ,在途中的表现形式:

e、聚合
聚合是一个特殊的关联关系,它体现的是一个多个类可以聚合在一起,组成一个整体,比如说航母、驱逐舰、护卫舰组成一个航母战斗群,其中航母是核心,航母与驱逐舰、护卫舰之间的关系就是聚合关系;
聚合关系由箭头连起来;
箭头样式:带空心菱形头的实线箭头。

f、依赖
依赖是非常弱的一种关联,A类要执行某种动作,需要B类来触发,那么A类依赖于B类,比如说电脑要工作,依赖于人的操作,那么电脑依赖于人,但是电脑和人都是独立存在的个体;
依赖同样是用箭头连起来;
箭头样式:虚线箭头,被依赖方指向依赖方。

总结:组合、聚合、依赖,这三种关联关系较为相似,可以按下面的特点区分开来:
A = B + C : A与B的关系就是组合,A包含B,强关联;
A + B = C : A 和 B 的关系是聚合,A和B可以一起组成C,中等关联程度;
A * B = C ,A * D = E : A 和 B、A和D的关系是依赖关系,A要完成C,需要B的协助,A要完成E,需要D,弱关系,与聚合关系的不同在于,聚合中 A和B是C的一部分,C包含A和B;而依赖中 C不包含B、A,是A经过B的处理之后得到的。
转载自https://www.cnblogs.com/jimmyai/p/star_uml_class.html
startUML简单使用教程的更多相关文章
- OpenMP的简单使用教程
转自:http://binglispace.com/2015/01/09/openmp-intro/ OpenMP的简单使用教程 今天有幸参加了一个XSEDE OpenMP的workshop讲座,真是 ...
- 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...
- knockout简单实用教程3
在之前的文章里面介绍了一些KO的基本用法.包括基本的绑定方式,基本的ko的绑定语法包括text绑定,html绑定等等(如有不明请参照上两篇文章),下面呢介绍一下关于ko的其他方面的知识.包括比较特殊绑 ...
- GitHub这么火,程序员你不学学吗? 超简单入门教程 【转载】
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub. 本文章由做全栈攻城狮-写代码也要读书,爱全栈,更爱生活.原创.如有转载,请注明出处. GitHub是什么? GitHub首先是个分布式 ...
- sea.js简单使用教程
sea.js简单使用教程 下载sea.js, 并引入 官网: http://seajs.org/ github : https://github.com/seajs/seajs 将sea.js导入项目 ...
- vim简单使用教程【转】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- 简单脱壳教程笔记(2)---手脱UPX壳(1)
本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记. ximo早期发的脱壳基础视频教程 下载地址如下: http://down.52pojie.cn/%E5%90%BE%E7%88%B1%E7% ...
- 【git】git简单使用教程
git的简单使用教程: 1.安装git bash客户端 2.打开git bash,cd到需要存储代码的路径下, 执行:git clone -b deploy ssh://git@gitlab.xxxx ...
- Flyway 简单入门教程
原文地址:Flyway 简单入门教程 博客地址:http://www.extlight.com 一.前言 Flyway 是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式.Flyway 可以 ...
随机推荐
- jvm入门及理解(三)——运行时数据区(程序计数器+本地方法栈)
一.内存与线程 内存: 内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了JAVA在运行过程中内存申请.分配.管理的策略,保证了JVM的 ...
- scala_spark实践4
SparkStreaming中foreachRDD SparkStreaming是流式实时处理数据,就是将数据流按照定义的时间进行分割(就是“批处理”).每一个时间段内处理的都是一个RDD.而Spar ...
- Solr复杂查询一:函数查询
一.简介 Solr的函数可以动态计算每个文档的值,而不是返回在索引阶段对应字段的静态数值集.函数查询是一类特殊的查询,它可以像关键词一样添加到查询中,对所有文档进行匹配并返回它们的函数计算值作为文档得 ...
- mysql 多个属性排序查询
查询 排序(order by) 语法:order by 字段 asc/desc asc 顺序,正序.数值 :递增,字母:自然顺序(a-z) desc 倒序 反序 数值:递减, 字母:自然反序 查询的宗 ...
- Android调用系统设置
最近,弄了一下,调用系统设置的方法,Android4.0的系统,下面的所有设置项,都亲测可以调用.首先调用的方式如下: Intent mintent_setting_time = new Intent ...
- ajax按楼层加载数据
代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- animation-play-state 在 ios 中不生效的解决办法(JS篇)
我们要实现动画的播放和暂停,animation-play-state 在安卓端可以使用,但是在 ios 中不起作用,这时可以使用 js 来实现相同效果. 原理 通过 js 获取当前元素的 transf ...
- 从联想昭阳到MacBook Pro,致我的那些败家玩意——电脑
对于程序员来说,你懂的,电脑就是我们的女朋友,在很多层面上,它都是,打游戏.敲代码,以及看影片. 我第一台电脑是联想的笔记本(昭阳系列),花了 4000 多块买的. 那时候,家里很是缺钱,4000 多 ...
- golang实现并发爬虫二(简单调度器)
上篇文章当中实现了单任务版爬虫. 那么这篇文章就大概说下,如何在上一个版本中进行升级改造,使之成为一个多任务版本的爬虫.加快我们爬取的速度. 话不多说,先看图: 其实呢,实现方法就是加了一个sched ...
- 最简单的懒人springcloud之Eureka(服务注册与发现)
本文开发软件是STS,是eclipse为springboot项目而生的一个软件,用这个软件开发spring的项目版本都会自己对应的,话不多说直接上代码 springboot版本2.1.8.RELEAS ...