顶部区域显示类的名字,在底层区域中大家得以见见Flight类有多少个操作

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

 

基础

基础

如先前所涉及的,类图的目标是体现建立模型系统的体系。在超越2/4的 UML
模型中那个项目包含:

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

  • 接口

  • 数据类型

  • 组件

  • 接口

  • 数据类型

  • 组件

UML
为这几个项目起了三个特意的名字:“分类器”。平时地,你能够把分类器当做类,但在技艺上,分类器是越来越普及的术语,它依然引用上边的其他三连串型为好。

UML
为这么些项目起了三个专门的名字:“分类器”。常常地,你能够把分类器当做类,但在技巧上,分类器是更进一步广阔的术语,它依然引用上边包车型大巴其余三种等级次序为好。

类名

类名

类的 UML 表示是2个正方形,垂直地分为多个区,如图 一所示。顶部区域显示类的名字。中间的区域列出类的天性。尾部的区域列出类的操作。当在3个类图上画一个类成分时,你必须求有上面包车型地铁区域,上边包车型大巴三个区域是可挑选的(当图描述仅仅用于彰显分类器间关系的高层细节时,上边包车型地铁八个区域是不供给的)。图
壹 来得三个航道班机怎样作为 UML
类建立模型。正如作者辈所能见到的,名字是 Flight,大家得以在中游区域看到Flight类的三脾性格:flightNumber,departureTime

flightDuration。在底层区域中大家得以旁观Flight类有五个操作:delayFlight
和 getArrivalTime。

类的 UML 表示是三个长方形,垂直地分成八个区,如图 1所示。顶部区域突显类的名字。中间的区域列出类的个性。后面部分的区域列出类的操作。当在四个类图上画一个类成分时,你必要求有上面的区域,上边的一个区域是可接纳的(当图描述仅仅用于显示分类器间事关的高层细节时,上边包车型地铁三个区域是不须要的)。图
一 来得三个航路班机怎么样作为 UML 类建立模型。正如小编辈所能见到的,名字是
Flight,大家能够在中间区域看到Flight类的一个属性:flightNumber,departureTime

flightDuration。在后面部分区域中我们能够看到Flight类有七个操作:delayFlight
和 getArrivalTime。

新匍京视频在线 1

新匍京视频在线 2

图 一: Flight类的类图

图 壹: Flight类的类图

类属性列表

类属性列表

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

类的属性节(中部区域)在分隔线上列出每二个类的习性。属性节是可选取的,固然1用它,就含有类的列表呈现的各类属性。该线用如下格式:

name : attribute type
flightNumber : Integer
name : attribute type
flightNumber : Integer

持续大家的Flight类的例证,大家能够动用性质类型音信来叙述类的属性,如表 1所示。

一而再我们的Flight类的事例,大家得以选用品质类型新闻来讲述类的特性,如表 1所示。

表 一:具备关联类型的Flight类的习性名字

表 一:具备关联类型的Flight类的属性名字

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

在业务类图中,属性类型一般与单位符合,这对于图的或者读者是有意义的(比方,分钟,澳元,等等)。但是,用于转移代码的类图,供给类的脾性类型必须界定在由程序语言提供的项目之中,或含有于在系统中落到实处的、模型的品种之中。

在作业类图中,属性类型一般与单位符合,那对于图的大概读者是有含义的(举个例子,分钟,英镑,等等)。可是,用于转移代码的类图,要求类的属性类型必须界定在由程序语言提供的花色之中,或含有于在系统中得以完成的、模型的档期的顺序之中。

在类图上显得全数默许值的一定属性,有时是卓有功能的(比如,在银行账户应用程序中,3个新的银行账户会以零为早先值)。UML
标准允许在属性列表节中,通过使用如下的暗记作为默许值的标记:

在类图上海展览中心示全体暗中认可值的特定属性,有时是行得通的(比如,在银行账户应用程序中,贰个新的银行账户会以零为伊始值)。UML
标准允许在属性列表节中,通过利用如下的标记作为私下认可值的标记:

name : attribute type = default value
name : attribute type = default value

比喻来说:

举个例子来讲:

balance : Dollars = 0
balance : Dollars = 0

来得属性暗中同意值是可选用的;图 二呈现三个银行账户类具备贰个名叫 balance的连串,它的暗许值为0。

来得属性默许值是可选择的;图 贰 显示一个银行账户类具有一个名称为
balance的档案的次序,它的私下认可值为0。

新匍京视频在线 3

新匍京视频在线 4

图 贰:突显默感到0比索的balance属性值的银行账户类图。

图 2:突显默感到0美金的balance属性值的银行账户类图。

类操作列表

类操作列表

类操作记录在类图正方形的第二个(最低的)区域中,它也是可接纳的。和天性同样,类的操作以列表格式显示,各种操作在它本人线上。操作使用下列暗号表现:

类操作记录在类图长方形的第四个(最低的)区域中,它也是可选拔的。和总体性同样,类的操作以列表格式展现,各种操作在它本身线上。操作使用下列暗记表现:

    name(parameter list) : type of value returned
  name(parameter list) : type of value returned

