顶部区域突显类的名字,类图的指标是显得建立模型系统的门类

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

 

基础

基础

如先前所涉嫌的,类图的目的是显示建立模型系统的档次。在大部的 UML
模型中那些种类包罗:

如先前所提到的,类图的指标是显得建模系统的项目。在多数的 UML
模型中这一个品种包罗:

  • 接口

  • 数据类型

  • 组件

  • 接口

  • 数据类型

  • 组件

UML
为那几个体系起了2个专门的名字:“分类器”。日常地,你能够把分类器当做类,但在本领上,分类器是尤为宽广的术语,它依旧引用上边的其它三种档次为好。

UML
为那些品种起了贰个特地的名字:“分类器”。经常地,你能够把分类器当做类,但在本事上,分类器是进一步广大的术语,它照旧引用上边的别样三种档次为好。

类名

类名

类的 UML 表示是贰个星型,垂直地分为多少个区,如图 1所示。顶部区域呈现类的名字。中间的区域列出类的品质。尾巴部分的区域列出类的操作。当在二个类图上画叁个类元素时,你无法不要有下面的区域,上面包车型客车3个区域是可挑选的(当图描述仅仅用于呈现分类器间事关的高层细节时,上边的多个区域是不要求的)。图
壹 出示三个航道班机怎样作为 UML
类建立模型。正如笔者辈所能见到的,名字是 Flight,大家能够在中游区域看到Flight类的二个属性:flightNumber,departureTime

flightDuration。在底部区域中我们得以观望Flight类有多个操作:delayFlight
和 getArrivalTime。

类的 UML 表示是贰个圆锥形,垂直地分为多少个区,如图 一所示。顶部区域展现类的名字。中间的区域列出类的属性。后面部分的区域列出类的操作。当在多少个类图上画三个类成分时,你无法不要有下面的区域,下边包车型地铁三个区域是可挑选的(当图描述仅仅用于彰显分类器间事关的高层细节时,下边包车型客车多少个区域是不要求的)。图
一 显示二个航道班机怎么着作为 UML 类建立模型。正如作者辈所能见到的,名字是
Flight,大家得以在中游区域看到Flight类的2个属性:flightNumber,departureTime

flightDuration。在后面部分区域中大家得以看到Flight类有四个操作:delayFlight
和 getArrivalTime。

图片 1

图片 2

图 一: Flight类的类图

图 一: Flight类的类图

类属性列表

类属性列表

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

类的属性节(中部区域)在分隔线上列出每一种类的习性。属性节是可挑选的,若是一用它,就含有类的列表彰显的各样属性。该线用如下格式:

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

继承我们的Flight类的事例,大家能够运用性质类型新闻来讲述类的脾气,如表 一所示。

接轨大家的Flight类的例证,我们能够使用性质类型音信来叙述类的天性,如表 壹所示。

表 壹:拥有关联类型的Flight类的性质名字

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

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

在事情类图中,属性类型一般与单位符合,那对于图的也许读者是有含义的(例如,分钟,美金,等等)。然则,用于转移代码的类图,需要类的习性类型必须界定在由程序语言提供的档次之中,或包含于在系统中实现的、模型的体系之中。

在业务类图中,属性类型1般与单位符合,那对于图的也许读者是有意义的(例如,分钟,比索,等等)。不过,用于转移代码的类图,要求类的性情类型必须界定在由程序语言提供的品类之中,或含有于在系统中完成的、模型的类型之中。

在类图上显得全数暗中同意值的一定属性,有时是有效的(例如,在银行账户应用程序中,四个新的银行账户会以零为开首值)。UML
规范允许在属性列表节中,通过行使如下的标志作为暗许值的标记:

在类图上海展览中心示全数默许值的特定属性,有时是立竿见影的(例如,在银行账户应用程序中,3个新的银行账户会以零为伊始值)。UML
规范允许在属性列表节中,通过动用如下的号子作为私下认可值的标记:

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

比喻来讲:

举例来讲:

balance : Dollars = 0
balance : Dollars = 0

展现属性暗许值是可选取的;图 贰展现3个银行账户类具备三个名叫 balance的门类,它的暗许值为0。

来得属性私下认可值是可选用的;图 二 展现三个银行账户类具备多少个名叫
balance的系列,它的暗中认可值为0。

图片 3

图片 4

图 二:显示默以为0台币的balance属性值的银行账户类图。

图 二:展现默以为0英镑的balance属性值的银行账户类图。

类操作列表

类操作列表

类操作记录在类图星型的第五个(最低的)区域中,它也是可选拔的。和品质一样,类的操作以列表格式显示,每一种操作在它和谐线上。操作使用下列记号表现:

