在底层区域中大家能够观察Flight类有五个操作威尼斯人官网

http://www.ibm.com/developerworks/cn/rational/rationaledge/content/feb05/bell/

基础

如先前所涉嫌的,类图的目标是显示建模系统的体系。在大部的 UML
模型中这一个品种包罗:

  • 接口

  • 数据类型

  • 组件

UML
为那几个品种起了一个特地的名字:“分类器”。经常地,你可以把分类器当作类,但在本事上,分类器是更为分布的术语,它依然引用上边的任何三体系型为好。

类名

类的 UML 表示是二个星型,垂直地分成五个区,如图 1
所示。最上部区域突显类的名字。中间的区域列出类的性质。尾部的区域列出类的操作。当在八个类图上画一个类成分时,你必须要有上面的区域,上面包车型地铁三个区域是可选用的(当图描述仅仅用于显示分类器间事关的高层细节时,下边包车型地铁多个区域是不供给的)。图
1 展现贰个航道班机怎么样作为 UML
类建模。正如我们所能看见的,名字是 Flight,大家能够在中游区域看见Flight类的3个属性:flightNumber,departureTime

flightDuration。在尾巴部分区域中大家能够见见Flight类有三个操作:delayFlight
和 getArrivalTime。

威尼斯人官网 1

图 1: Flight类的类图

类属性列表

类的属性节(中部区域)在分隔线上列出每一个类的品质。属性节是可选择的,假如一用它,就包括类的列表展现的种种属性。该线用如下格式:

name : attribute type
flightNumber : Integer

再而三大家的Flight类的例子,大家能够选取质量类型音讯来描述类的习性,如表 1
所示。

表 1:具备关联类型的Flight类的性质名字

属性名称 属性类型
flightNumber Integer
departureTime Date
flightDuration Minutes

在事情类图中,属性类型日常与单位契合,那对于图的只怕读者是有含义的(比如,分钟,英镑,等等)。不过,用于转移代码的类图,要求类的属性类型必须界定在由程序语言提供的类型之中,或包蕴于在系统中贯彻的、模型的门类之中。

在类图上出示全部私下认可值的一定属性,有的时候是实用的(比方,在银行账户应用程序中,一个新的银行账户会以零为开始值)。UML
标准允许在属性列表节中,通过利用如下的暗号作为私下认可值的标志:

name : attribute type = default value

举个例子来讲:

balance : Dollars = 0

来得属性默许值是可选取的;图 2
彰显多少个银行账户类具备八个名为 balance的项目,它的私下认可值为0。

威尼斯人官网 2

图 2:展现默以为0新币的balance属性值的银行账户类图。

类操作列表

类操作记录在类图正方形的第四个(最低的)区域中,它也是可采用的。和性质同样,类的操作以列表格式突显,各种操作在它本身线上。操作使用下列旗号表现:

    name(parameter list) : type of value returned

上边包车型客车表 2 中Flight类操作的投射。

表 2:从图 2 映射的Flight类的操作

操作名称 返回参数 值类型
delayFlight
Name Type
numberOfMinutes Minutes
N/A
getArrivalTime N/A Date

图3显得,delayFlight 操作有叁个Minutes类型的输入参数 —
numberOfMinutes。但是,delayFlight
操作未有重临值。 1 当一个操作有参数时,参数被放在操作的括号内;每一种参数都应用那样的格式:“参数名:参数类型”。

威尼斯人官网 3

图 3:Flight类操作参数,包含可选用的“in”标记。

当文书档案化操作参数时,你大概采纳三个可挑选的提示器,以彰显参数到操作的输入参数、或输出参数。这几个可选取的提示器以“in”或“out”出现,如图3中的操作区域所示。日常的话,除非将利用一种初期的次第编制程序语言,如Fortran
,这几个提醒器或者会具备助于,不然它们是不须要的。但是,在
C++和Java中,全体的参数是“in”参数,并且依据UML标准,既然“in”是参数的暗中认可类型,大非常多人将会遗漏输入/输出提示器。

继承