上边包车型地铁表 二 中Flight类操作的映照。

下边包车型地铁表 二 中Flight类操作的绚烂。

表 2:从图 二 辉映的Flight类的操作

表 贰:从图 二 炫彩的Flight类的操作

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

图三出示,delayFlight 操作有二个Minutes类型的输入参数 —
numberOfMinutes。可是,delayFlight
操作没有重回值。 1 当多少个操作有参数时,参数被放在操作的括号内;各样参数都应用那样的格式:“参数名:参数类型”。

图三出示,delayFlight 操作有三个Minutes类型的输入参数 —
numberOfMinutes。但是,delayFlight
操作未有重返值。1当二个操作有参数时,参数被放在操作的括号内;每一种参数都采纳那样的格式:“参数名:参数类型”。

新匍京视频在线 5

新匍京视频在线 6

图 三:Flight类操作参数,包涵可选择的“in”标志。

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

当文档化操作参数时,你可能利用多少个可挑选的提示器,以突显参数到操作的输入参数、或输出参数。这么些可挑选的提示器以“in”或“out”出现,如图叁中的操作区域所示。一般的话,除非将选拔一种早期的次序编制程序语言,如Fortran
,那一个提示器只怕会怀有帮衬,不然它们是不必要的。但是,在
C++和Java中,全部的参数是“in”参数,而且遵照UML标准,既然“in”是参数的私下认可类型,大多数人将会遗漏输入/输出提示器。

当文书档案化操作参数时,你只怕接纳三个可选取的指示器,以体现参数到操作的输入参数、或输出参数。那几个可选拔的提示器以“in”或“out”现身,如图三中的操作区域所示。一般的话,除非将应用一种早期的次第编制程序语言,如Fortran
,那几个提示器恐怕会具备支持,否则它们是不须求的。不过,在
C++和Java中,全数的参数是“in”参数,而且遵照UML标准,既然“in”是参数的暗中同意类型,大诸多人将会遗漏输入/输出提示器。

继承

继承