类操作记录在类图椭圆形的第陆个(最低的)区域中,它也是可接纳的。和性情同样,类的操作以列表格式彰显,每一种操作在它和谐线上。操作使用下列记号表现:

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

上边包车型客车表 二 中Flight类操作的映射。

下边包车型大巴表 二 中Flight类操作的照耀。

表 二:从图 二 粲焕的Flight类的操作

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

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

图三显得,delayFlight 操作有1个Minutes类型的输入参数 —
numberOfMinutes。但是,delayFlight
操作未有再次回到值。 1 当一个操作有参数时,参数被放在操作的括号内;各类参数都使用那样的格式:“参数名:参数类型”。

图三呈现,delayFlight 操作有一个Minutes类型的输入参数 —
numberOfMinutes。但是,delayFlight
操作未有再次来到值。1当一个操作有参数时,参数被放在操作的括号内;每种参数都选用那样的格式:“参数名:参数类型”。

图片 5

图片 6

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

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

当文书档案化操作参数时,你只怕使用3个可挑选的提醒器,以展现参数到操作的输入参数、或输出参数。这一个可挑选的提醒器以“in”或“out”出现,如图叁中的操作区域所示。一般的话,除非将动用一种早期的先后编制程序语言,如Fortran
,这一个提示器或许会有着扶助,不然它们是不须求的。可是,在
C++和Java中,全数的参数是“in”参数,而且遵照UML规范,既然“in”是参数的暗中同意类型,大多数人将会遗漏输入/输出提示器。

当文书档案化操作参数时,你或然使用多少个可挑选的指示器,以浮现参数到操作的输入参数、或输出参数。那个可挑选的提示器以“in”或“out”出现,如图3中的操作区域所示。一般的话,除非将利用1种早期的主次编制程序语言,如Fortran
,那一个提示器大概会具有辅助,不然它们是不须求的。不过,在
C++和Java中,全体的参数是“in”参数,而且依照UML规范,既然“in”是参数的暗中同意类型,大许多人将会遗漏输入/输出提醒器。

继承

继承