在面向对象的宏图中四个充裕重大的定义,继承,指的是二个类(子类)继承别的的一个类(超类)的大同小异功用,并追加它本身的新职能(三个非技能性的比如,想象笔者再而三了自个儿阿娘的貌似的音乐力量,可是在自己的家里,小编是独一三个玩电吉他的人)的力量。为了在三个类图上建立模型承继,从子类(要持续行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。思量银行账户的门类:图
4 展现 CheckingAccount 和 SavingsAccount 类如何从 BankAccount
类传承而来。

威尼斯人官网 4

图 4: 承继通过指向超类的一条闭合的,单箭头的实线表示。

在图 4 中,承袭关系由各种超类的单独的线画出,那是在IBM Rational
罗斯和IBM Rational
XDE中利用的措施。不过,有一种叫做 树标记的预备格局可以画出承继关系。当存在七个或越多子类时,如图
4 中所示,除了三回九转线象树枝同样混在联合外,你能够应用树形记号。图 5
是重绘的与图 4 同样的持续,不过此次使用了树形暗号。

威尼斯人官网 5

图 5: 一个选拔树形暗号的承接实例

抽象类及操作 
留意的读者会注意到,在图 4 和 图5中的图中,类名BankAccount和withdrawal操作使用斜体。那表示,BankAccount
类是一个抽象类,而withdrawal方法是空虚的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,並且CheckingAccount 和 SavingsAccount
多少个子类都各自地实行它们分别版本的操作。

可是,超类(父类)不自然借使抽象类。标准类作为超类是日常的。

关联 
当您系统建立模型时,特定的靶子间将会相互关系,况兼那些关系本人要求被明晰地建立模型。有各类关系。在此一有的中,作者将会商量它们中的五个– 双向的关联和单向的关系,而且我将会在Beyond the
basics
一部分探究剩下的二种关系类型。请留意,关于曾几何时该使用每系列型涉及的详细座谈,不属于本文的限量。相反的,小编将会把第一聚集在种种关系的用途,并表达怎么着在类图上画出涉及。

双向(标准)的关联 
关系是多个类间的连接。关联总是被假定是双向的;那表示,七个类互相理解它们间的维系,除非你限定一些其余门类的关联。回想一下Flight
的例证,图 6 展现了在Flight类和Plane类之间的四个正规项指标涉嫌。

威尼斯人官网 6

图 6:在二个Flight类和Plane类之间的双向关联的实例

贰个双向关联用七个类间的实线表示。在线的任一端,你放置贰个剧中人物名和多种值。图
6
显示Flight与贰个特定的Plane相关联,何况Flight类知道那么些关系。因为剧中人物名以Plane类表示,所以Plane承担关联中的“assignedPlane”剧中人物。紧接于Plane类前面包车型客车多种值描述0…1代表,当二个Flight实体存在时,能够有贰个或从不Plane与之提到(也正是,Plane或然还从未被分配)。图
6
也展现Plane知道它与Flight类的关联。在此个关系中,Flight承担“assignedFlights”剧中人物;图
6
的图告诉大家,Plane实体能够不与flight关联(举例,它是一架斩新的飞机)或与未有上限的flight(比方,一架已经服兵役5年的飞行器)关联。

鉴于对那么些在关系尾巴部分恐怕出现的多种值描述以为纳闷,下边包车型地铁表3列出了某个多种值及它们含义的事例。

表 3: 多种值和它们的代表

或是的多重值描述

表示

含义

0..1

0个或1个

1

只能1个

0..*

0个或五个

*

0个或多个

1..*

1个或我个

3

只能3个

0..5

0到5个

5..15

5到15个

单向关系 
在多个单向关系中,多个类是辅车相依的,但是独有叁个类知道这种关联的留存。图 7
彰显单向关系的透支财务数据的三个实例。

威尼斯人官网 7

图 7: 单向关系三个实例:OverdrawnAccountsReport 类 BankAccount 类,而
BankAccount 类则对关乎一窍不通。

贰个二头的关系,表示为一条带有指向已知类的盛放箭头(不闭馆的箭头或三角形,用于标记承继)的实线。就像标准提到,单向关系包含三个剧中人物名和一个多种值描述,不过与正式的双向关联不相同的时,单向关系只含有已知类的剧中人物名和多种值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,並且知道
BankAccount
类扮演“overdrawnAccounts”的剧中人物。不过,和行业内部提到不相同,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。 2

软件包 
不可幸免,假如您正在为二个大的类别或大的事体领域建立模型,在你的模型准将会有无数分裂的分类器。管理全数的类将是一件令人生畏的天职;所以,UML
提供三个堪当 软件包的团体成分。软件包使建立模型者能够组织模型分类器到名字空间中,那有些象文件系统中的文件夹。把二个系统一分配为两个软件包使系统成为轻松驾驭,特别是在各类软件包都表现系统的二个一定部分时。 3

在图中存在三种艺术表示软件包。并不曾准绳供给选拔哪个种类标记,除了用你个人的决断:哪个种类更有利阅读你画的类图。三种办法都是由多个相当的小的长方形(用于固定)嵌套在叁个大的长方形中开头的,如图
8 所示。然则建立模型者必得决定包的分子如何表示,如下:

  • 一经济建设模者决定在大长方形中展现软件包的分子,则持有的这些成员 4 内需被停放在正方形里面。别的,全体软件包的名字须要放在软件包的相当的小长方形之内(如图
    8 的显得)。

  • 假如建立模型者决定在大的纺锤形之外展现软件包成员,则兼具将会在图上呈现的成员都须求被置于星型之外。为了显得属于软件包的分类器属于,从各种分类器画一条线到里面有加号的圆圆,这么些圆周粘附在软件包之上(图9)。

威尼斯人官网 8

图 8:在软件包的正方形内展现软件包成员的软件包成分例子

威尼斯人官网 9

图 9:七个通过连接线表现软件包成员的软件包例子

问询基础主要性

在 UML 2中,驾驭类图的根基更为重要。那是因为类图为具备的别的协会图提供基本的创设块。如组件或对象图(仅仅是举了些例子)。


回页首

超过基础

到此甘休,笔者早就介绍了类图的底子,然而请继续往下读!在底下的一对中,小编将会辅导你到您会使用的类图的更主要的上边。那几个包罗UML
2 正规中的接口,别的的三种关系类型,可以知道性和其他补偿。

接口 
在本文的前头,我建议您以类来虚拟分类器。事实上,分类器是一个尤其相似的概念,它归纳数据类型和接口。

关于哪天、以致怎么样火速地在系统结构图中应用数据类型和接口的全体钻探,不在本文的座谈范围以内。既然那样,作者为啥要在那提起数据类型和接口呢?你只怕想在结构图上效仿那个分类器类型,在此个时候,使用科学的号子来代表,大概起码知道那么些分类器类型是至关重要的。不得法地绘制这几个分类器,很有望将令你的结构图读者以为混乱,以后的种类将不可能适应供给。

三个类和三个接口差别:贰个类能够有它造型的真正实例,不过四个接口必须起码有三个类来兑现它。在
UML 第22中学,一个接口被以为是类建立模型成分的特殊化。因而,接口就象类那样绘制,可是星型的最上端区域也可以有文件“interface”,如图
10
所示。 5

威尼斯人官网 10

图 10:Professor类和Student类达成Person接口的类图实例

在图 10中展现的图中,Professor和Student类都落实了Person的接口,但并不从它继续。大家精晓那或多或少是出于上边五个原因:1)
Person对象作为接口被定义 —
它在对象的名字区域中有“interface”文本,并且大家看出由于Professor和Student对象依据画类对象的条条框框(在它们的名字区域中绝非额外的分类器文本)标示,所以它们是 指标。
2) 我们了解承继在这间未有被出示,因为与带箭头的线是点线并不是实线。如图
10
所示,一条带有闭合的单向箭头的 线意味着达成(或施行);正如我们在图
4 中所见到的,一条带有闭合单向箭头的线意味着继续。