在面向对象的设计中二个百般首要的概念,继承,指的是多少个类(子类)继承除此以外的贰个类(超类)的同样作用,并追加它本身的新职能(3个非才干性的举例,想象本人继续了小编阿娘的形似的音乐力量,不过在自个儿的家里,作者是唯一1个玩电吉他的人)的力量。为了在3个类图上建立模型承接,从子类(要承继行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。思念银行账户的体系:图
四 显示 CheckingAccount 和 SavingsAccount 类怎么着从 BankAccount
类传承而来。

在面向对象的宏图中叁个非常首要的定义,继承,指的是一个类(子类)继承此外的三个类(超类)的同样功效,并追加它和煦的新成效(一个非技能性的举个例子,想象我接二连三了自作者母亲的相似的音乐力量,但是在本身的家里,小编是绝无仅有三个玩电吉他的人)的力量。为了在2个类图上建立模型承继,从子类(要继续行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。思量银行账户的项目:图
四 呈现 CheckingAccount 和 SavingsAccount 类如何从 BankAccount
类承继而来。

新匍京视频在线 7

新匍京视频在线 8

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

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

在图 4 中,承袭关系由各样超类的单独的线画出,那是在IBM Rational
罗丝和IBM Rational
XDE中接纳的方式。然则,有一种叫做 树标记的备选形式能够画出承袭关系。当存在五个或越来越多子类时,如图
四 中所示,除了一而再线象树枝一样混在联合外,你能够使用树形记号。图 5是重绘的与图 四 同样的承袭,不过此次使用了树形暗号。

在图 四 中,承继关系由各类超类的单身的线画出,这是在IBM Rational
罗丝和IBM Rational XDE中使用的秘技。可是,有1种名称叫
树标记的预备模式能够画出承接关系。当存在四个或越来越多子类时,如图 4中所示,除了继续线象树枝一样混在1道外,你能够应用树形暗记。图 五是重绘的与图 四 同样的接二连三,然则本次运用了树形暗号。

新匍京视频在线 9

新匍京视频在线 10

图 5: 叁个行使树形旗号的后续实例

图 五: 一个使用树形暗记的继续实例

抽象类及操作 
精心的读者会小心到,在图 四 和 图5中的图中,类名BankAccount和withdrawal操作使用斜体。那意味着,BankAccount
类是一个抽象类,而withdrawal方法是架空的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount
八个子类都分别地奉行它们分别版本的操作。

抽象类及操作
精心的读者会小心到,在图 四 和 图5中的图中,类名BankAccount和withdrawal操作使用斜体。这表示,BankAccount
类是3个抽象类,而withdrawal方法是抽象的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount
五个子类都分别地奉行它们各自版本的操作。

可是,超类(父类)不自然假设抽象类。典型类作为超类是例行的。

然则,超类(父类)不自然如果抽象类。标准类作为超类是常规的。

关联 
当您系统建立模型时,特定的目标间将会相互关系,而且那么些涉嫌自个儿需求被清楚地建立模型。有二种关系。在那1部分中,笔者将商商议它们中的五个– 双向的关联和单向的关系,而且自个儿将会在Beyond the
basics
一些商量剩下的两种关系类型。请留意,关于哪天该使用每体系型涉及的事无巨细切磋,不属于本文的限量。相反的,作者将会把主要聚焦在每一个关系的用途,并表达怎么样在类图上画出涉及。

关联
当您系统建立模型时,特定的目的间将会相互关系,而且这一个涉及自身要求被清晰地建立模型。有三种关系。在那一有的中,作者将会谈论它们中的四个– 双向的涉嫌和单向的涉嫌,而且作者将会在Beyond the
basics
一对研究剩下的二种关系类型。请留心,关于曾几何时该使用每连串型涉及的详实座谈,不属于本文的限量。相反的,笔者将会把第3集中在种种关系的用途,并表达如何在类图上画出涉及。

双向(标准)的关联 
论及是七个类间的连片。关联合国善后救济总署是被假定是双向的;这意味,五个类相互明白它们间的维系,除非您限定一些别样类型的关系。回看一下Flight
的例子,图 6 呈现了在Flight类和Plane类之间的贰个正规项目的涉及。

双向(标准)的关联
关联是多个类间的连片。关联合国善后救济总署是被假定是双向的;那意味,多少个类相互理解它们间的联系,除非你限定一些其余类型的涉及。回想一下Flight
的例证,图 六 显示了在Flight类和Plane类之间的二个规范项目的关系。

新匍京视频在线 11

新匍京视频在线 12

图 陆:在多少个Flight类和Plane类之间的双向关联的实例

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

二个双向关联用四个类间的实线表示。在线的任1端,你放置三个剧中人物名和多种值。图
陆呈现Flight与2个特定的Plane相关联,而且Flight类知道那么些涉及。因为剧中人物名以Plane类表示,所以Plane承担关联合中学的“assignedPlane”剧中人物。紧接于Plane类后边的多种值描述0…一意味着,当1个Flight实体存在时,能够有四个或未有Plane与之提到(相当于,Plane恐怕还尚未被分配)。图
6也显得Plane知道它与Flight类的关系。在这些涉及中,Flight承担“assignedFlights”剧中人物;图
6的图告诉我们,Plane实体可以不与flight关联(比如,它是1架全新的飞行器)或与从不上限的flight(比方,壹架已经当兵伍年的飞机)关联。

三个双向关联用八个类间的实线表示。在线的任一端,你放置多个剧中人物名和多种值。图
六显示Flight与二个特定的Plane相关联,而且Flight类知道这么些关系。因为剧中人物名以Plane类表示,所以Plane承担关联合中学的“assignedPlane”剧中人物。紧接于Plane类前面包车型大巴多种值描述0…一意味着,当2个Flight实体存在时,可以有五个或从不Plane与之提到(也便是,Plane大概还并未被分配)。图
陆也显示Plane知道它与Flight类的关系。在这么些关系中,Flight承担“assignedFlights”角色;图
陆的图告诉大家,Plane实体能够不与flight关联(比如,它是一架全新的飞行器)或与从不上限的flight(举例,1架已经当兵伍年的飞行器)关联。

鉴于对那么些在论及后面部分恐怕出现的多种值描述以为纳闷,上面包车型地铁表叁列出了部分多种值及它们含义的例子。

是因为对那一个在论及尾部可能现身的多种值描述认为疑忌,下边包车型客车表三列出了有些多种值及它们含义的例子。

表 三: 多种值和它们的意味

表 三: 多种值和它们的象征

莫不的多种值描述

唯恐的多种值描述

表示

表示

含义

含义

0..1

0..1

0个或1个

0个或1个

1

1

只能1个

只能1个

0..*

0..*

0个或两个

0个或四个

*

*

0个或八个

0个或三个

1..*

1..*

1个或我个

三个或本身个

3

3

只能3个

只能3个

0..5

0..5

0到5个

0到5个

5..15

5..15

5到15个

5到15个

单向关系 
新匍京视频在线,在二个单向关系中,三个类是不非亲非故系的,不过唯有贰个类知道这种关联的留存。图 7展现单向关系的透支财务数据的1个实例。

单向关系
在三个单向关系中,多个类是唇齿相依的,不过唯有三个类知道那种关联的存在。图 柒展现单向关系的透支财报的一个实例。

新匍京视频在线 13

新匍京视频在线 14

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

图 七: 单向关系2个实例:OverdrawnAccountsReport 类 BankAccount 类,而
BankAccount 类则对关联一窍不通。

三个单向的关系,表示为一条带有指向已知类的盛开箭头(不闭馆的箭头或三角形,用于标记承接)的实线。就如标准提到,单向关系包含三个剧中人物名和多个多种值描述,不过与专门的学业的双向关联不相同的时,单向关系只包含已知类的剧中人物名和多种值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的脚色。然则,和专门的职业提到分化,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。 2

1个1只的涉嫌,表示为一条带有指向已知类的开放箭头(不休息的箭头或三角形,用于标识承接)的实线。就如标准提到,单向关系蕴含一个剧中人物名和1个多种值描述,可是与正式的双向关联分歧的时,单向关系只含有已知类的剧中人物名和多重值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的剧中人物。可是,和标准提到差异,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。2

软件包 
不可防止,假如您正在为二个大的种类或大的事体领域建立模型,在你的模型上将会有很多区别的分类器。管理全体的类将是一件令人生畏的义务;所以,UML
提供三个称作 软件包的团体成分。软件包使建立模型者能够组织模型分类器到名字空间中,那有个别象文件系统中的文件夹。把二个系统一分配为四个软件包使系统成为轻便驾驭,特别是在各类软件包都表现系统的1个特定部分时。 3

软件包
不可制止,假若您正在为贰个大的系统或大的事务领域建模,在您的模子中校会有许多不等的分类器。管理全体的类将是1件令人生畏的职务;所以,UML
提供贰个称作
软件包的团伙成分。软件包使建立模型者能够协会模型分类器到名字空间中,那有些象文件系统中的文件夹。把二个系统一分配为多少个软件包使系统成为轻巧通晓,特别是在种种软件包都表现系统的1个一定部分时。3

在图中留存二种办法表示软件包。并从未规则必要采纳哪类标记,除了用你个人的决断:哪一类更方便阅读你画的类图。二种办法都以由二个一点都不大的纺锤形(用于固定)嵌套在2个大的星型中开首的,如图
捌 所示。然则建立模型者必须调控包的积极分子怎样表示,如下:

在图中存在二种方式表示软件包。并不曾规则须要利用哪一种标识,除了用你个人的决断:哪一类更有利于阅读你画的类图。三种格局都是由3个十分小的长方形(用于固定)嵌套在三个大的纺锤形中初露的,如图
捌 所示。但是建立模型者必须调整包的分子怎么样表示,如下:

  • 1经济建设模者决定在大正方形中显示软件包的成员,则怀有的那三个成员 4 亟需被放置在星型里面。其余,全部软件包的名字须要放在软件包的不大圆柱形之内(如图
    八 的显得)。

  • 假如建立模型者决定在大的长方形之外展现软件包成员,则兼具将会在图上突显的分子都需求被内置星型之外。为了浮现属于软件包的分类器属于,从各个分类器画一条线到当中有加号的圆圆,那个圆周粘附在软件包之上(图9)。

  • 要是建立模型者决定在大长方形中展现软件包的成员,则具有的那多少个成员4亟需被停放在长方形里面。其余,全部软件包的名字须求放在软件包的十分小星型之内(如图
    8 的来得)。

  • 壹经济建设模者决定在大的纺锤形之外呈现软件包成员,则有着将会在图上展现的分子都急需被平放长方形之外。为了显示属于软件包的分类器属于,从各类分类器画一条线到内部有加号的圆圆,那个圆周粘附在软件包之上(图玖)。

新匍京视频在线 15

新匍京视频在线 16

图 八:在软件包的纺锤形内体现软件包成员的软件包成分例子

图 八:在软件包的长方形内显示软件包成员的软件包成分例子

新匍京视频在线 17

新匍京视频在线 18

图 玖:2个由此连接线表现软件包成员的软件包例子

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

打探基础首要性

叩问基础主要性

在 UML 2中,领会类图的功底更为主要。那是因为类图为有着的别样协会图提供基本的塑造块。如组件或对象图(仅仅是举了些例子)。

在 UML 第22中学,领悟类图的功底更为主要。那是因为类图为持有的任何社团图提供基本的构建块。如组件或对象图(仅仅是举了些例子)。



回页首

回页首

当先基础

越过基础

到此结束,笔者壹度介绍了类图的基础,可是请继续往下读!在底下的有的中,笔者将会辅导你到您会选拔的类图的更重要的地方。这个包涵UML
二 标准中的接口,别的的二种关系类型,可知性和任何补偿。

到此结束,小编已经介绍了类图的功底,可是请继续往下读!在底下的1部分中,作者将会辅导您到你会动用的类图的更关键的上面。那几个归纳UML
贰 正规中的接口,此外的三种关系类型,可知性和别的补给。

接口 
在本文的日前,我提议你以类来设想分类器。事实上,分类器是三个尤为相似的概念,它包含数据类型和接口。

接口
在本文的日前,笔者提出您以类来思索分类器。事实上,分类器是三个更为相似的定义,它包蕴数据类型和接口。

至于哪天、以及怎么着快速地在系统结构图中动用数据类型和接口的完好探讨,不在本文的座谈范围之内。既然那样,笔者怎么要在此处谈起数据类型和接口呢?你大概想在结构图上效仿这么些分类器类型,在那年,使用准确的符号来表示,也许至少知道这么些分类器类型是第1的。不得法地绘制那个分类器,很有希望将使您的构造图读者感觉混乱,未来的系统将不能够适应必要。

至于哪一天、以及哪些高效地在系统结构图中采纳数据类型和接口的欧洲经济共同体研讨,不在本文的切磋范围以内。既然那样,我干什么要在那边聊起数据类型和接口呢?你或然想在结构图上模仿那些分类器类型,在这一年,使用科学的标识来代表,恐怕至少知道这一个分类器类型是重大的。不正确地绘制这么些分类器,很有异常的大希望将使你的协会图读者以为混乱,现在的种类将无法适应须要。

贰个类和3个接口差别:2个类能够有它造型的实在实例,但是3个接口必须至少有3个类来兑现它。在
UML 第22中学,三个接口被以为是类建立模型成分的特殊化。因而,接口就象类那样绘制,可是星型的顶部区域也有文件“interface”,如图
10所示。 5

3个类和3个接口区别:一个类能够有它造型的真人真事实例,但是2个接口必须至少有八个类来得以落成它。在
UML 2中,贰个接口被感到是类建立模型成分的特殊化。因而,接口就象类那样绘制,可是星型的顶部区域也有文件“interface”,如图
拾所示。5

新匍京视频在线 19

新匍京视频在线 20

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

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

在图 10中显示的图中,Professor和Student类都达成了Person的接口,但并不从它一而再。大家领会那点是由于上边四个原因:一)
Person对象作为接口被定义 —
它在目的的名字区域中有“interface”文本,而且大家看看由于Professor和Student对象依照画类对象的条条框框(在它们的名字区域中未有额外的分类器文本)标示,所以它们是 对象。
二) 我们掌握承接在此地未有被出示,因为与带箭头的线是点线而不是实线。如图
十所示,一条带有闭合的单向箭头的 线意味着完结(或实行);正如大家在图
四 中所见到的,一条带有闭合单向箭头的线意味着继续。