在面向对象的宏图中二个百般重大的定义,继承,指的是1个类(子类)继承其余的贰个类(超类)的均等功效,并追加它和谐的新职能(三个非技巧性的比方,想象作者一连了自家母亲的形似的音乐力量,可是在自个儿的家里,作者是唯壹二个玩电吉他的人)的力量。为了在四个类图上建立模型承袭,从子类(要三番七回行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。思量银行账户的种类:图
肆 突显 CheckingAccount 和 SavingsAccount 类如何从 BankAccount
类传承而来。

在面向对象的宏图中一个可怜关键的定义,继承,指的是二个类(子类)继承除此以外的三个类(超类)的平等功效,并追加它本身的新职能(多个非才能性的比方,想象本身继续了本身母亲的一般的音乐力量,可是在作者的家里,小编是唯1贰个玩电吉他的人)的力量。为了在多个类图上建立模型承继,从子类(要持续行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。思虑银行账户的门类:图
肆 显示 CheckingAccount 和 SavingsAccount 类怎样从 BankAccount
类承袭而来。

图片 7

图片 8

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

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

在图 四 中,承接关系由每一种超类的单身的线画出,那是在IBM Rational
罗丝和IBM Rational
XDE中利用的法子。然则,有壹种名称为 树标记的预备方式能够画出承袭关系。当存在多个或更加多子类时,如图
4 中所示,除了继续线象树枝同样混在一道外,你能够采纳树形暗号。图 伍是重绘的与图 四 一样的持续,但是此次运用了树形暗记。

在图 四 中,承接关系由各类超类的独自的线画出,那是在IBM Rational
Rose和IBM Rational XDE中利用的章程。不过,有1种名称叫
树标记的备选格局能够画出承继关系。当存在七个或更加多子类时,如图 四中所示,除了继续线象树枝同样混在①块外,你能够选择树形暗号。图 5是重绘的与图 4 同样的接续,不过本次运用了树形记号。

图片 9

图片 10

图 伍: 1个采纳树形暗号的接轨实例

图 伍: 四个使用树形记号的延续实例

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

抽象类及操作
仔细的读者会小心到,在图 四 和 图5中的图中,类名BankAccount和withdrawal操作使用斜体。这象征,BankAccount
类是1个抽象类,而withdrawal方法是纸上谈兵的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount
三个子类都各自地试行它们分别版本的操作。

只是,超类(父类)不自然借使抽象类。标准类作为超类是例行的。

唯独,超类(父类)不自然倘诺抽象类。标准类作为超类是常规的。

关联 
当你系统建立模型时,特定的对象间将会互相关系,而且这几个涉嫌本身必要被清楚地建立模型。有种种关系。在这一部分中,笔者将会钻探它们中的多个– 双向的关系和单向的关系,而且小编将会在Beyond the
basics
1对斟酌剩下的三种关系类型。请小心,关于哪天该行使每体系型涉及的详实探究,不属于本文的界定。相反的,我将会把主要集中在各种关系的用处,并证实什么在类图上画出涉及。

关联
当您系统建立模型时,特定的靶子间将会相互关系,而且这个涉嫌本人需求被清晰地建立模型。有各类关系。在这一片段中,作者将会谈谈它们中的七个– 双向的关联和单向的关系,而且自身将会在Beyond the
basics
局地探究剩下的二种关系类型。请留心,关于几时该利用每连串型涉及的详尽座谈,不属于本文的范围。相反的,小编将会把第一集中在各个关系的用途,并表达怎么样在类图上画出涉及。

双向(标准)的关联 
涉嫌是五个类间的交接。关联合国善后救济总署是被假定是双向的;那象征,多个类互相精通它们间的牵连,除非您限定1些任何门类的涉及。回看一下Flight
的事例,图 陆 展现了在Flight类和Plane类之间的1个标准项目标关系。

双向(标准)的关联
事关是四个类间的交接。关联合国善后救济总署是被假定是双向的;那象征,八个类互相了然它们间的维系,除非您限定一些别的门类的关联。回看一下Flight
的例子,图 陆 突显了在Flight类和Plane类之间的二个正规项目标涉及。

图片 11

图片 12

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

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

三个双向关联用多少个类间的实线表示。在线的任一端,你放置三个角色名和多种值。图
陆彰显Flight与二个一定的Plane相关联,而且Flight类知道那么些关系。因为剧中人物名以Plane类表示,所以Plane承担关联合中学的“assignedPlane”剧中人物。紧接于Plane类前面包车型大巴多种值描述0…一意味,当一个Flight实体存在时,能够有三个或尚未Plane与之提到(也正是,Plane大概还未曾被分配)。图
6也显示Plane知道它与Flight类的涉嫌。在那几个关系中,Flight承担“assignedFlights”角色;图
6的图告诉大家,Plane实体能够不与flight关联(例如,它是1架全新的飞机)或与未有上限的flight(例如,一架已经服役5年的飞机)关联。

贰个双向关联用多个类间的实线表示。在线的任一端,你放置三个剧中人物名和多种值。图
陆呈现Flight与3个一定的Plane相关联,而且Flight类知道那么些涉及。因为剧中人物名以Plane类表示,所以Plane承担关联合中学的“assignedPlane”剧中人物。紧接于Plane类前边的多种值描述0…一意味,当贰个Flight实体存在时,能够有1个或未有Plane与之提到(也等于,Plane大概还不曾被分配)。图
陆也突显Plane知道它与Flight类的涉嫌。在那些关系中,Flight承担“assignedFlights”剧中人物;图
陆的图告诉我们,Plane实体能够不与flight关联(例如,它是壹架全新的飞机)或与未有上限的flight(例如,一架已经服役伍年的飞机)关联。

鉴于对那么些在事关尾巴部分大概出现的多种值描述以为质疑,上面包车型客车表三列出了部分多种值及它们含义的事例。

是因为对那么些在提到尾部只怕现身的多种值描述感觉狐疑,上边的表三列出了某些多种值及它们含义的例证。

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

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

或是的多种值描述

唯恐的多种值描述

表示

表示

含义

含义

0..1

0..1

0个或1个

0个或1个

1

1

只能1个

只能1个

0..*

0..*

0个或多少个

0个或四个

*

*

0个或三个

0个或几个

1..*

1..*

2个或自身个

三个或笔者个

3

3

只能3个

只能3个

0..5

0..5

0到5个

0到5个

5..15

5..15

5到15个

5到15个

单向关系 
在3个单向关系中,多少个类是不无关系的,但是唯有1个类知道那种关联的留存。图 7呈现单向关系的透支财经报告的一个实例。

单向关系
在二个单向关系中,多个类是互为表里的,但是唯有贰个类知道那种关联的存在。图 7展现单向关系的透支财务数据的多个实例。

图片 13

图片 14

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

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

1个一面包车型的士关联,表示为一条带有指向已知类的怒放箭头(不关门的箭头或三角形,用于标记承袭)的实线。就好像标准提到,单向关系包涵贰个剧中人物名和一个多种值描述,可是与行业内部的双向关联差异的时,单向关系只包括已知类的剧中人物名和多种值描述。在图
七 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的剧中人物。然则,和正式提到差异,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。 2

一个单方面包车型客车关系,表示为一条带有指向已知类的盛开箭头(不闭馆的箭头或三角形,用于标记承袭)的实线。就如标准提到,单向关系包涵贰个剧中人物名和3个多种值描述,可是与正统的双向关联差别的时,单向关系只含有已知类的剧中人物名和多种值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的剧中人物。可是,和正规提到分化,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。2

软件包 
不可幸免,假如你正在为贰个大的系统或大的政工领域建立模型,在您的模子中将会有众多不一致的分类器。管理全体的类将是一件令人生畏的任务;所以,UML
提供2个号称 软件包的团组织成分。软件包使建立模型者能够组织模型分类器到名字空间中,那有个别象文件系统中的文件夹。把三个类别分为三个软件包使系统成为轻易掌握,尤其是在各个软件包都表现系统的1个一定部分时。 3

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

在图中留存三种办法表示软件包。并从未规则需求运用哪个种类标识,除了用你个人的推断:哪一类更有利阅读你画的类图。二种办法都以由1个非常的小的长方形(用于固定)嵌套在一个大的正方形中开头的,如图
8 所示。可是建立模型者必须调控包的积极分子怎么着表示,如下:

在图中设有三种艺术表示软件包。并未规则供给利用哪一种标识,除了用你个人的判断:哪一种更便利阅读你画的类图。两种艺术都以由二个极小的正方形(用于固定)嵌套在多少个大的长方形中初始的,如图
8 所示。不过建立模型者必须决定包的成员怎么样表示,如下:

  • 一经济建设模者决定在大长方形中显得软件包的分子,则持有的那么些成员 4 须求被放置在长方形里面。其余,全部软件包的名字要求放在软件包的相当的小正方形之内(如图
    八 的显示)。

  • 借使建立模型者决定在大的长方形之外彰显软件包成员,则有着将会在图上展现的积极分子都急需被停放椭圆形之外。为了呈现属于软件包的分类器属于,从各样分类器画一条线到内部有加号的圆圆,这么些圆周粘附在软件包之上(图玖)。

  • 借使建立模型者决定在大长方形中呈现软件包的分子,则装有的那多少个成员4须要被放置在纺锤形里面。此外,全部软件包的名字供给放在软件包的极小长方形之内(如图
    捌 的展现)。

  • 一旦建立模型者决定在大的椭圆形之外显示软件包成员,则怀有将会在图上显示的成员都必要被放到长方形之外。为了显得属于软件包的分类器属于,从各样分类器画一条线到内部有加号的圆圆,这个圆周粘附在软件包之上(图9)。

图片 15

图片 16

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

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

图片 17

图片 18

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

图 玖:二个经过连接线表现软件包成员的软件包例子

掌握基础首要性

打探基础首要性

在 UML 2中,精通类图的底子更为主要。那是因为类图为具有的其他组织图提供基本的创设块。如组件或对象图(仅仅是举了些例子)。

在 UML 2中,精晓类图的根基更为首要。这是因为类图为具备的其他组织图提供基本的营造块。如组件或对象图(仅仅是举了些例子)。



回页首

回页首

超越基础

超越基础

到此甘休,小编早就介绍了类图的底蕴,可是请继续往下读!在上面包车型大巴1对中,笔者将会引导您到你会采取的类图的更关键的地点。那些包罗UML
二 标准中的接口,别的的几种关系类型,可知性和此外补给。

到此甘休,小编已经介绍了类图的根底,但是请继续往下读!在底下的一些中,作者将会指引您到您会选用的类图的更首要的上面。这一个回顾UML
二 正规中的接口,其余的三种关系类型,可见性和其余补给。

接口 
在本文的前头,笔者提出你以类来设想分类器。事实上,分类器是二个一发相似的概念,它包涵数据类型和接口。

接口
在本文的前面,小编提出您以类来设想分类器。事实上,分类器是三个进一步相似的概念,它回顾数据类型和接口。

有关哪天、以及怎么着高效地在系统结构图中选拔数据类型和接口的完好研究,不在本文的研究范围之内。既然那样,作者为何要在这边谈起数据类型和接口呢?你可能想在结构图上效仿那一个分类器类型,在那一年,使用正确的标记来表示,恐怕至少知道那个分类器类型是非同平常的。不科学地绘制这个分类器,很有十分大可能率将使您的组织图读者感到混乱,以往的体系将无法适应需要。

有关何时、以及怎么样高效地在系统结构图中接纳数据类型和接口的完全研讨,不在本文的研讨范围之内。既然那样,笔者何以要在此间聊起数据类型和接口呢?你只怕想在结构图上模拟这么些分类器类型,在这一年,使用正确的号子来表示,可能至少知道这一个分类器类型是重大的。不得法地绘制那几个分类器,很有望将使你的布局图读者以为混乱,今后的系统将不可能适应须求。

3个类和贰个接口不一样:2个类能够有它造型的实际实例,但是三个接口必须至少有一个类来促成它。在
UML 第22中学,三个接口被认为是类建立模型成分的特殊化。由此,接口就象类那样绘制,但是正方形的顶部区域也有文件“interface”,如图
10所示。 5

一个类和3个接口差异:贰个类能够有它造型的实在实例,然则一个接口必须至少有四个类来落到实处它。在
UML 第22中学,贰个接口被以为是类建立模型成分的特殊化。由此,接口就象类那样绘制,可是正方形的顶部区域也有文件“interface”,如图
拾所示。5

图片 19

图片 20

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

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

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

在图 10中显示的图中,Professor和Student类都完成了Person的接口,但并不从它继续。大家驾驭那或多或少是出于下面多少个原因:一)
Person对象作为接口被定义 —
它在目的的名字区域中有“interface”文本,而且咱们看看由于Professor和Student对象依据画类对象的平整(在它们的名字区域中绝非额外的分类器文本)标示,所以它们是
目的。 二)
大家精晓承继在此地未有被出示,因为与带箭头的线是点线而不是实线。如图 十所示,一条带有闭合的单向箭头的 线意味着完毕(或实践);正如我们在图
4 中所见到的,一条带有闭合单向箭头的线意味着继续。

