类图的目标是显示建立模型系统的类型皇冠现金app

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

基础

如先前所涉嫌的,类图的指标是呈现建立模型系统的系列。在当先伍分之一的 UML
模型中这么些品种包含:

  • 接口

  • 数据类型

  • 组件

UML
为这个连串起了二个非常的名字:“分类器”。平日地,你能够把分类器当作类,但在技巧上,分类器是更为广阔的术语,它依然引用上面的其余三系列型为好。

类名

类的 UML 表示是叁个星型,垂直地分成三个区,如图 1
所示。最上端区域彰显类的名字。中间的区域列出类的质量。底部的区域列出类的操作。当在二个类图上画贰个类成分时,你一定要要有上边包车型大巴区域,下边的一个区域是可选拔的(当图描述仅仅用于展现分类器间关系的高层细节时,上边包车型客车三个区域是不供给的卡塔 尔(英语:State of Qatar)。图
1 来得一个航程班机怎么样作为 UML
类建立模型。正如大家所能看见的,名字是 Flight,大家能够在个中区域见到Flight类的3性格格:flightNumber,departureTime

flightDuration。在底层区域中咱们得以见到Flight类有多个操作:delayFlight
和 getArrivalTime。

皇冠现金app 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。

皇冠现金app 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 当二个操作有参数时,参数被放在操作的括号内;每一种参数都选取那样的格式:“参数名:参数类型”。

皇冠现金app 3

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

当文档化操作参数时,你恐怕应用三个可筛选的提醒器,以展现参数到操作的输入参数、或输出参数。那么些可筛选的提醒器以“in”或“out”现身,如图3中的操作区域所示。日常的话,除非将使用意气风发种开始时代的程序编制程序语言,如Fortran
,这么些提示器大概会有所帮忙,不然它们是不供给的。然则,在
C++和Java中,全部的参数是“in”参数,何况依照UML标准,既然“in”是参数的私下认可类型,大超级多人将会疏漏输入/输出提示器。

继承

在面向对象的兼备中三个不行首要的概念,继承,指的是三个类(子类卡塔尔国继承其余的八个类(超类卡塔尔国的后生可畏致成效,并扩充它和煦的新效率(一个非技巧性的比喻,想象本身继续了自己阿娘的相仿的音乐力量,可是在本身的家里,小编是独一无二八个玩电吉他的人卡塔尔国的技艺。为了在一个类图上建立模型世襲,从子类(要世袭行为的类卡塔 尔(英语:State of Qatar)拉出一条闭合的,单键头(或三角形卡塔尔国的实线指向超类。构思银行账户的项目:图
4 展现 CheckingAccount 和 SavingsAccount 类如何从 BankAccount
类世襲而来。

皇冠现金app 4

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

在图 4 中,世袭关系由每一种超类的独门的线画出,那是在IBM Rational
罗斯和IBM Rational
XDE中央银行使的秘技。不过,有意气风发种叫做 树标记的预备格局能够画出世袭关系。当存在八个或越来越多子类时,如图
4 中所示,除了一而再线象树枝同样混在一同外,你能够接收树形暗记。图 5
是重绘的与图 4 同样的持续,不过此番使用了树形暗号。

皇冠现金app 5

图 5: 叁个施用树形记号的世袭实例

抽象类及操作 
稳重的读者会小心到,在图 4 和 图5中的图中,类名BankAccount和withdrawal操作使用斜体。那意味着,BankAccount
类是两个抽象类,而withdrawal方法是空泛的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount
五个子类都各自地施行它们分别版本的操作。

可是,超类(父类卡塔 尔(阿拉伯语:قطر‎不自然假若抽象类。规范类作为超类是常规的。

关联 
当您系统建立模型时,特定的靶子间将会相互关系,并且这几个涉嫌本人必要被明晰地建模。有各类关系。在此风流洒脱部分中,小编将会探讨它们中的多个– 双向的涉嫌和单向的涉及,並且自身将会在Beyond the
basics
局地商讨剩下的二种关系类型。请小心,关于哪一天该使用每种类型涉及的详尽探讨,不属于本文的约束。相反的,笔者将会把关键聚焦在每一种关系的用场,并证实怎么样在类图上画出涉嫌。

双向(标准)的关联 
波及是三个类间的连结。关联合国善后救济总署是被假定是双向的;那象征,七个类互相理解它们间的牵连,除非您约束一些任何项目标涉及。回看一下Flight
的例证,图 6 彰显了在Flight类和Plane类之间的贰个行业内部项指标涉嫌。

皇冠现金app 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
显示单向关系的透支财务数据的三个实例。

皇冠现金app 7

图 7: 单向关系多少个实例:OverdrawnAccountsReport 类 BankAccount 类,而
BankAccount 类则对关系胸无点墨。

八个三只的涉嫌,表示为一条带有指向已知类的绽放箭头(不平息的箭头或三角形,用于标记世襲卡塔 尔(阿拉伯语:قطر‎的实线。有如标准提到,单向关系包蕴二个剧中人物名和二个多种值描述,可是与标准的双向关联分裂的时,单向关系只含有已知类的剧中人物名和多重值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,并且知道
BankAccount
类扮演“overdrawnAccounts”的剧中人物。但是,和正式提到差别,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。 2

软件包 
不可制止,假如你正在为叁个大的连串或大的业务领域建模,在你的模子中校会有不胜枚举不如的分类器。管理全体的类将是黄金年代件令人生畏的天职;所以,UML
提供四个称呼 软件包的集体成分。软件包使建立模型者能够组织模型分类器到名字空间中,那有个别象文件系统中的文件夹。把叁个系统一分配为多个软件包使系统成为轻巧掌握,特别是在各种软件包都表现系统的叁个一定部分时。 3

在图中留存两种情势表示软件包。并从未法则必要运用哪一种标记,除了用你个人的剖断:哪个种类更实惠阅读你画的类图。三种方法都是由三个相当小的星型(用于固定卡塔 尔(英语:State of Qatar)嵌套在一个大的圆锥形中初始的,如图
8 所示。然而建立模型者必需决定包的积极分子怎么样表示,如下:

  • 大器晚成经济建设模者决定在大圆锥形中体现软件包的积极分子,则兼具的那么些成员 4 急需被放置在正方形里面。其它,全部软件包的名字需求放在软件包的超小星型之内(如图
    8 的显得卡塔 尔(英语:State of Qatar)。

  • 假若建立模型者决定在大的长方形之外展现软件包成员,则有所将会在图上呈现的分子都亟需被安放纺锤形之外。为了展示归属软件包的分类器归属,从每种分类器画一条线到内部有加号的圆圆,那个圆周粘连在软件包之上(图9卡塔 尔(英语:State of Qatar)。

皇冠现金app 8

图 8:在软件包的星型内显示软件包成员的软件包成分例子

皇冠现金app 9

图 9:多少个由此连接线表现软件包成员的软件包例子

刺探根基首要性

在 UML 第22中学,掌握类图的底蕴更为重要。那是因为类图为富有的其余组织图提供基本的营造块。如组件或对象图(仅仅是举了些例子卡塔 尔(英语:State of Qatar)。


回页首

超过功底

到此停止,作者早已介绍了类图的根基,不过请继续往下读!在上面包车型大巴片段中,小编将会指点您到您会选用的类图的更主要的方面。这个回顾UML
2 正经中的接口,别的的三种关系类型,可以预知性和其余补给。

接口 
在本文的前边,笔者提出您以类来思忖分类器。事实上,分类器是三个更为相仿的概念,它回顾数据类型和接口。

关于什么日期、甚至怎么焦急迅地在系统结构图中运用数据类型和接口的完好钻探,不在本文的商酌范围以内。既然那样,我为啥要在此聊到数据类型和接口呢?你或许想在结构图上效仿这么些分类器类型,在此个时候,使用准确的标记来代表,可能起码知道那么些分类器类型是非常重要的。不科学地绘制那几个分类器,很有望将使您的布局图读者认为混乱,现在的系统将不能够适应要求。

一个类和二个接口差异:四个类可以有它造型的忠实实例,但是一个接口必得至稀有贰个类来兑现它。在
UML 第22中学,三个接口被以为是类建立模型成分的特殊化。因而,接口就象类那样绘制,不过长方形的顶上部分区域也是有文件“interface”,如图
10
所示。 5

皇冠现金app 10

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

在图 10中展现的图中,Professor和Student类都贯彻了Person的接口,但并不从它继续。我们知道那或多或少是出于下边八个原因:1)
Person对象作为接口被定义 —
它在对象的名字区域中有“interface”文本,何况大家看出由于Professor和Student对象依据画类对象的法则(在它们的名字区域中从不额外的分类器文本卡塔尔国标示,所以它们是 对象。
2) 我们精通世襲在这里地未有被出示,因为与带箭头的线是点线实际不是实线。如图
10
所示,一条带有闭合的单向箭头的 线意味着完成(或实行卡塔尔国;正如大家在图
4 中所见到的,一条带有闭合单向箭头的线意味着继续。

越来越多的涉嫌 
皇冠现金app,在地点,笔者谈谈了双向关联和单向关系。以后,笔者将会介绍剩下的三种类型的涉嫌。

关联类 
在提到建立模型中,存在部分状态下,你需求包罗其它类,因为它包含了关于关联的有价值的新闻。对于这种地方,你会利用 关联类 来绑定你的基本关系。关联类和平日类相仿表示。不一致的是,主类和关联类之间用一条相交的点线连接。图
11 展现二个航空工业实例的关联类。

皇冠现金app 11

图 11:扩充关联类 MileageCredit

在图 11 中显得的类图中,在Flight类和 FrequentFlyer
类之间的关系,发生了称得上MileageCredit的涉嫌类。那象征当Flight类的二个实例关联到 FrequentFlyer
类的二个实例时,将会生出 MileageCredit 类的叁个实例。

聚合 
会见是大器晚成种特地类型的关系,用于描述“总体到一些”的涉嫌。在着力的成团关系中, 部分类 的生命周期独立于 整体类 的生命周期。

比世尊讲,大家得以想象, 是四个后生可畏体化实体,而 车轮 轮胎是整辆车的意气风发有的。轮胎能够在交待到车时的前多少个星期被塑造,并放置于旅馆中。在此个实例中,Wheel类实例清楚地单独地Car类实例而存在。可是,有个别情况下, 部分 类的生命周期并  独立于 整体 类的生命周期

那叫做合成聚合。譬释迦牟尼讲,思量集团与单位的关系。 集团和单位 都建立模型成类,在店堂存在在此以前,部门不可能存在。这里Department类的实例依赖于Company类的实例而留存。

让我们更进一层商量基本聚合和烧结聚合。

着力聚合 
有成团关系的关系提议,有些类是其它某些类的大器晚成都部队分。在二个聚集关系中,子类实例能够比父类存在越来越长的年华。为了展现八个成团关系,你画一条从父类到部分类的实线,并在父类的关联末端画三个未填充棱形。图
12 展现车和轮胎间的集合关系的事例。

皇冠现金app 12

图 12: 三个集结关联的例子

重新整合聚合 
整合聚合关系是晤面关系的另意气风发种格局,可是子类实例的生命周期依赖于父类实例的生命周期。在图第13中学,展现了Company类和Department类之间的构成关系,注意组合关系如聚合关系相同绘制,可是这一次菱形是被填充的。

皇冠现金app 13

图 13: 一个结缘关系的事例

在图 13中的关系建立模型中,三个Company类实例最少总有七个Department类实例。因为涉及是结合关系,当Company实例被移除/销毁时,Department实例也将电动地被移除/销毁。组合聚合的另八个最首要职能是有的类只可以与父类的实例相关(比世尊讲,大家例子中的Company类卡塔尔。

反射关联 
今昔我们早已研讨了具有的涉及类型。就像你也许注意到的,大家的富有例子已经呈现了八个不一致类之间的涉嫌。然则,类也足以使用反射关联与它自身相关联。发轫,那大概未有意义,不过切记,类是空虚的。图
14 显示三个Employee类怎么样通过manager /
manages剧中人物与它本人有关。当叁个类关联到它本身时,那并不意味着类的实例与它本身有关,而是类的一个实例与类的另一个实例相关。

皇冠现金app 14

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

图 14
描绘的涉及说美赞臣(Meadjohnson卡塔尔国个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。

皇冠现金app 15

图 15:二个 BankAccount 类说明它的属性及操作的可以看到性


回页首

UML
2 补充

既然我们已经覆盖了根底和高等主旨,我们将掩没一些由UML 1.
x扩充的类图的新标识。

实例 
当叁个系统结创设立模型时,展现例子类实例有时候是卓有效率的。为了这种布局建立模型,UML
2
提供 实例规范 成分,它显得在系统中选用例子(或具体卡塔 尔(阿拉伯语:قطر‎实例的值得注意的音讯。

实例的暗号和类一样,不过代表最上端区域中只有的类名,它的名字是通过拼接的:

Instance Name : Class Name

比方来佛讲:

Donald : Person

因为呈现实例的指标是显得值得注意的或相关的新闻,没需求在您的模子中富含全部实体性质及操作。相反地,仅仅展现感兴趣的属性及其值是截然适用的。如图16所描述。

皇冠现金app 16

图 16:Plane类的几个实例例子(只呈现感兴趣的属性值卡塔 尔(阿拉伯语:قطر‎

唯独,仅仅展现一些实例而从未它们的涉及不太实用;因而,UML 2
也同目的在于实体层的关系/关联建立模型。绘制关联与平时的类关系的平整同样,除了在建立模型关联时有三个附加的供给。附加的范围是,关联关系必须与类图的关联相平等,何况涉嫌的剧中人物名字也一定要与类图相平等。它的一个事例展现于图
17 中。在这里个事例中,实例是图 6 中类图的事例实例。

皇冠现金app 17

图 17:图 6 中用实例替代类的例证

图 17
有Flight类的二个实例,因为类图建议了在Plane类和Flight类之间的关联是 0或多。由此,我们的例证给出了七个与NX0337
Plane实例相关的Flight实例。

角色 
建立模型类的实例不常比期望的愈发详细。不时,你或者生机勃勃味想要在多个超多的相通档期的顺序做类关系的模子。在这里种景况下,你应有运用 角色 暗记。角色暗记形似于实例记号。为了创设类的剧中人物模型,你画叁个方格,并在其间放置类的剧中人物名及类名,作为实体暗号,不过在此情况你无法加下划线。图
18 展现一个由图 14 中图描述的雇员类扮演的剧中人物实例。在图 18中,大家能够以为,固然雇员类与它自己有关,关系真就是关于雇员之间扮演首席营业官及集体成员的剧中人物。

皇冠现金app 18

图 18:叁个类图展现图第114中学扮演区别角色的类

小心,你不能在纯粹类图中做类剧中人物的建立模型,就算图
18显示你能够这么做。为了选拔剧中人物暗记,你将会须求使用上边探讨的内部结构暗记。

里头的构造 
UML 2
结构图的更实用的法力之一是新的内部结构暗号。它同意你显得三个类或此外的叁个分类器怎样在中间整合。那在
UML 1. x
中是不可能的,因为暗号节制你只好呈现多个类所兼有的聚焦关系。以往,在 UML
2 中,内部的布局暗号让您更精晓地显示类的次第部分怎样保障关系。

让大家看一个实例。在图 1第88中学大家有一个类图以表现二个Plane类如何由几个引擎和四个调控软件对象组成。从那么些图中省略的东西是体现关于飞机零部件怎么样棉被服装配的某些音信。从图
18
的图,你不能表明,是各样调节软件对象说了算四个引擎,照旧三个调控软件对象说了算多个引擎,而另二个垄断(monopoly卡塔 尔(英语:State of Qatar)二个内燃机。

皇冠现金app 19

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

绘制类的内在结构将会改正这种情况。开头时,你通过用二个区域画叁个方格。最上边的区域包涵类名字,而非常低的区域包蕴类的内部结构,展现在它们父类中担任差别剧中人物的部分类,角色中的各样部分类也关系到别的类。图
19 来得了Plane类的内部结构;注意内部结构怎么着澄清混乱性。

皇冠现金app 20

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

在图 20 中Plane有五个ControlSoftware 对象,况兼各种调控一个引擎。在图左边上的
ControlSoftware(control1卡塔尔调整引擎 1 和 2 。在图侧边的
ControlSoftware(control2卡塔 尔(英语:State of Qatar)调控引擎 3 和 4 。