在图 第10中学呈现的图中,Professor和Student类都实现了Person的接口,但并不从它一而再。我们知晓这或多或少是出于上边五个原因:1)
Person对象作为接口被定义 —
它在目的的名字区域中有“interface”文本,而且大家看出由于Professor和Student对象依照画类对象的规则(在它们的名字区域中未有额外的分类器文本)标示,所以它们是
对象。 2)
大家领会承接在那里没有被出示,因为与带箭头的线是点线而不是实线。如图 10所示,一条带有闭合的单向箭头的 线意味着实现(或实施);正如大家在图
肆 中所见到的,一条带有闭合单向箭头的线意味着继续。

更加多的涉及 
在下边,笔者谈谈了双向关联和单向关系。现在,作者将会介绍剩下的三种档期的顺序的关联。

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

关联类 
在关系建立模型中,存在有的情状下,你要求包括其余类,因为它富含了有关关联的有价值的音信。对于那种处境,你会采用 关联类 来绑定你的为主关系。关联类和一般类一样表示。区别的是,主类和关联类之间用一条相交的点线连接。图
1壹 显示一个航空工业实例的关联类。

关联类
在提到建立模型中,存在部分动静下,你须求包涵其余类,因为它含有了有关关联的有价值的音信。对于那种景象,你会动用
关联类
来绑定你的中坚关系。关联类和一般类同样表示。分裂的是,主类和关联类之间用一条相交的点线连接。图
1一 显示一个航空工业实例的关系类。