越来越多的涉嫌 
在地方,小编谈谈了双向关联和单向关系。今后,笔者将会介绍剩下的二种档次的涉嫌。

愈来愈多的关系
在上头,作者谈谈了双向关联和单向关系。以后,笔者将会介绍剩下的叁系列型的关系。

关联类 
在关乎建立模型中,存在部分情状下,你需求包蕴其余类,因为它富含了有关关联的有价值的信息。对于那种情形,你会使用 关联类 来绑定你的主干关系。关联类和1般类同样表示。差异的是,主类和关联类之间用一条相交的点线连接。图
11 显示2个航空工业实例的涉及类。

关联类
在关系建模中,存在1些场地下,你必要包涵别的类,因为它含有了关于关联的有价值的新闻。对于这种景况,你会动用
关联类
来绑定你的着力关系。关联类和壹般类同样表示。分裂的是,主类和关联类之间用一条相交的点线连接。图
1一 展现二个航空工业实例的涉及类。

图片 21

图片 22

图 1一:扩展关联类 MileageCredit

图 1壹:增加关联类 MileageCredit

在图 1一 中体现的类图中,在Flight类和 FrequentFlyer
类之间的涉嫌,爆发了名称叫MileageCredit的涉及类。那象征当Flight类的三个实例关联到 FrequentFlyer
类的贰个实例时,将会时有产生 MileageCredit 类的三个实例。

