类图是可视化地表现类的属性和方法,以及类与类之间的关系。

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的处理之后得到的。

startuml java 类图_【StarUML】类图相关推荐

  1. arcgis批量出图python代码_【GIS进阶】ArcGIS批量出图_定义出图

    今天的文章是浩哥投稿!!! 下图是我欢呼雀跃的样子~~~~~ 本文亮点: 所有步骤都是用ArcGIS中各种工具和软件操作组合,未使用Arcpy与Python等需要使用代码的工具! 这次的这个批量出图又 ...

  2. java log 封装_工具类之LogUtils

    安卓开发离不开记录log日志,封装了一份简单的日志工具类,具有设置日志总开关,是否写入文件,日志过滤器和自定义标签,锁定打印log的类.函数名及行号,初始化有可以使用init函数也可以使用建造者模式, ...

  3. java 实体类规范_实体类的规范

    1.Boolean类型 1.1.使用Boolean类型,而不是Byte类型 1.2.数据库字段名使用is_开头 1.3.实体类字段名不使用is开头 例子 /** * 是否为新消息 */ @Column ...

  4. java 图片线条_如何在一个图中为不同的图形获得不同的彩色线条?

    Matplotlib默认执行此操作 . 例如 . : import matplotlib.pyplot as plt import numpy as np x = np.arange(10) plt. ...

  5. vue pc端 商品轮播图_轮播图高点击商品图

    轮播图由背景,商品图,文案三大部分组成,其中商品图是轮播图的主体内容,在轮播主图中,能不能通过一张商品图呈现出商品信息或者卖点,是影响点击率高低的重要因素.本期内容,我们将从商品图出发,为大家讲解的轮 ...

  6. twitter如何以图搜图_没有完整图时,如何使用图深度学习?你需要了解流形学习2.0版本...

    原标题:没有完整图时,如何使用图深度学习?你需要了解流形学习版本 流形学习,自 2000 年在著名的科学杂志<Science>被首次提出以来,已成为信息科学领域的研究热点.可能很多人会问, ...

  7. 关于主机的思维导图_思维导图正流行,现在教孩子还不晚(实操篇)

      清华爸+南大妈的育儿思考自留地 点击上方蓝字,即可成功订阅 *作者:小延妈,家有一年级男宝,南京大学新闻系毕业,资深文艺青年,古文爱好者.前几天,在一个"鸡娃"群中,有宝妈分享 ...

  8. 计算机及网络应用基础思维导图_思维导图在生物教学中的应用

    思维导图又叫心智图,是由一个中心向周围有层次的发散的图形,由词汇.图形.线条.编号等构成,应用不同颜色的笔画出各级分支,既是一种思维工具又是一种学习方法.生物学科中含有大量的概念.生物分类.生物特征等 ...

  9. python多个箱线图_箱线图Python

    1) 箱线图,又称箱形图(boxplot)或盒式图,不同于一般的折线图.柱状图或饼图等传统图表,只是数据大小.占比.趋势等等的呈现,其包含一些统计学的均值.分位数.极值等等统计量,因此,该图信息量较大 ...

  10. 4米乘以12米CAD图_设备时序图的绘制方法

    每日一省:你觉得工作上还有哪些需要改进的地方? 在方案说明书中常用C/T来作为设备性能参数,说明设备的生产能力.C/T是指设备完成一个完整动作周期所需要的时间.设备的理论C/T是通过时序图的分析得到的 ...

最新文章

  1. 如让自己想学不好shell编程都困难?
  2. 用jquery + iframe實現iframe子頁面加載完前的緩沖效果
  3. 支付宝二面微服务、分布式架构?太真实了!
  4. AspectJ在Android 中的使用攻略
  5. 偶然遇到的Java泛型错误,百思不得其解。
  6. not in与NOT EXISTS亲历的差别体验
  7. 分别用switch语句和if语句实现键盘录入月份,输出对应的季节
  8. android 界面置顶,Android实现界面滚动时顶部部分内容置顶(附源码)
  9. VNC远程控制软件,五大容易上手的VNC远程控制软件
  10. Excel学习日记:L18-CountifsSumifs函数
  11. FastStone.MaxView.2.keygen-REPT
  12. 频率单位转换 hz cpd cph
  13. 课程设计:公交线路管理系统
  14. Java学习星球,Java学习路线
  15. 开启前端CSS学习之路-css003
  16. IDEA 公司推出新字体,极度舒适~
  17. swapidc不能连接到主机_SWAPIDC完整对接EP主机分销教程
  18. jar 文件打不开解决的办法
  19. 详解多线程MT和多线程MD的区别
  20. 基于野狗优化算法的函数寻优算法

热门文章

  1. ORBSLAM知识整理
  2. 往mysql批量插入datetime
  3. 项目风险管理规划的内涵
  4. 忽略了导热硅脂等于祸害电脑
  5. 2023上半年数学建模竞赛汇总(报名时间、比赛时间、难易程度、含金量、竞赛官网)
  6. C语言的头文件的处理
  7. knuth《mathematical analysis of algorithms》学习笔记
  8. [iOS开发]Category、Extension和关联对象
  9. html5结合flash实现视频文件在所有主流浏览器兼容播放
  10. 对圆和椭圆进行边缘检测