新匍京视频在线 21

新匍京视频在线 22

图 1一:扩张关联类 MileageCredit

图 11:扩张关联类 MileageCredit

在图 11 中突显的类图中,在Flight类和 FrequentFlyer
类之间的涉及,产生了名叫MileageCredit的涉及类。那意味着当Flight类的3个实例关联到 FrequentFlyer
类的2个实例时,将会发生 MileageCredit 类的3个实例。

在图 11 中体现的类图中,在Flight类和 FrequentFlyer
类之间的涉嫌,产生了号称
MileageCredit的涉及类。那象征当Flight类的一个实例关联到 FrequentFlyer
类的三个实例时,将会生出 MileageCredit 类的三个实例。

聚合 
集合是一种专门类型的关系,用于描述“总体到有的”的涉嫌。在着力的集聚关系中, 部分类 的生命周期独立于 整体类 的生命周期。

聚合
聚拢是1种特别类型的关系,用于描述“总体到一些”的涉嫌。在主题的聚合关系中,
部分类 的生命周期独立于 整体类 的生命周期。

比喻来讲,大家能够设想, 是二个整机实体,而 车轮 轮胎是整辆车的1部分。轮胎能够在安插到车时的前多少个礼拜被营造,并放置于酒店中。在那个实例中,Wheel类实例清楚地单独地Car类实例而留存。可是,有个别景况下, 部分 类的生命周期并  独立于 整体 类的生命周期

那称之为合成聚合。比方来说,牵挂公司与部门的涉嫌。 集团和机构 都建立模型成类,在信用社存在之前,部门不可能存在。那里Department类的实例信赖于Company类的实例而存在。

让我们更进一步切磋基本聚合和构成聚合。

着力聚合 
有成团关系的涉嫌建议,有个别类是其余某些类的1局地。在3个成团关系中,子类实例能够比父类存在更加长的小时。为了表现1个集结关系,你画一条从父类到一些类的实线,并在父类的涉及末端画八个未填充棱形。图
1二 展现车和轮胎间的会面关系的例证。

新匍京视频在线 23

图 1二: 多少个集合关联的例证