越多的关系 
在上头,小编谈谈了双向关联和单向关系。以往,笔者将会介绍剩下的二种等级次序的涉嫌。

关联类 
在关系建立模型中,存在有的意况下,你须求满含别的类,因为它含有了有关关联的有价值的音信。对于这种气象,你会接纳 关联类 来绑定你的宗旨关系。关联类和经常类同样表示。不一致的是,主类和关联类之间用一条相交的点线连接。图
11 显示叁个航空工业实例的关联类。

威尼斯人官网 11

图 11:扩展关联类 MileageCredit

在图 11 中显示的类图中,在Flight类和 FrequentFlyer
类之间的关联,产生了名称为MileageCredit的关系类。那代表当Flight类的八个实例关联到 FrequentFlyer
类的二个实例时,将会时有爆发 MileageCredit 类的贰个实例。

聚合 
聚集是一种极度类型的涉及,用于描述“总体到某个”的关联。在主导的联谊关系中, 部分类 的生命周期独立于 整体类 的生命周期。

例如来讲,大家得以想像, 是一个安然依旧实体,而 车轮 轮胎是整辆车的一部分。轮胎能够在安放到车时的前多少个礼拜被塑造,并放置于宾馆中。在这里个实例中,Wheel类实例清楚地独自地Car类实例而留存。但是,有个别情况下, 部分 类的生命周期并  独立于 整体 类的生命周期