在图 1一 中呈现的类图中,在Flight类和 FrequentFlyer
类之间的涉及,发生了名字为MileageCredit的关系类。那意味当Flight类的1个实例关联到 FrequentFlyer
类的一个实例时,将会发出 MileageCredit 类的贰个实例。

聚合 
集聚是1种越发类型的涉及,用于描述“总体到某些”的关系。在大旨的联谊关系中, 部分类 的生命周期独立于 整体类 的生命周期。

聚合
会见是一种专门类型的涉嫌,用于描述“总体到有个别”的关联。在大旨的聚合关系中,
部分类 的生命周期独立于 整体类 的生命周期。

举例来说来说,大家可以想像, 是2个完好实体,而 车轮 轮胎是整辆车的一片段。轮胎能够在安放到车时的前多少个礼拜被创设,并放置于仓库中。在那几个实例中,Wheel类实例清楚地独自地Car类实例而存在。可是,有个别情状下, 部分 类的生命周期并  独立于 整体 类的生命周期

那叫做合成聚合。举例来讲,思考集团与单位的关系。 商店和机构 都建立模型成类,在信用合作社存在从前,部门不可能存在。那里Department类的实例重视于Company类的实例而留存。

让大家更进一步查究基本聚合和组合聚合。

中央聚合 
有成团关系的关联提出,某些类是此外有些类的壹有的。在多个聚众关系中,子类实例能够比父类存在越来越长的年华。为了表现三个集合关系,你画一条从父类到部分类的实线,并在父类的关联末端画1个未填充棱形。图
1二 展现车和轮胎间的聚合关系的例子。

图片 23

图 1贰: 一个凑合关联的例子

重组聚合 
整合聚合关系是集聚关系的另1种样式,不过子类实例的生命周期依赖于父类实例的生命周期。在图一叁中,显示了Company类和Department类之间的咬合关系,注意组合关系如聚合关系一样绘制,然则本次菱形是被填充的。

图片 24

图 一三: 3个结缘关系的例证