组合聚合 
结缘聚合关系是集合关系的另壹种方式,可是子类实例的生命周期信赖于父类实例的生命周期。在图一叁中,展现了Company类和Department类之间的重组关系,注意组合关系如聚合关系一样绘制,可是此番菱形是被填充的。

新匍京视频在线 24

图 壹叁: 贰个整合关系的事例

在图 一三中的关系建立模型中,八个Company类实例至少总有三个Department类实例。因为涉及是结合关系,当Company实例被移除/销毁时,Department实例也将活动地被移除/销毁。组合聚合的另三个根本意义是局地类只好与父类的实例相关(举个例子来讲,大家例子中的Company类)。

反射关联 
方今我们曾经商讨了独具的关系类型。就像您可能注意到的,我们的具有例子已经显得了七个不一样类之间的涉及。但是,类也足以行使反射关联与它本人相关联。开头,那只怕未有意义,不过切记,类是画个饼来解除饥饿的。图
1四 展现3个Employee类怎样通过manager /
manages剧中人物与它本人有关。当三个类关联到它本身时,那并不代表类的实例与它本人有关,而是类的2个实例与类的另3个实例相关。

新匍京视频在线 25

图 1肆:四个反光关联关系的实例

图 14描绘的涉及说美赞臣(Meadjohnson)个Employee实例大概是其它3个Employee实例的经营。然则,因为“manages”的关系剧中人物有
0..*的多种性描述;多少个雇员可能不受任何别的雇员管理。

可见性 
在面向对象的统一希图中,存在属性及操作可知性的号子。UML
识别八体系型的可知性:public,protected,private及package。

UML
标准并不要求质量及操作可知性必须出示在类图上,不过它必要为各种属性及操作定义可知性。为了在类图上的展现可知性,放置可知性标记于属性或操作的名字从前。虽然UML 钦命各样可见性类型,不过实际的编制程序语言也许扩张额外的可知性,或不援救UML 定义的可知性。表四显示了 UML 协理的可知性类型的两样标识。

表 4:UML 援助的可知性类型的注明

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

今后,让我们看2个类,以评释属性及操作的可知性类型。在图 15中,全部的习性及操作都是public,除了 updateBalance 操作。updateBalance
操作是protected。

新匍京视频在线 26

图 一5:三个 BankAccount 类表达它的性质及操作的可知性


回页首

UML
2 补充

既然大家已经覆盖了根基和高档核心,大家将掩盖一些由UML 1.
x日增的类图的新标识。

实例 
当一个系统结构建立模型时,呈现例子类实例有时候是有效的。为了那种组织建立模型,UML
2提供 实例规范 成分,它显得在系统中使用例子(或具体)实例的值得注意的音讯。

实例的标志和类同样,不过代表顶端区域中仅有的类名,它的名字是经过拼接的:

Instance Name : Class Name

举个例子来讲来讲:

Donald : Person

因为体现实例的目标是展现值得注意的或相关的音信,没必要在你的模子中隐含全部实体性质及操作。相反地,仅仅显示感兴趣的品质及其值是完全适用的。如图16所描述。

新匍京视频在线 27

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

只是,仅仅展现某个实例而从不它们的关系不太实用;由此,UML 2也同目的在于实体层的涉及/关联建立模型。绘制关联与一般的类关系的条条框框平等,除了在建立模型关联时有3个叠加的须要。附加的限制是,关联关系必须与类图的涉嫌相平等,而且关乎的剧中人物名字也非得与类图相平等。它的3个事例显示于图
壹七 中。在这些事例中,实例是图 6 中类图的例证实例。

新匍京视频在线 28

图 壹七:图 6 中用实例代替类的事例

图 一柒有Flight类的1个实例,因为类图提议了在Plane类和Flight类之间的涉嫌是 0或多。因而,大家的例子给出了多个与NX0337Plane实例相关的Flight实例。

角色 
建立模型类的实例有时比期望的特别详细。有时,你大概唯有想要在3个较多的相似等级次序做类关系的模型。在那种地方下,你应有利用 角色 暗记。剧中人物暗记类似于实例暗记。为了建立类的剧中人物模型,你画三个方格,并在其间放置类的剧中人物名及类名,作为实体记号,可是在那状态你不可能加下划线。图
1八 展现1个由图 14 中图描述的雇员类扮演的剧中人物实例。在图 1第88中学,我们得以感觉,纵然雇员类与它本人有关,关系真就是关于雇员之间扮演总裁及集体成员的剧中人物。

新匍京视频在线 29

图 1八:贰个类图展现图第11四中学饰演分化剧中人物的类

小心,你不能够在纯粹类图中做类剧中人物的建立模型,尽管图
1八显得你能够如此做。为了采取角色暗记,你将会须要使用上边商讨的内部结构记号。

当中的构造 
UML 贰结构图的更使得的功用之1是新的内部结构暗记。它同意你出示1个类或其余的1个分类器怎样在中间整合。那在
UML 壹. x
中是不也许的,因为暗号限制你不得不展现三个类所具有的聚合关系。今后,在 UML
二 中,内部的布局暗记让你更明了地出示类的一壹部分怎样保证关系。

