UML 剖析(1) —— 类图实体

0. 简介

UML 中文翻译为统一建模语言,其实说白了 UML 就是将软件的各种状态以图表的方式展现出来。因为 UML 涉及的图表非常的多,这里只介绍比较重要的类图、时序图、用例图,为了加深读者的理解,这里会使用 StarUML 来讲解。

1. 类图

1.1 概念

类图就是表示系统中包含了哪些实体,各实体之间如何关联的。

1.2 类图组成

从概念就可以知道类图其实就是由两部分组成的,一个是实体,另一个就是关联。关联会在下一篇文章讲解,这篇文章先讲解实体

1.2.1 类图实体

类图实体的意思其实就是表示在 UML 当中怎么表示一个类。例如,现在有一个 Dog 类,代码如下:

public class Dog {
    
    private int age;
    private String name;

    public void printInfo(){
        System.out.println("name: " + name + " " + "age: " + age);
    }
}

如果用类图表示如下图:


Dog

一个类的类图就是由类名,属性和方法组成的,现在来介绍一下这些元素的细节。

1.2.1.1 类名

在 StartUML 中,如果双击类名会看到右边的控制面板出现下图的表格:


Class Properties

这个就是描述当前类的值,那它们分别代表什么意思呢?以下一个个解释。

(1)stereotype:这个中文翻译也叫构造型,其实就是对类的概念的精化。简单的说加一句话来更加清楚准确描述这个类。
现在往 stereotype 添加 Animal,看看类图会发生什么变化?


stereotype

可以发现在类名 Dog 上面会出现 <<Animal>> ,因为在 UML 当中构造型(Stereotype)就是用<< >> 符号来表示。

(2)visibility:这个是可见性的意思,这里一共有四个选项,分别是 public、protected、private、package。不过你无论选什么选项类图都不会有什么变化的,不过要注意的是 Java 中只能使用 public 和 package 来修饰类。

(3)isAbstract:顾名思义,这个选项就代表是否为抽象类。如果选上这个选项类名就会变成斜体字,如图:

isAbstract

(4)isFinalSpecialization:是否为 final 类,如果选上这个选项,类图并没有什么变化。

(5)isLeaf:其实这个的意思和 isFinalSpecialization 基本上都是一样的,都代表选上都代表这个类为 final 类。如果选上这个选项类图会有如下变化。


isLeaf

可以看到类名的右下角出现 {leaf}。

(6)isActive:是否为活动对象。那什么是活动对象呢?活动对象就是可以主动的启动某些流程,而被动对象就是要其他对象来调用它。如果选上这个选项类图会有如下变化:


isActive

可以看到类图左右两边加多了一条线。

1.2.1.2 属性

Attribute Properties

有些选项与类名的选项是一样的,这里就不重复讲解了,说一些类名没有或特有的属性。

(1) visibility:有些人可能会问了,类名那一节不是已经说了这个属性吗?为什么还要说。没错,类名那里确实说过了,而且这个属性的值和类名也是一样的,但是在这里如果选不同的选项,类图是会有相应不同的变化的。


visibility

看上图,可以知道选择不同访问控制符,age 前的符号是不一样的,总结如下表:

访问控制符 UML 符号
public +
protected #
private -
package ~

(2)isStatic:是否为静态。如果选择了这个选项后,类图会有如下变化


isStatic

age 属性下面会出现一道横线。

(3)type:代表该属性的类型

(4)multiplicity:这个代表该类实例与其他类实例连接时所需要的数量范围。这里有几种表达方式,总结如下表:

符号 说明
0..1 零个或一个
1 一个
0..* 零个或多个
1..* 一个或多个
* 多个

如果选择了 0..1 选项类图就会变成如下图:


multiplicity

age 后面就会出现 [0..1] 。

(5)isReadOnly:代表只能读取。选择了这个选项类图会有如下变化:


isReadOnly

在属性的后面会出现 {readOnly}

(6)isOrdered:如果选择了 multiplicity,在选择了 isOrdered。证明这个属性多个值是按某种特殊排序法排序的,选择了这个选项类图会有如下变化:


isOrdered

在属性的后面会出现 {ordered}

(7)isUnique:如果选择了 multiplicity,在选择了 isOrdered。证明这个属性多个值是否唯一,选择了这个选项类图会有如下变化:


isUnique

在属性的后面会出现 {unique}

(8)defaultValue:默认值,设置的话,类图会有如下变化:


defaultValue

会在 age 后面 增加了 “= 18” 符号。

(9)isDerived:代表这个值是否由其他模型计算出来的。选择了这个选项类图会有如下变化:


isDerived

可以看到会在 age 前增加 “/” 符号。

(10)aggregation:这里面有三个选项如下图:


aggregation
类型 作用
none 不设置聚合状态
shared 可以独立存在
composite 没有这个属性,整个类就不能存在

设置了这几个值类图并不会有什么变化。

(11)isID:代表这个属性值是否是这个类实例的唯一标识码。选择了这个选项类图会有如下变化:


isID

可以看到会在 name 属性后面增加 “{id}” 符号

1.2.1.3 方法

Opeartion Properties

(1)raisedExeptions:添加可能会引发的异常。
这里我定义了一个 MyException 类,然后在 printInfo() 方法中添加异常,添加后如图所示:


raisedExeptions

添加后,类图并不会有变化。

(2) concurrency:代表这个方法的并发性,这里有三个选项,作用下表总结:

concurrency
类型 作用
sequential 按顺序执行
guarded 后台执行
concurrent 并发执行

改变后,类图并不会有变化。

(3)isQuery:代表此方法如果并没有改变系统的状态。选择了这个选项类图会有如下的变化:


isQuery

会在 printInfo() 方法后出现 “{query}” 符号

(4)specification:对这个方法的作用进行说明
增加内容后,类图并不会有变化。

基本上我们平常能用到的类图实体的元素都讲解的差不多了,下一篇文章我们继续讲解类图关联

下篇文章在此:UML 从懵逼到精通(2) —— 类图关联和时序图

参考书籍与文章:
《UML和模式应用》
《大象:Thinking in UML》
在Java中保留Stereotype
Active class versus passive class
快速上手UML類別圖的初級概念:類別(一)
Composite Vs Shared
UML Operation

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266