在图 一三中的关系建立模型中,一个Company类实例至少总有二个Department类实例。因为涉嫌是组成关系,当Company实例被移除/销毁时,Department实例也将电动地被移除/销毁。组合聚合的另八个最首要效率是壹对类只好与父类的实例相关(举例来讲,大家例子中的Company类)。

反射关联 
未来我们早就探究了全部的涉及类型。就像您或者注意到的,我们的具备例子已经显得了八个分歧类之间的涉及。然则,类也能够行使反射关联与它本身相关联。开端,那也许未有趣,可是切记,类是空洞的。图
1肆 突显八个Employee类怎样通过manager /
manages剧中人物与它自己有关。当贰个类关联到它本身时,那并不意味类的实例与它自个儿有关,而是类的二个实例与类的另多个实例相关。

图片 25

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

图 14描绘的关联说爱他美个Employee实例只怕是此外2个Employee实例的CEO。可是,因为“manages”的涉嫌剧中人物有
0..*的多种性描述;一个雇员只怕不受任何其余雇员管理。

可见性 
在面向对象的设计中,存在属性及操作可见性的号子。UML
识别多种档次的可见性:public,protected,private及package。

UML
规范并不要求质量及操作可知性必须出示在类图上,不过它必要为每种属性及操作定义可知性。为了在类图上的显示可见性,放置可知性标记于属性或操作的名字从前。虽然UML 钦赐各个可知性类型,不过实际上的编制程序语言大概扩展额外的可知性,或不支持UML 定义的可见性。表肆展现了 UML 扶助的可知性类型的两样标记。

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

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

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

图片 26

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


回页首

UML
2 补充

既然如此我们早已覆盖了基础和高级主旨,大家将覆盖壹些由UML 壹.
x充实的类图的新标记。

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

实例的号子和类同样,不过代表顶端区域中仅部分类名,它的名字是透过拼接的:

Instance Name : Class Name

比方来讲:

Donald : Person

因为展示实例的目标是显得值得注意的或有关的消息,没要求在您的模型中富含全部实体性质及操作。相反地,仅仅呈现感兴趣的属性及其值是一心适用的。如图1⑥所讲述。

图片 27

图 1陆:Plane类的八个实例例子(只突显感兴趣的属性值)

但是,仅仅展现壹些实例而未有它们的涉嫌不太实用;因而,UML 二也允许在实体层的关联/关联建立模型。绘制关联与1般的类关系的平整同样,除了在建立模型关联时有3个增大的渴求。附加的界定是,关联关系必须与类图的涉及相平等,而且关系的剧中人物名字也务必与类图相平等。它的三个例证显示于图
17 中。在这些例子中,实例是图 陆 中类图的事例实例。

图片 28

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

图 17有Flight类的3个实例,因为类图建议了在Plane类和Flight类之间的涉及是 0或多。因而,大家的事例给出了四个与NX03三七Plane实例相关的Flight实例。

角色 
建立模型类的实例有时比期望的更是详细。有时,你或然独自想要在一个较多的形似层次做类关系的模子。在那种气象下,你应当运用 角色 暗号。角色暗记类似于实例暗号。为了树立类的角色模型,你画二个方格,并在里头放置类的剧中人物名及类名,作为实体暗记,但是在那情形你无法加下划线。图
1八 展现1个由图 1四 中图描述的雇员类扮演的剧中人物实例。在图 1第88中学,大家能够感觉,即便雇员类与它本身有关,关系真的是有关雇员之间扮演经理及组织成员的剧中人物。

图片 29

图 1八:一个类图彰显图第114中学扮演区别剧中人物的类

留神,你没办法在纯粹类图中做类剧中人物的建立模型,就算图
1八展现你能够这么做。为了利用剧中人物旗号,你将会须求接纳下边斟酌的内部结构暗号。

其间的协会 
UML 2结构图的更管用的机能之一是新的内部结构记号。它同意你显得3个类或其它的一个分类器怎样在其间整合。那在
UML 1. x
中是不容许的,因为暗记限制你不得不展现2个类所兼有的集结关系。未来,在 UML
二 中,内部的构造旗号让您更明亮地显示类的各种部分怎样保持关系。

让大家看1个实例。在图 18中我们有1个类图以表现贰个Plane类怎么样由八个引擎和多少个调整软件对象组成。从那一个图中省略的事物是显示关于飞机部件怎么着棉被服装配的有个别消息。从图
18的图,你无法表达,是种种调节软件对象说了算三个引擎,依旧3个调节软件对象说了算多少个引擎,而另七个决定3个汽油发动机。

图片 30

图 19: 只突显对象时期涉及的类图