让大家看二个实例。在图 1第88中学我们有一个类图以显示3个Plane类怎么样由五个引擎和八个调控软件对象组成。从这几个图中省略的东西是显得关于飞机部件怎么样棉被服装配的部分音信。从图
18的图,你无法表明,是每一个调控软件对象说了算七个引擎,依旧贰个调节软件对象说了算三个引擎,而另3个说了算一个引擎。

新匍京视频在线 30

图 1九: 只展现对象之间关系的类图

绘制类的内在结构将会改正那种场合。起头时,你通过用1个区域画两个方格。最上方的区域包括类名字,而十分低的区域包罗类的内部结构,呈现在它们父类中担负分化角色的某些类,剧中人物中的每种部分类也关乎到别的类。图
1玖 展示了Plane类的内部结构;注意内部结构怎样澄清混乱性。

新匍京视频在线 31

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

在图 20 中Plane有两个ControlSoftware 对象,而且每种调整3个引擎。在图左侧上的
ControlSoftware(control一)调控引擎 壹 和 贰 。在图右侧的
ControlSoftware(control二)调整引擎 三 和 四 。 

比方来说,大家得以想像, 是多少个一体化实体,而 车轮
轮胎是整辆车的壹局部。轮胎能够在安放到车时的前多少个星期被营造,并放置于货仓中。在这么些实例中,Wheel类实例清楚地独自地Car类实例而留存。可是,有个别景况下,
部分 类的生命周期并 独立于 整体 类的生命周期 —
那叫做合成聚合。例如来说,思考集团与机构的关联。 信用合作社和部门
都建立模型成类,在厂商存在在此以前,部门无法存在。那里Department类的实例依赖于Company类的实例而存在。

让我们更进一步追究基本聚合和构成聚合。

主导聚合
有成团关系的关系提议,有些类是其余有些类的一有些。在壹个凑合关系中,子类实例能够比父类存在越来越长的年华。为了突显三个汇合关系,你画一条从父类到有的类的实线,并在父类的关系末端画叁个未填充棱形。图
1二 展现车和轮胎间的集纳关系的例证。

新匍京视频在线 32

图 12: 3个成团关联的例证

组成聚合
结合聚合关系是汇合关系的另1种样式,不过子类实例的生命周期注重于父类实例的生命周期。在图一3中,呈现了Company类和Department类之间的构成关系,注意组合关系如聚合关系一样绘制,可是此番菱形是被填充的。

新匍京视频在线 33

图 一三: 3个结合关系的例子

在图 1三中的关系建立模型中,一个Company类实例至少总有八个Department类实例。因为关乎是整合关系,当Company实例被移除/销毁时,Department实例也将自动地被移除/销毁。组合聚合的另2个生死攸关功用是局地类只可以与父类的实例相关(举个例子来讲,大家例子中的Company类)。

反射关联
现行反革命大家已经斟酌了颇具的涉及类型。就像是您恐怕注意到的,大家的装有例子已经显得了七个不相同类之间的涉嫌。可是,类也足以选取反射关联与它自个儿相关联。初阶,那可能未有趣,不过切记,类是空虚的。图
14 显示二个Employee类怎么样通过manager /
manages剧中人物与它自身有关。当2个类关联到它自身时,那并不意味类的实例与它本身有关,而是类的3个实例与类的另一个实例相关。

新匍京视频在线 34

图 1肆:1个反光关联关系的实例

图 1肆描绘的关联说美赞臣(Meadjohnson)(Dumex)个Employee实例恐怕是此外二个Employee实例的COO。然则,因为“manages”的涉嫌剧中人物有
0..*的多种性描述;一个雇员恐怕不受任何别的雇员管理。

可见性
在面向对象的统一希图中,存在属性及操作可知性的标识。UML
识别各个档案的次序的可知性:public,protected,private及package。

UML
标准并不供给质量及操作可知性必须出示在类图上,可是它要求为各种属性及操作定义可知性。为了在类图上的展现可见性,放置可知性标识于属性或操作的名字此前。就算UML 钦命两种可知性类型,但是实际上的编程语言恐怕扩展额外的可见性,或不支持UML 定义的可知性。表4呈现了 UML 接济的可知性类型的不及标记。

表 4:UML 帮忙的可知性类型的阐明

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

当今,让大家看叁个类,以证实属性及操作的可知性类型。在图 15中,全数的个性及操作都以public,除了 updateBalance 操作。updateBalance
操作是protected。

新匍京视频在线 35

图 壹伍:贰个 BankAccount 类表达它的脾气及操作的可知性


回页首

UML 2 补充

既然我们早已覆盖了根基和高端宗旨,大家将覆盖一些由UML 一.
x日增的类图的新标识。

实例
当贰个系统结创设立模型时,突显例子类实例有时候是卓有作用的。为了那种组织建模,UML
二 提供 实例规范
成分,它显得在系统中利用例子(或具体)实例的值得注意的消息。

实例的暗号和类一样,可是代表顶端区域中仅有的类名,它的名字是因此拼接的:

Instance Name : Class Name

比喻来讲:

Donald : Person