那名为合成聚合。比方来讲,思量公司与机关的涉及。 威尼斯人官网,供销合作社和单位 都建立模型成类,在合营社存在此前,部门不可能存在。这里Department类的实例信任于Company类的实例而留存。

让大家更上一层楼商量基本聚合和重组聚合。

主干聚合 
有成团关系的关系建议,有个别类是别的有个别类的一有个别。在三个凑合关系中,子类实例能够比父类存在越来越长的岁月。为了彰显三个会面关系,你画一条从父类到有的类的实线,并在父类的关系末端画八个未填充棱形。图
12 显示车和轮胎间的相会关系的事例。

威尼斯人官网 12

图 12: 一个成团关联的例子

结缘聚合 
组合聚合关系是汇聚关系的另一种样式,不过子类实例的生命周期注重于父类实例的生命周期。在图第13中学,展现了Company类和Department类之间的结合关系,注意组合关系如聚合关系一致绘制,然而此次菱形是被填充的。

威尼斯人官网 13

图 13: 一个组成关系的事例

在图 第13中学的关系建立模型中,三个Company类实例最少总有二个Department类实例。因为涉及是结合关系,当Company实例被移除/销毁时,Department实例也将机关地被移除/销毁。组合聚合的另贰个重大功效是局地类只可以与父类的实例相关(比释迦牟尼讲,大家例子中的Company类)。

反射关联 
今昔我们早已讨论了具有的涉嫌类型。仿佛你可能注意到的,大家的享有例子已经显示了三个不一致类之间的关系。然则,类也能够利用反射关联与它自个儿相关联。初步,那或者没有趣,可是切记,类是空泛的。图
14 呈现三个Employee类如何通过manager /
manages角色与它自个儿有关。当一个类关联到它自个儿时,这并不意味着类的实例与它自个儿有关,而是类的三个实例与类的另一个实例相关。

威尼斯人官网 14

图 14:三个反光关联关系的实例

图 14
描绘的涉及说惠氏(Beingmate)个Employee实例可能是其他四个Employee实例的经纪。但是,因为“manages”的关系剧中人物有
0..*的多种性描述;四个雇员大概不受任何别的雇员管理。

可见性 
在面向对象的规划中,存在属性及操作可知性的号子。UML
识别多种等级次序的可以知道性:public,protected,private及package。

UML
标准并不供给品质及操作可知性必需出示在类图上,然而它须要为各种属性及操作定义可以预知性。为了在类图上的呈现可以预知性,放置可以看到性标识于属性或操作的名字从前。即使UML 钦命五种可知性类型,但是实际上的编程语言可能扩大额外的可知性,或不扶植UML 定义的可以知道性。表4展现了 UML 帮忙的可以看见性类型的两样标识。

表 4:UML 帮助的可以看到性类型的申明

标志 可见性类型
+ Public
# Protected
Private
~ Package

最近,让我们看四个类,以证实属性及操作的可知性类型。在图 15中,全体的习性及操作都以public,除了 updateBalance 操作。updateBalance
操作是protected。

威尼斯人官网 15