绘制类的内在结构将会革新那种气象。开头时,你通过用3个区域画3个方格。最上方的区域包括类名字,而极低的区域蕴含类的内部结构,展现在它们父类中顶住差别剧中人物的有些类,剧中人物中的每一种部分类也关乎到此外类。图
1九 来得了Plane类的内部结构;注意内部结构怎么样澄清混乱性。

图片 31

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

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

比喻来讲,大家得以想象, 是三个总体实体,而 车轮
轮胎是整辆车的1有的。轮胎能够在安放到车时的前多少个礼拜被构建,并放置于仓库中。在那几个实例中,Wheel类实例清楚地独自地Car类实例而留存。不过,有个别情状下,
部分 类的生命周期并 独立于 整体 类的生命周期 —
那叫做合成聚合。举例来讲,考虑集团与机构的关系。 供销合作社和机关
都建模成类,在信用合作社存在此前,部门无法存在。那里Department类的实例依赖于Company类的实例而存在。

让我们更进一步追究基本聚合和重组聚合。

主导聚合
有成团关系的关系提出,有个别类是其余某些类的一片段。在一个成团关系中,子类实例能够比父类存在更加长的岁月。为了显示一个凑合关系,你画一条从父类到有的类的实线,并在父类的关系末端画1个未填充棱形。图
1二 展现车和轮胎间的会见关系的事例。

图片 32

图 12: 3个集结关联的事例

组成聚合
重组聚合关系是集结关系的另一种格局,可是子类实例的生命周期重视于父类实例的生命周期。在图一叁中,显示了Company类和Department类之间的三结合关系,注意组合关系如聚合关系同样绘制,但是此番菱形是被填充的。

图片 33

图 一3: 1个构成关系的例子

在图 一三中的关系建立模型中,七个Company类实例至少总有四个Department类实例。因为涉嫌是构成关系,当Company实例被移除/销毁时,Department实例也将自动地被移除/销毁。组合聚合的另贰个第二职能是局地类只好与父类的实例相关(举例来讲,大家例子中的Company类)。

反射关联
当今大家早就商讨了富有的涉及类型。就像你可能注意到的,大家的具备例子已经展现了四个分裂类之间的涉嫌。可是,类也足以应用反射关联与它本身相关联。起始,那恐怕未有意义,不过切记,类是空虚的。图
1四 展现一个Employee类怎么着通过manager /
manages角色与它本人有关。当1个类关联到它本身时,那并不表示类的实例与它本人有关,而是类的3个实例与类的另三个实例相关。

图片 34

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

图 14描绘的涉嫌说诺优能(Nutrilon)个Employee实例也许是别的3个Employee实例的经营。不过,因为“manages”的关联剧中人物有
0..*的多种性描述;五个雇员或然不受任何其余雇员管理。

可见性
在面向对象的筹划中,存在属性及操作可知性的暗记。UML
识别多种档次的可见性:public,protected,private及package。

UML
规范并不必要品质及操作可知性必须出示在类图上,可是它必要为每一种属性及操作定义可知性。为了在类图上的来得可知性,放置可知性标记于属性或操作的名字在此以前。纵然UML 钦点多种可见性类型,不过其实的编制程序语言或然扩充额外的可知性,或不扶助UML 定义的可知性。表4彰显了 UML 扶助的可知性类型的例外标识。

表 四:UML 辅助的可见性类型的注明

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

以后,让我们看3个类,以表明属性及操作的可知性类型。在图 15中,全数的属性及操作都以public,除了 updateBalance 操作。updateBalance
操作是protected。

图片 35

图 15:一个 BankAccount 类表明它的属性及操作的可知性


回页首

UML 2 补充

既是大家已经覆盖了基础和高端焦点,大家将覆盖一些由UML 一.
x扩大的类图的新标识。

实例
当几个系统结营造立模型时,呈现例子类实例有时候是卓有成效的。为了这种组织建立模型,UML
二 提供 实例规范
成分,它显得在系统中采纳例子(或具体)实例的值得注意的新闻。

实例的符号和类一样,不过代表顶端区域中仅局地类名,它的名字是通过拼接的:

Instance Name : Class Name

举例来说来讲:

Donald : Person

因为显示实例的目标是突显值得注意的或相关的音信,没必要在您的模子中带有全部实体性质及操作。相反地,仅仅展现感兴趣的天性及其值是一点壹滴适用的。如图1陆所讲述。

图片 36

图 16:Plane类的二个实例例子(只突显感兴趣的属性值)

但是,仅仅显示有些实例而并未有它们的关系不太实用;因而,UML 贰也同目的在于实体层的涉及/关联建模。绘制关联与1般的类关系的规则平等,除了在建立模型关联时有3个叠加的须要。附加的范围是,关联关系必须与类图的涉嫌相平等,而且涉及的剧中人物名字也必须与类图相平等。它的二个例子显示于图
一7 中。在那几个事例中,实例是图 陆 中类图的事例实例。