因为显示实例的目的是呈现实价值得注意的或相关的消息,没须求在您的模子中涵盖全部实体性质及操作。相反地,仅仅显示感兴趣的习性及其值是截然适用的。如图1陆所描述。

新匍京视频在线 36

图 1六:Plane类的多个实例例子(只体现感兴趣的属性值)

然而,仅仅显示某个实例而尚未它们的涉及不太实用;因而,UML 2也同目的在于实体层的关联/关联建立模型。绘制关联与一般的类关系的条条框框平等,除了在建模关联时有一个外加的须求。附加的限定是,关联关系必须与类图的关联相平等,而且关乎的剧中人物名字也亟须与类图相平等。它的一个事例显示于图
17 中。在那些事例中,实例是图 陆 中类图的例子实例。

新匍京视频在线 37

图 一7:图 6 中用实例替代类的事例

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

角色
建模类的实例有时比期望的尤为详细。有时,你大概只是想要在二个较多的貌似层次做类关系的模子。在那种景色下,你应有使用
角色
记号。角色暗号类似于实例暗记。为了建立类的角色模型,你画3个方格,并在里边放置类的剧中人物名及类名,作为实体暗记,不过在那情景你不能加下划线。图
18 显示2个由图 1肆 中图描述的雇员类扮演的剧中人物实例。在图 18中,大家得以以为,固然雇员类与它本人有关,关系着实是有关雇员之间扮演CEO及团伙成员的剧中人物。

新匍京视频在线 38

图 1八:一个类图展现图第114中学扮演分歧剧中人物的类

专注,你不可能在纯粹类图中做类剧中人物的建立模型,就算图
18出示你能够如此做。为了利用剧中人物暗记,你将会需求利用上边探讨的内部结构暗号。

里头的布局
UML 二结构图的更有效的功能之一是新的内部结构暗记。它同意你体现三个类或别的的3个分类器怎样在里边整合。那在
UML 一. x
中是不容许的,因为旗号限制你只好彰显二个类所享有的成团关系。现在,在 UML
2 中,内部的协会暗记让您更驾驭地展现类的逐条部分如何保持关系。

让大家看1个实例。在图 1第88中学我们有三个类图以表现3个Plane类怎么着由八个引擎和四个调控软件对象组成。从那么些图中省略的事物是呈现关于飞机部件怎样棉被服装配的局地新闻。从图
1八的图,你不恐怕表明,是各样调整软件对象说了算多个引擎,依然一个调控软件对象说了算四个引擎,而另三个垄断(monopoly)3个内燃机。

新匍京视频在线 39

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

绘制类的内在结构将会立异那种情状。开端时,你通过用2个区域画贰个方格。最上端的区域包括类名字,而相当的低的区域包罗类的内部结构,彰显在它们父类中担负不一样剧中人物的局地类,剧中人物中的每个部分类也涉嫌到其余类。图
1玖 展现了Plane类的内部结构;注意内部结构怎么样澄清混乱性。

新匍京视频在线 40

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

在图 20 中Plane有四个 ControlSoftware
对象,而且各类调整二个引擎。在图左侧上的
ControlSoftware(control一)调控引擎 壹 和 贰 。在图左边的
ControlSoftware(control贰)调整引擎 三 和 4 。


回页首

结论

足足存在七个了然类图的重永州由。第二个是它展现系统分类器的静态结构;第二个理由是图为UML描述的别的协会图提供了大旨暗号。开辟者将会认为类图是为她们越发建立的;不过别的的集团成员将发掘它们也是可行的。业务分析师能够用类图,为系统的专门的工作远景建立模型。正如大家将会在本种类有关
UML 基础的小说中观看的,其余的图 —
包涵活动图,种类图和状态图——参考类图中的类建立模型和文书档案化。

至于“UML 基础”的本类别的末端的部件图。


回页首

脚注

1
delayFlight未有再次回到值,因为本身作出了统一打算决定,不要重返值。有有些方可争辩的是,延迟操作应该回到新的达到时间,而且,如若是那种场合,操作属性将显得为
delayFlight(numberOfMinutes : Minutes) : Date。

2大概看起来很意外, BankAccount 类不清楚
OverdrawnAccountsReport
类。那几个建模使报表类能够明白它们报告的业务类,不过专业类不明了它们正在被报告。那解开多个目的的耦合,并就此使系统变得更能适应变化。

3
软件包对于团体你的模型类是特大的,可是切记首要的一点是,你的类图应该是关于建立模型系统的轻易沟通的音讯。在您的软件包有不胜枚举类的状态下,最佳使用多个宗旨类图,而不是可是产生一个大的类图。

4
要驾驭主要一点,当本身说“全部的那个成员”时,小编只是意味着在眼下图中的类将展现出来。呈现一个有内容的软件包的图,不必要出示它的持有剧情。它能够遵从一些规则,展现包蕴成分的子集,这么些规则就是毫无全部的软件包分类器都是不能缺少的。

5 当画二个类图时,在 UML
规范中,全体要做的只是把类放入正方形的顶部区域,而你同理管理接口;不过,UML
规范以为,在那一个区域放置“class”文本是可选的,借使类未有呈现,那么它应该被借使。

 

相关文章