图 15:八个 BankAccount 类表明它的习性及操作的可以预知性


回页首

UML
2 补充

既然如此大家早已覆盖了基础和高等主旨,咱们将覆盖一些由UML 1.
x充实的类图的新标识。

实例 
当一个系统结营造立模型时,展现例子类实例临时候是实用的。为了这种布局建立模型,UML
2
提供 实例标准 成分,它显得在系统中央银行使例子(或具体)实例的值得注意的音信。

实例的标记和类一样,不过代表最上部区域中仅部分类名,它的名字是由此拼接的:

Instance Name : Class Name

比喻来讲:

Donald : Person

因为突显实例的指标是显得值得注意的或相关的音讯,没须要在您的模子中蕴藏全部实体性质及操作。相反地,仅仅显示感兴趣的性质及其值是全然适用的。如图16所描述。

威尼斯人官网 16

图 16:Plane类的三个实例例子(只展示感兴趣的属性值)

只是,仅仅呈现成个别实例而从未它们的涉及不太实用;因而,UML 2
也同意在实体层的关系/关联建立模型。绘制关联与平常的类关系的平整平等,除了在建立模型关联时有多少个外加的供给。附加的限量是,关联关系必得与类图的关系相平等,何况涉嫌的剧中人物名字也亟须与类图相平等。它的三个例证展现于图
17 中。在这里个事例中,实例是图 6 中类图的例子实例。

威尼斯人官网 17

图 17:图 6 中用实例取代类的事例

图 17
有Flight类的三个实例,因为类图提议了在Plane类和Flight类之间的关系是 0或多。由此,大家的例子给出了三个与NX0337
Plane实例相关的Flight实例。

角色 
建立模型类的实例不常比期望的进一步详细。有的时候,你可能可是想要在三个相当多的相似档期的顺序做类关系的模型。在这里种情景下,你应该利用 角色 记号。剧中人物暗号类似于实例暗记。为了创设类的剧中人物模型,你画二个方格,并在里面放置类的剧中人物名及类名,作为实体暗号,然则在此意况你不能够加下划线。图
18 展现二个由图 14 中图描述的雇员类扮演的剧中人物实例。在图 1第88中学,大家得以感到,就算雇员类与它自己有关,关系真的是有关雇员之间扮演主任及团体成员的剧中人物。

威尼斯人官网 18

图 18:叁个类图突显图第114中学扮演不相同剧中人物的类

留心,你无法在纯粹类图中做类剧中人物的建立模型,固然图
18显得你可以这么做。为了选择剧中人物暗记,你将会须求选用上边研究的内部结构记号。

里面包车型大巴协会 
UML 2
结构图的更使得的成效之一是新的内部结构暗号。它同意你来得二个类或其他的贰个分类器怎么样在里面整合。那在
UML 1. x
中是不也许的,因为旗号限制你不得不展现五个类所拥有的聚众关系。未来,在 UML
2 中,内部的构造暗号令你更精通地出示类的逐条部分怎么样保证关系。

让大家看二个实例。在图 18中我们有贰个类图以表现贰个Plane类怎么样由多个引擎和五个调节软件对象组成。从那个图中省略的东西是显得关于飞机部件怎么着棉被服装配的有的消息。从图
18
的图,你不能表明,是种种调整软件对象说了算七个引擎,还是三个调控软件对象说了算八个引擎,而另二个调节三个发动机。

威尼斯人官网 19

图 19: 只呈现对象时期涉及的类图

绘制类的内在结构将会革新这种景况。开端时,你通过用一个区域画一个方格。最上端的区域包罗类名字,而异常低的区域满含类的内部结构,呈现在它们父类中承受分化脚色的片段类,剧中人物中的每种部分类也涉嫌到此外类。图
19 展现了Plane类的内部结构;注意内部结构怎么着澄清混乱性。

威尼斯人官网 20

图 20:Plane类的内部结构例子。

在图 20 中Plane有三个ControlSoftware 对象,并且每一个调控三个引擎。在图左侧上的
ControlSoftware(control1)调整引擎 1 和 2 。在图侧边的
ControlSoftware(control2)调节引擎 3 和 4 。 

相关文章