图片 37

图 17:图 陆 中用实例替代类的例子

图 一七有Flight类的一个实例,因为类图提出了在Plane类和Flight类之间的涉嫌是
0或多。因而,我们的例证给出了多少个与NX03三七 Plane实例相关的Flight实例。

角色
建立模型类的实例有时比期望的更是详细。有时,你只怕独自想要在八个较多的形似层次做类关系的模子。在那种情状下,你应当运用
角色
暗号。剧中人物暗号类似于实例暗号。为了树立类的剧中人物模型,你画八个方格,并在其间放置类的角色名及类名,作为实体暗号,可是在那情状你不可能加下划线。图
18 突显1个由图 1四 中图描述的雇员类扮演的剧中人物实例。在图 18中,大家能够认为,即便雇员类与它本人有关,关系真的是有关雇员之间扮演首席实行官及组织成员的剧中人物。

图片 38

图 18:3个类图彰显图第11四中学扮演不一致角色的类

注意,你无法在纯粹类图中做类剧中人物的建立模型,尽管图
18展现你能够这么做。为了利用剧中人物暗记,你将会供给接纳上边商讨的内部结构暗记。

中间的组织
UML 二结构图的更管用的效应之1是新的内部结构暗记。它同意你显得二个类或其余的一个分类器怎样在中间整合。那在
UML 1. x
中是不容许的,因为暗记限制你不得不显示七个类所兼有的成团关系。今后,在 UML
2 中,内部的构造暗号让您更明了地浮现类的顺序部分怎么着保持关系。

让大家看三个实例。在图 18中我们有八个类图以表现三个Plane类怎样由多少个引擎和多少个调控软件对象组成。从这几个图中省略的事物是突显关于飞机部件怎么着被装配的一部分音信。从图
1八的图,你不能够表明,是各类调整软件对象说了算四个引擎,依旧二个调节软件对象说了算七个引擎,而另三个决定一个内燃机。

图片 39

图 1玖: 只显示对象时期涉及的类图

绘制类的内在结构将会立异那种情状。伊始时,你通过用二个区域画2个方格。最上方的区域包罗类名字,而非常低的区域包涵类的内部结构,显示在它们父类中肩负差别剧中人物的1对类,剧中人物中的种种部分类也事关到任何类。图
19 来得了Plane类的内部结构;注意内部结构如何澄清混乱性。

图片 40

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

在图 20 中Plane有七个 ControlSoftware
对象,而且每一个调节三个引擎。在图左边上的
ControlSoftware(control一)调节引擎 一 和 二 。在图右侧的
ControlSoftware(control二)调节引擎 三 和 四 。


回页首

结论

起码存在三个精通类图的要害理由。第四个是它显得系统一分配类器的静态结构;第壹个理由是图为UML描述的任何组织图提供了着力暗号。开荒者将会感到类图是为他们专程建立的;不过任何的团队成员将发现它们也是实用的。业务分析师能够用类图,为系统的事体远景建立模型。正如我辈将会在本体系关于
UML 基础的篇章中看到的,别的的图 —
包含活动图,种类图和状态图——参考类图中的类建立模型和文书档案化。

关于“UML 基础”的本种类的末尾的构件图。


回页首

脚注

1
delayFlight未有重回值,因为我作出了规划决定,不要重回值。有几许得以争论的是,延迟操作应该回到新的达到时刻,而且,假设是这种景观,操作属性将展现为
delayFlight(numberOfMinutes : Minutes) : Date。

2兴许看起来很离奇, BankAccount 类不亮堂
OverdrawnAccountsReport
类。那个建立模型使报表类能够了解它们报告的业务类,但是工作类不精通它们正在被报告。那解开多个指标的耦合,并由此使系统变得更能适应变化。

3
软件包对于组织你的模型类是天崩地塌的,不过切记主要的有个别是,你的类图应该是关于建立模型系统的轻易交换的音讯。在您的软件包有不少类的动静下,最佳使用多少个主题类图,而不是独自发生三个大的类图。

4
要驾驭主要一点,当自个儿说“全数的那3个成员”时,小编单独意味着在当下图中的类将展现出来。彰显三个有内容的软件包的图,不需求出示它的富有剧情。它能够依据一些章法,显示包括成分的子集,那些规则正是永不全数的软件包分类器都是少不了的。

5 当画多个类图时,在 UML
规范中,全体要做的只是把类放入正方形的顶部区域,而你同理处理接口;可是,UML
规范认为,在那个区域放置“class”文本是可选的,假设类未有显得,那么它应该被倘诺。

 

相关文章