符号 |
描述 |
类(Class) |
customer类-详细信息被隐藏 |
类是描述一组共享相同对象的分类器
类显示为一个包含类名的实心轮廓矩形,并且可以选择用包含特征或分类器的其他成员的水平线分隔开的间隔。 |
SearchService类-分析级别详细信息 |
当类显示为三个部分时,中间部分包含属性列表,底部部分包含操作列表。属性和操作应该在平面上左对齐,名称的第一个字母小写。 |
SearchService类-实现级别的详细信息。createEngine是静态操作。 |
中间部分包含属性,底部部分包含操作。 |
SearchService 类 -按可见性分组的属性和操作。 |
属性或操作可以按可见性分组。在这种情况下,对于具有相同可见性的多个功能,可以一次给出可见性关键字或符号。 |
SearchService 类 -按可见性分组的属性和操作。 |
属性或操作可以按可见性分组。在这种情况下,对于具有相同可见性的多个功能,可以一次给出可见性关键字或符号。 |
SearchService 类 -按可见性分组的属性和操作。 |
属性或操作可以按可见性分组。在这种情况下,对于具有相同可见性的多个功能,可以一次给出可见性关键字或符号。 |
SearchService 类 -按可见性分组的属性和操作。 |
属性或操作可以按可见性分组。在这种情况下,对于具有相同可见性的多个功能,可以一次给出可见性关键字或符号。 |
Math是实用程序类-具有静态属性和操作(带下划线) |
实用程序是仅具有类范围的
静态属性和操作的类。因此,实用程序类通常没有实例。 |
抽象类(Abstract Class) |
SearchRequest 类是抽象类。 |
在UML
1.4.2中,抽象类被定义为不能直接实例化的类。任何对象都不能是抽象类的直接实例。
UML 2.4提及抽象类,但未提供定义。我们可以假设在UML 2.x中 抽象类没有完整的声明,并且“通常”不能被实例化。
抽象类 的名称以斜体显示。 |
嵌套分类器(Nested
Classifiers) |
LinkedList类正在嵌套元素接口。元素在LinkedList命名空间的范围内。 |
一个类或接口可以用作
各种分类器的命名空间, 包括其他类,接口,用例等。分类器的这种嵌套将在该类中定义的分类器的可见性限制为所包含的类或接口的命名空间的范围。
。
在过时的UML 1.4.2中,可以通过一条线显示一个声明类和其命名空间中的类,并在其末尾连接一个“锚”图标,以连接到声明类(命名空间)。锚点图标是圆圈内的十字形。
UML 2.x规范没有为按类嵌套提供明确的表示法。请注意,在UML 2.4.x的一个示例中,UML的1.4“
anchor”表示法仍 作为“替代成员资格表示法” 用于程序包。 |
类模板(Class Template) |
Array类模板和绑定Customer类。Customers类是一个包含24个Customer类对象的数组。 |
UML类可以被
模板化或 绑定。
左例显示了绑定类Customer,用无约束的参数类T用类Customer和边界参数n替换为整数24。 |
接口(Interface) |
SiteSearch界面 |
接口是一个分类器,它声明一组一致的公共特性和义务。接口指定协定。
在UML1.4中,接口在形式上等同于一个抽象类,没有属性,没有方法,只有抽象操作。
接口可以使用矩形符号显示,在名称前加上关键字“interface”。 |
界面可分页 |
可能与接口相关联的义务以各种约束(例如前置和后置条件)或协议规范的形式存在,这些约束可以对通过接口的交互施加顺序限制。
|
SiteSearch 接口由SearchService 实现(实现) |
参与接口实现依赖性的接口以圆圈或球形显示,标有接口名称,并用实线附加到实现该接口的分类器上。
|
SearchController 使用(必需)SiteSearch 接口。 |
从分类器到接口的使用依赖关系是通过用半圆或套接字表示接口来显示的,用接口名称标记,用实线连接到需要该接口的分类器。
|
对象(Object) |
Customer类的匿名实例。 |
对象是一个
实例一的 类或接口。对象本身不是UML元素。对象通常按照对象图的形式作为实例规范来呈现
。
类实例(对象)可以没有名称,可以是匿名的。
|
未命名或未知类的实例newPatient。 |
在某些情况下,实例的类未知或未指定。当没有提供实例名时,未命名分类器的这种匿名实例的符号只是用冒号加下划线-:。
|
android.hardware包中Camera类的实例front-face-cam。 |
类实例(对象)可以指定实例名称,类和名称空间(包)。
|
Date类的实例orderPadPad的
值是2011年7月31日下午3:00。 |
如果实例具有某个值,那么将在实例名称后的等号('=')后面或在名称下没有等号的情况下显示值说明。
|
Patient类的实例newPatient
具有指定了值的插槽。
|
槽
显示为 结构特征 ,特征名称后跟等号('=')和值说明。功能的类型(分类器)也可以显示。
|
数据类型(Data
Type) |
DateTime数据类型 |
一个数据类型是一个分类
-类似于类 -其实例只能由他们的价值确定。
使用带有关键字?dataType?的矩形符号显示数据类型。
|
结构化数据类型地址 |
数据类型可以包含
支持结构化数据类型建模的属性 和操作。
|
Patient类的属性的数据类型为名称,性别,日期时间,地址和访问。 |
当数据类型被引用为例如类属性的类型时,它简单地显示为数据类型的名称。
|
基本类型(Primitive
Type) |
基本数据类型weight |
基本类型是表示原子数据值的数据类型,即没有部分或结构的值。原始数据类型可能具有在UML之外定义的精确语义和操作,例如,数学上。
标准的UML原语类型包括:
- Boolean,
- Integer,
- UnlimitedNatural,
- String.
基本类型的名称上方或之前带有关键字“ primitive”。 |
枚举(Enumeration) |
枚举AccountType。 |
枚举是一种数据类型,
其值在模型中被枚举为用户定义的枚举文字。
可以使用带有关键字<<enumeration>>的分类符符号(矩形)来显示枚举。枚举的名称位于上层隔间。
枚举文字的列表可以一行一行地放置在底部隔离专区中。属性和操作区室可以被抑制,并且如果它们为空,则通常被抑制。
|
特征(Feature) |
功能概述图
|
关联限定符(Association
Qualifier) |
给定一家公司和一个社会保险号码(SSN),最多只能找到一名员工。 |
限定符是一个属性,它定义与限定端的实例相关联的实例集的分区。
限定符用于为Java中的哈希映射、C_中的词典、索引表等建模,其中使用限定符作为哈希键、搜索参数或索引提供对链接对象的快速访问。
限定符显示为一个小矩形,附着在最终路径段和它所连接的分类器符号之间的关联的末端。限定符矩形是关联的一部分,而不是分类器的一部分。不能抑制限定符。
在目标多重性为0..1的情况下,限定符值对于限定对象是唯一的,并且最多指定一个关联对象。
|
给定一个图书馆和作者的名字,找不到多少本书。 |
在目标多重性为0..*,关联实例集被划分为可能为空的子集,每个子集由给定的限定符实例选择。
|
给定棋盘,特定的等级及文件,我们将精确定位一个square。UML规范没有清晰地解释多重性1对于限定符意味着什么。
|
UML
2.4规范说明了限定符的多样性:
假设提供了限定符值,则给出了限定符的多重性。不带限定符的“原始”多重性假定为0
.. *。这并不完全笼统,但是几乎总是足够的,因为原始多重度为1的情况最好在不使用限定符的情况下进行建模。
|
操作(Operation) |
操作executequery是公共的、受ispool保护的、具有包可见性的getquerytimeout,而clearwarnings是私有的。 |
作是分类器的行为特性,它指定调用关联行为的名称、类型、参数和约束。
当操作在图中显示时,文本应该符合UML规范中定义的语法。注意,UML 2.2到2.4规范似乎对操作的属性有错误的嵌套,使得属性的存在依赖于返回类型的存在。这里提供的语法是不规范的,并且与UML
2.4规范中的语法不同:
operation ::= [ visibility ] signature
[ oper-properties ]
Visibility of the operation is optional,
and if present, it should be one of:
visibility ::= '+' | '-' | '#' | '~' |
文件有两个静态操作-create和slashify。create有两个参数并返回文件。slashify是私有操作。操作listfiles返回文件数组。操作getname和listfiles没有参数或参数被抑制。 |
操作的命名有可选的参数列表和返回规范。
signature ::= name '(' [ parameter-list
] ')' [ ':' return-spec ]
name是操作的名称。参数列表是以下格式的操作参数列表:
parameter-list ::= parameter [ ',' parameter
]*
parameter ::= [ direction ] parm-name ':'
type-expression [ '[' multiplicity ']' ]
[ '=' default ] [ parm-properties ]
parm-name是参数的名称。类型表达式是指定参数类型的表达式。多重性是参数的多重性。default是定义参数默认值的值规范的表达式。可以抑制参数列表。 |
操作setdaemon有一个输入参数,而changename的单个参数同时是输入和输出参数。静态枚举返回整数结果,同时还具有线程的输出参数数组。操作isdaemon与返回类型参数一起显示。它是表示选项,相当于将操作结果返回为:+isdaemon():boolean。 |
参数方向描述为:
direction ::= 'in' | 'out' | 'inout' |
'return'
如果省略,则默认为“in”
可选参数属性描述应用于参数的其他属性值。
parm-properties ::= '{' parm-property [
',' parm-property ]* '}'
可选返回规范定义为:
return-spec ::= [ return-type ] [ '[' multiplicity
']' ]
如果是为操作定义的,则返回类型是结果的类型。返回规范还具有返回类型的可选多重性。 |
操作检查重新定义了从超类继承的操作状态。getPublicKey操作不会更改系统状态。getCerts操作返回没有重复的有序列证书。 |
操作的属性是可选的,如果存在,则应遵循以下规则:
oper-properties ::= '{' oper-property [
',' oper-property ]* '}'
oper-property ::= 'redefines' oper-name
| 'query' | 'ordered' | 'unique' | oper-constraint
操作的属性一般描述操作或返回参数,定义为:
重新定义操作名-操作重新定义由操作名标识的继承操作;
查询操作不会改变系统的状态;
有序-返回参数的值是有序的;
唯一-参数返回的值没有重复项;
oper-constraint-是应用于操作的约束。 |
抽象操作(Abstract
Operation) |
UML 1.4.2中的抽象操作被定义为没有实现的操作——“类没有实现操作”。实现必须由类的后续提供。
UML 1.4.2中的抽象操作以斜体或{Abstract}的形式显示。
在UML 2.4中既没有抽象操作的定义,也没有概念。 |
约束(Constraint) |
银行帐户属性约束-non empty owner and positive
balance |
约束可以有一个可选的名称,尽管它通常是匿名的。约束以文本字符串的形式在大括号中显示,根据语法:
constraint ::= '{' [ name ':' ] boolean-expression
'}'
对于表示法为文本字符串(如class属性等)的元素,约束字符串可以跟在花括号中的元素文本字符串后面。 |
帐户所有者是个人或公司,{xor}是预定义的UML约束。 |
对于应用于两个元素(例如两个类或两个关联)的约束,可以将约束显示为大括号中的约束字符串标记的元素之间的虚线。 |
银行帐户限制 - non empty owner and positive
balance |
约束字符串可以放置在注释符号中,并通过虚线附着到约束元素的每个符号上。 |
多重性(Multiplicity) |
足球队班级的运动员人数众多。 |
多重性定义了一个包含非负整数的区间,用来指定所描述元素的允许实例数。
多样性可以用以下非规范的语法规则来描述:
multiplicity ::= multiplicity-range [ '{'
multiplicity-options '}' ]
0 |
集合必须为空 |
1 |
只有一个实例 |
5 |
恰好5个实例 |
* |
零个或多个实例 |
0..1 |
没有实例或一个实例 |
1..1 |
恰好一个实例 |
0..* |
零个或多个实例 |
1..* |
至少一个实例 |
m..n |
至少m个但不超过n个实例 |
|
顾客买的东西不多。购买是按照特定的顺序进行的,并且每个都是唯一的(默认情况下)。
数据源可以有一个记录器,并已订购最小到最大连接池每个连接都是唯一的(默认情况下)。 |
多重性选项还可以指定元素实例化中的值是否应唯一和/或有序:
multiplicity-options ::=
order-designator [ ',' uniqueness-designator
] |
uniqueness-designator [ ',' order-designator
]
order-designator ::= 'ordered' | 'unordered'
uniqueness-designator ::= 'unique' | 'nonunique'
如果multiplicity元素是多值的,并指定为有序的,则此元素的实例化中的值集合将按顺序排列默认情况下,不排序集合。
如果multiplicity元素是多值的并指定为唯一的,则此元素的实例化中的值集合中的每个值都必须是唯一的默认情况下,集合中的每个值都是唯一的。 |
可见性(Visibility) |
操作executeQuery是公共的,isPoolable是受保护的,getQueryTimeout是可见的,clearWarnings是私有的。
|
可见性允许在名称空间或访问元素时限制已命名元素的使用。它与类、包、泛化、元素导入、包导入一起使用。
UML具有以下类型的可见性:
- public (+)
- package (~)
- protected (#)
- private (-)
如果命名元素不属于任何名称空间,那么它就没有可见性。 |
关联(Association) |
关联是分类器之间的一种关系,用来表示分类器的实例可以相互链接,也可以在逻辑上或物理上组合成某种聚合。
它通常被绘制为连接关联分类器的实线。 |
job与year相关联
|
二进制关联将两个类型化实例关联起来它通常呈现为连接两个分类器的实线,或将单个分类器连接到自身的实线(两端是不同的)线可以由一个或多个连接段组成。 |
端到端的阅读顺序:汽车 - 设计于 - 年
|
可以在二进制关联名称的旁边或附近放置一个小实心三角形
(以实线绘制),以显示关联末端的顺序。箭头按照关联结束的顺序沿直线指向最后一端的方向。该符号还指示将从第一端到最后一端读取关联。 |
三元关联设计涉及三个分类器。
|
任何关联都可以被画成菱形(大于行上的终止符),每个关联端都有一条实线将菱形连接到分类器,分类器是菱形的类型。具有两个以上端点的n
-元关联只能通过这种方式绘制。 |
聚合(Aggregation) |
Search Service有一个使用共享聚合的查询生成器
|
聚合(也称为共享聚合)显示为二元关联,在关联线的聚合端用空心菱形装饰作为终端装饰。 |
复合聚合(复合)-Composite
Aggregation (Composition) |
文件夹可以包含许多文件,而每个文件恰好具有一个文件夹父项。如果删除文件夹,则所有包含的文件也会被删除。
|
复合聚合(又名组合)是一种“强”聚合形式。
组合被描述为在集合(合成)末端用填充的黑色菱形装饰的二元组合。 |
医院有1个或多个科室,每个科室恰好属于一个医院。
如果医院关闭,则其所有部门也关闭。
|
当组合用于领域模型时,整体/部分关系以及组合“删除”事件都应该被形象地解释,而不一定是物理包含和/或终止。 |
每个部门都有一些职员,每个职员可以是一个部门的成员(或没有)。如果部门关闭,则其职员将被解除(但不包括“独立”职员)。
|
复合(整体)的多重性可以指定为0..1(“最多一个”),这意味着该部分可以是“独立的”,不属于任何特定的组合。 |
关联结束的所有权(Ownership
of Association End) |
Search Service有一个使用共享聚合的查询生成器
|
聚合(也称为共享聚合)显示为二元关联,在关联线的聚合端用空心菱形装饰作为终端装饰。 |
Search Service有一个使用共享聚合的查询生成器
|
聚合(也称为共享聚合)显示为二元关联,在关联线的聚合端用空心菱形装饰作为终端装饰。 |
关联可导航性(Association
Navigability) |
关联的两端都有未指定的可导航性 |
关联结尾的无装饰表示未指定的可航行性。 |
A2具有未指定的可导航性,而B2 可从A2进行导航。
|
导航结束由关联末尾的空心箭头指示。 |
A3 无法从B3 导航,而B3具有未指定的导航能力。
|
不可导航的结尾用关联结尾的小x表示。 |
A4 不可从B4 导航,而B4 可从A4 导航。
|
|
A5 可从B5 导航,而B5 可从A5 导航。
|
|
A6 不可从B6 导航,B6 也不可从A6 导航。
|
|
泛化(Generalization) |
支票账户、储蓄账户和信用账户按账户分类。
|
泛化显示为一条线,在表示所涉及的分类器的符号之间有一个空心三角形作为箭头箭头指向表示通用分类器的符号这种符号被称为“单独的目标样式” |
支票账户、储蓄账户和信用账户按账户分类。
|
引用同一通用分类器的多个泛化关系也可以在“共享目标样式”中连接在一起 |
依赖(Dependency) |
数据访问依赖于连接池
|
依赖关系用在类图上来显示使用依赖或抽象。
依赖关系通常显示为两个模型元素之间的虚线箭头。箭头尾部的模型元素(客户)取决于箭头处的模型元素(供应商)。箭头可以用可选的原型和可选的名称来标记。 |
使用(Usage) |
Search Controller 使用搜索引擎。
|
使用是一种依赖关系,其中一个元素(客户端)需要另一个元素(或一组元素)(供应商)来完成其全部实现或操作。
例如,它可能意味着一个(client)类中的一些方法使用另一个(supplier)类的对象(例如参数)。
使用依赖项显示为带有<<use>>关键字的依赖项。 |
创建(Create) |
数据源创建连接
|
创建是一种使用依赖性,
表示客户分类器创建了供应商分类器的实例。它用标准的构造型<<create>>表示。 |
Account构造函数创建Account的新实例
|
Create可以将实例值与类的构造函数关联起来,描述构造函数操作返回的单个值。操作是客户端,创建的实例是供应商。实例值可以引用操作声明的参数。。 |
所需的接口(Required
Interface) |
SearchController 使用(必需)SiteSearch 接口
|
所需接口指定分类器为了执行其功能并履行其对客户端的义务而需要的服务。它是由分类器和相应接口之间的使用依赖关系指定的。
从分类器到接口的使用依赖关系是通过用半圆或套接字表示接口来显示的,套接字上标有接口的名称,由实线连接到需要该接口的分类器。 |
搜索控制器使用界面SiteSearch(必需)。
|
如果接口使用矩形符号表示,则接口使用依赖关系用依赖关系箭头表示。箭头尾部的分类器使用(需要)箭头顶部的接口。 |
接口实现(Required
Interface) |
SiteSearch 接口由SearchService 实现(实现)。
|
从一个分类器到一个接口的接口实现依赖关系通过用一个圆或球来表示该接口,用接口的名称标记,并用实线连接到实现该接口的分类器来表示。 |
SiteSearch 接口由SearchService 实现(实现)。
|
在使用矩形符号表示接口的情况下,接口实现
相关性用接口实现箭头表示。箭头尾部的分类器实现了箭头头处的接口。 |