UML–类详解

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

 

基础

基础

如先前所涉嫌的,类图的指标是浮现建立模型系统的品类。在大相当多的 UML
模型中这个项目包含:

如先前所波及的,类图的目标是展示建立模型系统的类型。在大部的 UML
模型中那几个项目蕴涵:

  • 接口

  • 数据类型

  • 组件

  • 接口

  • 数据类型

  • 组件

UML
为这么些品种起了贰个特意的名字:“分类器”。经常地,你能够把分类器当做类,但在才能上,分类器是更进一竿普及的术语,它照旧援用下边包车型大巴任何二种等级次序为好。

UML
为那么些品种起了贰个特意的名字:“分类器”。日常地,你能够把分类器当做类,但在技艺上,分类器是越发常见的术语,它照旧引用上边的其他两种档案的次序为好。

类名

类名

类的 UML 表示是八个长方形,垂直地分成多少个区,如图 1
所示。最上部区域突显类的名字。中间的区域列出类的习性。尾部的区域列出类的操作。当在二个类图上画贰个类成分时,你必需求有上边的区域,下面包车型地铁二个区域是可挑选的(当图描述仅仅用于展示分类器间事关的高层细节时,下边包车型客车多个区域是不须求的)。图
1 显得一个航线班机如何作为 UML
类建立模型。正如小编辈所能见到的,名字是 Flight,大家能够在中等区域看到Flight类的3个特性:flightNumber,departureTime

flightDuration。在底层区域中大家可以见到Flight类有多个操作:delayFlight
和 getArrivalTime。

类的 UML 表示是三个圆柱形,垂直地分成四个区,如图 1
所示。最上端区域呈现类的名字。中间的区域列出类的属性。尾部的区域列出类的操作。当在一个类图上画一个类成分时,你必须要有上边的区域,上面包车型客车一个区域是可挑选的(当图描述仅仅用于体现分类器间事关的高层细节时,下边包车型地铁七个区域是不要求的)。图
1 显示三个航程班机如何作为 UML 类建立模型。正如作者辈所能见到的,名字是
Flight,大家能够在中间区域看到Flight类的3个天性:flightNumber,departure提姆e

flightDuration。在底层区域中大家能够见到Flight类有多少个操作:delayFlight
和 getArrivalTime。

大红鹰葡京会娱乐 1

大红鹰葡京会娱乐 2

图 1: Flight类的类图

图 1: Flight类的类图

类属性列表

类属性列表

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

类的属性节(中部区域)在分隔线上列出每三个类的属性。属性节是可接纳的,若是一用它,就包蕴类的列表呈现的种种属性。该线用如下格式:

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

延续大家的Flight类的例证,我们得以接纳性质类型新闻来陈说类的性能,如表 1
所示。

一而再大家的Flight类的事例,大家得以接纳品质类型音讯来描述类的天性,如表 1
所示。

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

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

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

在事情类图中,属性类型一般与单位符合,那对于图的或是读者是有意义的(举个例子,分钟,欧元,等等)。可是,用于转移代码的类图,须求类的属性类型必得界定在由程序语言提供的项目之中,或蕴含于在系统中贯彻的、模型的等级次序之中。

在事情类图中,属性类型一般与单位符合,那对于图的只怕读者是有意义的(比方,秒钟,欧元,等等)。不过,用于转移代码的类图,供给类的属性类型必得界定在由程序语言提供的花色之中,或含有于在系统中达成的、模型的种类之中。

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

在类图上显示全数默许值的一定属性,不经常是实用的(举个例子,在银行账户应用程序中,三个新的银行账户会以零为开头值)。UML
规范允许在属性列表节中,通过行使如下的标识作为默许值的标志:

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

比如来讲:

比喻来讲:

balance : Dollars = 0
balance : Dollars = 0

呈现属性暗许值是可挑选的;图 2
呈现八个银行账户类具备八个名称叫 balance的品种,它的默许值为0。

体现属性私下认可值是可选用的;图 2 呈现一个银行账户类具有一个名叫
balance的等级次序,它的私下认可值为0。

大红鹰葡京会娱乐 3

大红鹰葡京会娱乐 4

图 2:展现默感到0港币的balance属性值的银行账户类图。

图 2:突显默认为0比索的balance属性值的银行账户类图。

类操作列表

类操作列表

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

类操作记录在类图纺锤形的第八个(最低的)区域中,它也是可挑选的。和总体性同样,类的操作以列表格式彰显,各样操作在它本身线上。操作使用下列暗号表现:

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

上面的表 2 中Flight类操作的映射。

下边的表 2 中Flight类操作的照射。

表 2:从图 2 酷炫的Flight类的操作

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

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

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

图3出示,delayFlight 操作有贰个Minutes类型的输入参数 —
numberOfMinutes。然则,delayFlight
操作未有重返值。1当三个操作有参数时,参数被放在操作的括号内;每种参数都选择那样的格式:“参数名:参数类型”。

大红鹰葡京会娱乐 5

大红鹰葡京会娱乐 6

图 3:Flight类操作参数,满含可采用的“in”标志。

图 3:Flight类操作参数,富含可采纳的“in”标记。

当文书档案化操作参数时,你只怕应用二个可挑选的提示器,以体现参数到操作的输入参数、或输出参数。那些可采用的提醒器以“in”或“out”出现,如图3中的操作区域所示。一般的话,除非将应用一种早先时代的顺序编程语言,如Fortran
,那个提醒器只怕会有着辅助,不然它们是不须要的。然则,在
C++和Java中,全数的参数是“in”参数,並且遵照UML标准,既然“in”是参数的暗中认可类型,大大多人将会遗漏输入/输出提醒器。

当文书档案化操作参数时,你大概行使二个可挑选的提示器,以展现参数到操作的输入参数、或输出参数。这几个可接纳的提醒器以“in”或“out”出现,如图3中的操作区域所示。一般的话,除非将选拔一种开始的一段时代的次序编制程序语言,如Fortran
,这个指示器或者会有着帮助,不然它们是不供给的。但是,在
C++和Java中,全部的参数是“in”参数,何况遵照UML规范,既然“in”是参数的私下认可类型,大很多人将会遗漏输入/输出提醒器。

继承

继承

在面向对象的规划中贰个百般关键的概念,继承,指的是五个类(子类)继承别的的二个类(超类)的同一成效,并追加它和睦的新功用(贰个非技能性的比喻,想象本人继续了自身阿妈的一般的音乐力量,可是在自己的家里,作者是无与伦比一个玩电吉他的人)的力量。为了在多少个类图上建立模型继承,从子类(要持续行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。思量银行账户的种类:图
4 展现 CheckingAccount 和 SavingsAccount 类怎么样从 BankAccount
类承继而来。

在面向对象的陈设性中四个相当重大的定义,继承,指的是贰个类(子类)继承别的的三个类(超类)的等同功用,并扩展它本人的新功用(多少个非本事性的比喻,想象笔者继续了本身老母的一般的音乐力量,可是在自身的家里,作者是不二法门多少个玩电吉他的人)的本领。为了在贰个类图上建立模型继承,从子类(要承袭行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。思量银行账户的项目:图
4 突显 CheckingAccount 和 SavingsAccount 类怎样从 BankAccount
类承接而来。

大红鹰葡京会娱乐 7

大红鹰葡京会娱乐 8

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

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

在图 4 中,传承关系由各样超类的独自的线画出,那是在IBM Rational
罗丝和IBM Rational
XDE中央银行使的章程。不过,有一种叫做 树标记的筹算情势能够画出承继关系。当存在多个或越多子类时,如图
4 中所示,除了继续线象树枝同样混在协同外,你能够运用树形暗号。图 5
是重绘的与图 4 一样的三番七回,可是这次使用了树形暗号。

在图 4 中,承接关系由每种超类的单身的线画出,那是在IBM Rational
罗斯和IBM Rational XDE中应用的法子。但是,有一种名为
树标记的预备情势能够画出承接关系。当存在多个或更加多子类时,如图 4
中所示,除了继续线象树枝同样混在联合签名外,你能够使用树形暗号。图 5
是重绘的与图 4 相同的接续,不过本次使用了树形暗记。

大红鹰葡京会娱乐 9

大红鹰葡京会娱乐 10

图 5: 八个使用树形暗号的延续实例

图 5: 贰个运用树形暗号的后续实例

抽象类及操作 
留心的读者会潜心到,在图 4 和 图5中的图中,类名BankAccount和withdrawal操作使用斜体。这代表,BankAccount
类是贰个抽象类,而withdrawal方法是虚幻的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,而且CheckingAccount 和 SavingsAccount
五个子类都分别地实行它们各自版本的操作。

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

唯独,超类(父类)不必然假设抽象类。标准类作为超类是例行的。

唯独,超类(父类)不自然即使抽象类。标准类作为超类是平常的。

关联 
当你系统建立模型时,特定的靶子间将会相互关系,并且这个涉及本人要求被明晰地建立模型。有多样关系。在这一局地中,我将构和论它们中的五个– 双向的关联和单向的关系,何况本身将会在Beyond the
basics
局地斟酌剩下的三种关系类型。请小心,关于何时该利用每体系型涉及的详实座谈,不属于本文的界定。相反的,笔者将会把重大聚集在各个关系的用处,并表达怎么着在类图上画出涉及。

关联
当你系统建立模型时,特定的对象间将会相互关系,并且这个涉嫌本人供给被清晰地建模。有三种关系。在这一局地中,笔者将会斟酌它们中的多少个– 双向的涉及和单向的涉及,并且作者将会在Beyond the
basics
局地探讨剩下的两种关系类型。请留神,关于曾几何时该利用每种类型涉及的详尽商量,不属于本文的界定。相反的,作者将会把主要聚集在各样关系的用途,并表明什么在类图上画出涉及。

双向(标准)的关联 
关系是八个类间的联网。关联合国善后救济总署是被假定是双向的;那意味着,五个类互相了然它们间的关系,除非您限定一些其余类型的涉及。回想一下Flight
的例子,图 6 突显了在Flight类和Plane类之间的多个正式项目标涉及。

双向(标准)的关联
涉嫌是三个类间的过渡。关联合国善后救济总署是被假定是双向的;这表示,八个类互相了然它们间的联系,除非你限定一些其余项目标关系。回想一下Flight
的例子,图 6 展现了在Flight类和Plane类之间的三个专门的工作项目的关系。

大红鹰葡京会娱乐 11

大红鹰葡京会娱乐 12

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

图 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年的飞行器)关联。

一个双向关联用七个类间的实线表示。在线的任一端,你放置三个角色名和多种值。图
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列出了有的多种值及它们含义的事例。

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

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

恐怕的多重值描述

可能的多种值描述

表示

表示

含义

含义

0..1

0..1

0个或1个

0个或1个

1

1

只能1个

只能1个

0..*

0..*

0个或多少个

0个或多个

*

*

0个或多少个

0个或四个

1..*

1..*

1个或小编个

1个或自个儿个

3

3

只能3个

只能3个

0..5

0..5

0到5个

0到5个

5..15

5..15

5到15个

5到15个

单向关系 
在二个单向关系中,多个类是唇齿相依的,然而独有一个类知道这种关联的留存。图 7
展现单向关系的透支财务报告的二个实例。

大红鹰葡京会娱乐,单向关系
在二个单向关系中,七个类是有关的,不过唯有叁个类知道这种关联的留存。图 7
显示单向关系的透支财报的二个实例。

大红鹰葡京会娱乐 13

大红鹰葡京会娱乐 14

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

图 7: 单向关系叁个实例:OverdrawnAccountsReport 类 BankAccount 类,而
BankAccount 类则对事关一无所知。

一个一派的关联,表示为一条带有指向已知类的怒放箭头(不关门的箭头或三角形,用于标记承接)的实线。如同标准提到,单向关系包含二个剧中人物名和贰个多种值描述,不过与规范的双向关联分裂的时,单向关系只含有已知类的剧中人物名和多种值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,并且知道
BankAccount
类扮演“overdrawnAccounts”的剧中人物。然则,和标准提到差别,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。 2

三个一边的关系,表示为一条带有指向已知类的盛开箭头(不停业的箭头或三角形,用于标记承袭)的实线。仿佛标准提到,单向关系包含一个剧中人物名和三个多种值描述,不过与行业内部的双向关联不一样的时,单向关系只包括已知类的剧中人物名和多种值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,並且知道
BankAccount
类扮演“overdrawnAccounts”的角色。不过,和标准提到差异,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。2

软件包 
不可幸免,假若您正在为三个大的系统或大的事体领域建模,在您的模子中校会有无数例外的分类器。管理全体的类将是一件令人生畏的天职;所以,UML
提供三个叫作 软件包的团组织成分。软件包使建立模型者能够组织模型分类器到名字空间中,那有个别象文件系统中的文件夹。把八个种类分为八个软件包使系统成为轻易了解,极度是在种种软件包都表现系统的叁个一定部分时。 3

软件包
不可幸免,假如你正在为四个大的系列或大的事务领域建立模型,在您的模型上校会有过多不等的分类器。管理全数的类将是一件令人生畏的职务;所以,UML
提供贰个可以称作
软件包的公司成分。软件包使建立模型者能够组织模型分类器到名字空间中,那有个别象文件系统中的文件夹。把叁个种类分为四个软件包使系统成为轻巧了然,特别是在各种软件包都表现系统的叁个一定部分时。3

在图中留存二种方式表示软件包。并从未准绳需要运用哪个种类标记,除了用你个人的推断:哪类更有利阅读你画的类图。二种格局都是由三个异常的小的长方形(用于固定)嵌套在一个大的正方形中起首的,如图
8 所示。但是建立模型者必需决定包的积极分子怎么样表示,如下:

在图中存在二种办法表示软件包。并不曾准绳供给选择哪一种标记,除了用你个人的论断:哪个种类更方便阅读你画的类图。三种办法都以由贰个十分小的纺锤形(用于固定)嵌套在三个大的正方形中初露的,如图
8 所示。可是建立模型者必需调整包的分子怎么样表示,如下:

  • 假诺建立模型者决定在大星型中体现软件包的成员,则有着的那多少个成员 4 亟需被放置在正方形里面。别的,全数软件包的名字需求放在软件包的十分小长方形之内(如图
    8 的体现)。

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

  • 要是建立模型者决定在大正方形中呈现软件包的成员,则持有的那一个成员4亟待被停放在正方形里面。另外,全数软件包的名字供给放在软件包的非常小纺锤形之内(如图
    8 的显得)。

  • 借使建立模型者决定在大的长方形之外显示软件包成员,则兼具将会在图上展现的积极分子都需求被安置纺锤形之外。为了展现属于软件包的分类器属于,从各样分类器画一条线到内部有加号的圆圆,那么些圆周粘附在软件包之上(图9)。

大红鹰葡京会娱乐 15

大红鹰葡京会娱乐 16

图 8:在软件包的圆柱形内展示软件包成员的软件包成分例子

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

大红鹰葡京会娱乐 17

大红鹰葡京会娱乐 18

图 9:三个透过连接线展现软件包成员的软件包例子

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

刺探基础主要性

了然基础首要性

在 UML 第22中学,明白类图的基本功更为重要。那是因为类图为具备的任何协会图提供基本的创设块。如组件或对象图(仅仅是举了些例子)。

在 UML 第22中学,领会类图的基本功更为主要。那是因为类图为全数的其余组织图提供基本的营造块。如组件或对象图(仅仅是举了些例子)。



回页首

回页首

凌驾基础

超过基础

到此结束,作者早就介绍了类图的根底,然而请继续往下读!在底下的一部分中,小编将会指点你到你会使用的类图的更主要的上面。这几个包括UML
2 行业内部中的接口,其余的二种关系类型,可知性和其他补给。

到此甘休,俺一度介绍了类图的基础,可是请继续往下读!在底下的某在那之中,我将会辅导你到你会接纳的类图的更首要的上边。那些包含UML
2 规范中的接口,另外的三种关系类型,可见性和任何补偿。

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

接口
在本文的前方,作者建议您以类来虚构分类器。事实上,分类器是二个进一步相似的概念,它总结数据类型和接口。

有关何时、以及哪些高效地在系统结构图中运用数据类型和接口的完全钻探,不在本文的评论范围以内。既然这样,笔者怎么要在这里提起数据类型和接口呢?你恐怕想在结构图上模仿这个分类器类型,在这年,使用科学的号子来表示,也许至少知道这一个分类器类型是最重要的。不得法地绘制这几个分类器,很有相当大希望将使您的构造图读者以为混乱,现在的系统将不能够适应须要。

至于曾几何时、以及哪些高效地在系统结构图中选拔数据类型和接口的欧洲经济共同体研讨,不在本文的研究范围以内。既然那样,笔者何以要在此间提起数据类型和接口呢?你大概想在结构图上效仿这一个分类器类型,在那一年,使用准确的符号来表示,或然至少知道这个分类器类型是不可缺少的。不得法地绘制这么些分类器,很有不小概率将使您的布局图读者认为混乱,今后的系统将不能够适应要求。

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

三个类和二个接口不一致:贰个类能够有它造型的切实地工作实例,可是二个接口必须至少有贰个类来贯彻它。在
UML 第22中学,贰个接口被认为是类建模成分的特殊化。因而,接口就象类那样绘制,不过纺锤形的顶端区域也许有文件“interface”,如图
10
所示。5

大红鹰葡京会娱乐 19

大红鹰葡京会娱乐 20

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

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

在图 10中体现的图中,Professor和Student类都完毕了Person的接口,但并不从它一连。大家明白那点是由于下边五个原因:1)
Person对象作为接口被定义 —
它在对象的名字区域中有“interface”文本,何况大家来看由于Professor和Student对象依照画类对象的条条框框(在它们的名字区域中并未有额外的分类器文本)标示,所以它们是 对象。
2) 我们精通承接在那边未有被展现,因为与带箭头的线是点线并不是实线。如图
10
所示,一条带有闭合的单向箭头的 线意味着达成(或实施);正如大家在图
4 中所见到的,一条带有闭合单向箭头的线意味着继续。

在图 第10中学突显的图中,Professor和Student类都落到实处了Person的接口,但并不从它继续。我们知晓那一点是出于下边多少个原因:1)
Person对象作为接口被定义 —
它在对象的名字区域中有“interface”文本,而且大家见到由于Professor和Student对象根据画类对象的平整(在它们的名字区域中尚无额外的分类器文本)标示,所以它们是
指标。 2)
大家精晓传承在这里没有被显示,因为与带箭头的线是点线并不是实线。如图 10
所示,一条带有闭合的单向箭头的 线意味着实现(或实施);正如大家在图
4 中所见到的,一条带有闭合单向箭头的线意味着继续。

越多的涉嫌 
在上头,小编谈谈了双向关联和单向关系。现在,笔者将会介绍剩下的三类别型的涉及。

更加的多的涉嫌
在地点,笔者谈谈了双向关联和单向关系。未来,小编将会介绍剩下的三连串型的涉及。

关联类 
在涉及建立模型中,存在有的情景下,你供给饱含另外类,因为它含有了有关关联的有价值的消息。对于这种情状,你会接纳 关联类 来绑定你的主干关系。关联类和一般类同样表示。分歧的是,主类和关联类之间用一条相交的点线连接。图
11 展现四个航空工业实例的涉嫌类。

关联类
在提到建立模型中,存在有的情状下,你供给包罗另外类,因为它富含了有关关联的有价值的消息。对于这种气象,你会采取
关联类
来绑定你的为主关系。关联类和一般类一样表示。区别的是,主类和关联类之间用一条相交的点线连接。图
11 显示二个航空工业实例的关系类。

大红鹰葡京会娱乐 21

大红鹰葡京会娱乐 22

图 11:扩大关联类 MileageCredit

图 11:扩充关联类 MileageCredit

在图 11 中显得的类图中,在Flight类和 FrequentFlyer
类之间的涉嫌,产生了可以称作MileageCredit的涉及类。那意味着当Flight类的二个实例关联到 FrequentFlyer
类的三个实例时,将会发生 MileageCredit 类的三个实例。

在图 11 中显得的类图中,在Flight类和 FrequentFlyer
类之间的涉嫌,发生了名字为MileageCredit的涉及类。那象征当Flight类的一个实例关联到 FrequentFlyer
类的多个实例时,将会时有爆发 MileageCredit 类的多个实例。

聚合 
聚拢是一种极度类型的涉嫌,用于描述“总体到一些”的涉及。在主旨的集纳关系中, 部分类 的生命周期独立于 整体类 的生命周期。

聚合
聚拢是一种特意类型的涉及,用于描述“总体到部分”的关联。在着力的聚众关系中,
部分类 的生命周期独立于 整体类 的生命周期。

譬释迦牟尼说来讲,咱们能够想像, 是贰个完完全全实体,而 车轮 轮胎是整辆车的一有的。轮胎能够在交待到车时的前多少个礼拜被制作,并放置于货仓中。在这么些实例中,Wheel类实例清楚地单独地Car类实例而存在。可是,有个别景况下, 部分 类的生命周期并  独立于 整体 类的生命周期

这称为合成聚合。举例来讲,考虑集团与单位的关系。 商厦和机关 都建立模型成类,在集团存在在此以前,部门不可能存在。这里Department类的实例注重于Company类的实例而留存。

让大家更上一层楼钻探基本聚合和组合聚合。

宗旨聚合 
有成团关系的涉嫌建议,有些类是另外有个别类的一有的。在三个会面关系中,子类实例能够比父类存在更加长的岁月。为了表现贰个集聚关系,你画一条从父类到一些类的实线,并在父类的涉及末端画三个未填充棱形。图
12 展现车和轮胎间的会师关系的例证。

大红鹰葡京会娱乐 23

图 12: 三个凑合关联的事例

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

大红鹰葡京会娱乐 24

图 13: 三个结缘关系的例证

在图 第13中学的关系建立模型中,四个Company类实例至少总有叁个Department类实例。因为关乎是组成关系,当Company实例被移除/销毁时,Department实例也将活动地被移除/销毁。组合聚合的另四个入眼意义是一对类只好与父类的实例相关(举个例子来讲,大家例子中的Company类)。

反射关联 
今日我们早已探讨了有着的涉嫌类型。就像你恐怕注意到的,大家的富有例子已经浮现了五个不一样类之间的关系。然则,类也得以接纳反射关联与它自己相关联。起始,那只怕未有意义,可是切记,类是虚幻的。图
14 展现叁个Employee类如何通过manager /
manages剧中人物与它本身有关。当三个类关联到它本身时,那并不意味类的实例与它自个儿有关,而是类的一个实例与类的另八个实例相关。

大红鹰葡京会娱乐 25

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

图 14
描绘的关系说可瑞康(Karicare)(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。

大红鹰葡京会娱乐 26

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


回页首

UML
2 补充

既是大家已经覆盖了根基和高级主旨,咱们将覆盖一些由UML 1.
x扩展的类图的新标记。

实例 
当四个系统结创设立模型时,突显例子类实例一时候是立见成效的。为了这种布局建模,UML
2
提供 实例标准 成分,它显示在系统中应用例子(或具体)实例的值得注意的音讯。

实例的号子和类同样,可是代表顶部区域中独有的类名,它的名字是透过拼接的:

Instance Name : Class Name

比喻来说:

Donald : Person

因为呈现实例的指标是显示值得注意的或有关的音信,没须求在你的模型中富含全部实体性质及操作。相反地,仅仅展现感兴趣的质量及其值是一心适用的。如图16所描述。

大红鹰葡京会娱乐 27

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

唯独,仅仅展现一些实例而从不它们的涉及不太实用;因而,UML 2
也同意在实体层的关联/关联建立模型。绘制关联与一般的类关系的平整平等,除了在建立模型关联时有贰个增大的须求。附加的限制是,关联关系必需与类图的关联相平等,并且关乎的剧中人物名字也非得与类图相平等。它的一个事例突显于图
17 中。在那个事例中,实例是图 6 中类图的例证实例。

大红鹰葡京会娱乐 28

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

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

角色 
建立模型类的实例有时比期望的尤为详细。一时,你也许只是想要在八个非常多的一般档案的次序做类关系的模子。在这种景况下,你应该使用 角色 暗记。剧中人物记号类似于实例旗号。为了成立类的剧中人物模型,你画二个方格,并在个中放置类的角色名及类名,作为实体暗号,不过在那情景你不能够加下划线。图
18 呈现二个由图 14 中图描述的雇员类扮演的剧中人物实例。在图 18中,大家能够感到,纵然雇员类与它自己有关,关系着实是关于雇员之间扮演老板及团伙成员的剧中人物。

大红鹰葡京会娱乐 29

图 18:贰个类图呈现图第114中学饰演差异剧中人物的类

静心,你不可能在纯粹类图中做类剧中人物的建模,固然图
18展示你能够那样做。为了选取角色暗记,你将会须求选拔上边探究的内部结构旗号。

当中的结构 
UML 2
结构图的更实用的效能之一是新的内部结构暗号。它同意你出示三个类或其它的一个分类器怎么着在在那之中整合。那在
UML 1. x
中是不容许的,因为记号限制你不得不呈现二个类所具备的聚众关系。以后,在 UML
2 中,内部的布局旗号让你更清楚地显示类的次第部分如何保险关系。

让我们看二个实例。在图 1第88中学我们有一个类图以表现贰个Plane类如何由八个引擎和七个调控软件对象组成。从那个图中省略的东西是显得关于飞机部件怎样棉被服装配的一部分新闻。从图
18
的图,你无法表明,是种种调节软件对象说了算八个引擎,还是二个调整软件对象说了算多个引擎,而另三个决定一个发动机。

大红鹰葡京会娱乐 30

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

绘制类的内在结构将会改良这种情状。最早时,你通过用贰个区域画贰个方格。最上方的区域包涵类名字,而非常的低的区域富含类的内部结构,显示在它们父类中担任不一样剧中人物的一对类,剧中人物中的每种部分类也事关到任何类。图
19 体现了Plane类的内部结构;注意内部结构怎么样澄清混乱性。

大红鹰葡京会娱乐 31

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

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

譬如来讲,大家得以想象, 是叁个全部实体,而 车轮
轮胎是整辆车的一有的。轮胎能够在布置到车时的前多少个星期被创设,并放置于饭馆中。在这些实例中,Wheel类实例清楚地独自地Car类实例而留存。不过,有个别意况下,
部分 类的生命周期并 独立于 整体 类的生命周期 —
这名称叫合成聚合。举例来讲,思量公司与机关的涉及。 商铺和单位
都建模成类,在公司存在以前,部门不能存在。这里Department类的实例信赖于Company类的实例而留存。

让我们更上一层楼商讨基本聚合和构成聚合。

宗旨聚合
有成团关系的关联建议,某些类是别的有些类的一某个。在五个集合关系中,子类实例能够比父类存在越来越长的年华。为了表现贰个成团关系,你画一条从父类到有的类的实线,并在父类的关系末端画叁个未填充棱形。图
12 显示车和轮胎间的集纳关系的例证。

大红鹰葡京会娱乐 32

图 12: 叁个汇集关联的事例

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

大红鹰葡京会娱乐 33

图 13: 八个结缘关系的例子

在图 13中的关系建立模型中,三个Company类实例至少总有三个Department类实例。因为关乎是整合关系,当Company实例被移除/销毁时,Department实例也将机关地被移除/销毁。组合聚合的另贰个入眼功效是一对类只可以与父类的实例相关(比如来佛讲,大家例子中的Company类)。

反射关联
当今我们曾经研究了富有的关联类型。就像是你恐怕注意到的,我们的兼具例子已经展现了五个不一样类之间的涉及。但是,类也能够应用反射关联与它本人相关联。起初,那或然未有意义,可是切记,类是空虚的。图
14 突显一个Employee类如何通过manager /
manages角色与它自个儿有关。当贰个类关联到它本人时,那并不表示类的实例与它本人有关,而是类的一个实例与类的另三个实例相关。

大红鹰葡京会娱乐 34

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

图 14
描绘的关系说圣元个Employee实例也许是其余贰个Employee实例的经纪。不过,因为“manages”的关联剧中人物有
0..*的多种性描述;三个雇员只怕不受任何其余雇员管理。

可见性
在面向对象的规划中,存在属性及操作可知性的符号。UML
识别八种档案的次序的可知性:public,protected,private及package。

UML
规范并不须要质量及操作可见性必需出示在类图上,但是它供给为每一个属性及操作定义可知性。为了在类图上的来得可知性,放置可知性标识于属性或操作的名字此前。尽管UML 钦定种种可知性类型,可是其实的编制程序语言恐怕扩展额外的可知性,或不援救UML 定义的可知性。表4显示了 UML 帮忙的可知性类型的两样标识。

表 4:UML 援救的可知性类型的标识

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

今昔,让我们看二个类,以表明属性及操作的可知性类型。在图 1第55中学,全体的习性及操作都是public,除了 updateBalance 操作。updateBalance
操作是protected。

大红鹰葡京会娱乐 35

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


回页首

UML 2 补充

既然如此大家曾经覆盖了根基和高档大旨,大家将遮蔽一些由UML 1.
x日增的类图的新标记。

实例
当二个系统结构建立模型时,显示例子类实例有时候是行得通的。为了这种结创设模,UML
2 提供 实例规范
成分,它展现在系统中央银行使例子(或具体)实例的值得注意的消息。

实例的暗记和类同样,可是代表顶上部分区域中仅局地类名,它的名字是因而拼接的:

Instance Name : Class Name

比喻来讲:

Donald : Person

因为显示实例的目标是展现值得注意的或相关的音讯,没须要在你的模子中蕴藏整体实体性质及操作。相反地,仅仅呈现感兴趣的习性及其值是截然适用的。如图16所陈诉。

大红鹰葡京会娱乐 36

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

可是,仅仅彰显一些实例而尚未它们的涉及不太实用;由此,UML 2
也同意在实体层的关联/关联建立模型。绘制关联与一般的类关系的准则平等,除了在建模关联时有三个外加的供给。附加的限定是,关联关系必需与类图的关联相平等,而且涉及的剧中人物名字也亟须与类图相平等。它的多少个例子彰显于图
17 中。在这一个事例中,实例是图 6 中类图的事例实例。

大红鹰葡京会娱乐 37

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

图 17
有Flight类的叁个实例,因为类图提议了在Plane类和Flight类之间的关系是
0或多。因而,我们的事例给出了八个与NX0337 Plane实例相关的Flight实例。

角色
建立模型类的实例不常比期望的尤其详细。偶尔,你或许只有想要在四个相当多的相似档案的次序做类关系的模型。在这种场地下,你应有利用
角色
暗号。角色暗号类似于实例暗记。为了建设构造类的剧中人物模型,你画一个方格,并在内部放置类的剧中人物名及类名,作为实体暗记,但是在那情景你不可能加下划线。图
18 突显三个由图 14 中图描述的雇员类扮演的角色实例。在图 1第88中学,大家能够以为,尽管雇员类与它自个儿有关,关系实在是关于雇员之间扮演老董及集体成员的脚色。

大红鹰葡京会娱乐 38

图 18:叁个类图突显图第114中学饰演分裂剧中人物的类

留意,你不能够在纯粹类图中做类剧中人物的建立模型,纵然图
18来得你能够那样做。为了采用剧中人物暗记,你将会要求利用下边斟酌的内部结构暗号。

当中的组织
UML 2
结构图的更使得的功力之一是新的内部结构暗号。它同意你来得三个类或另外的一个分类器怎么样在当中整合。那在
UML 1. x
中是不容许的,因为记号限制你不得不彰显一个类所持有的聚焦关系。以后,在 UML
2 中,内部的构造暗记令你更清楚地显示类的各种部分怎样保险关系。

让我们看八个实例。在图 18中我们有二个类图以表现三个Plane类如何由八个引擎和多少个调节软件对象组成。从那么些图中省略的事物是展现关于飞机部件怎样棉被服装配的有的新闻。从图
18
的图,你不可能表明,是各样调整软件对象说了算五个引擎,还是一个调控软件对象说了算多少个引擎,而另八个调控叁个引擎。

大红鹰葡京会娱乐 39

图 19: 只突显对象之间关系的类图

绘制类的内在结构将会革新这种景象。起始时,你通过用贰个区域画贰个方格。最上面包车型大巴区域包罗类名字,而比较低的区域包括类的内部结构,展现在它们父类中肩负区别剧中人物的有的类,角色中的各个部分类也波及到任何类。图
19 来得了Plane类的内部结构;注意内部结构如何澄清混乱性。

大红鹰葡京会娱乐 40

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

在图 20 中Plane有五个 ControlSoftware
对象,何况各个调整三个引擎。在图左侧上的
ControlSoftware(control1)调控引擎 1 和 2 。在图侧面的
ControlSoftware(control2)调整引擎 3 和 4 。


回页首

结论

足足存在三个驾驭类图的基本点理由。第一个是它展现系统一分配类器的静态结构;第1个理由是图为UML描述的其他社团图提供了主题暗记。开辟者将会感觉类图是为她们特别创建的;不过其余的团队成员将发掘它们也是可行的。业务深入分析师能够用类图,为系统的事情远景建立模型。正如作者辈将会在本连串关于
UML 基础的稿子中来看的,别的的图 —
包含活动图,体系图和状态图——参谋类图中的类建立模型和文档化。

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


回页首

脚注

1
delayFlight未有重临值,因为本身作出了设计决定,不要再次回到值。有某个能够争辩的是,延迟操作应该回到新的到达时刻,况且,假使是这种气象,操作属性将体现为
delayFlight(numberOfMinutes : Minutes) : Date。

2想必须要看起来很意外, BankAccount 类不知底
OverdrawnAccountsReport
类。那个建立模型使报表类能够精晓它们报告的业务类,不过事情类不亮堂它们正在被告知。那解开五个对象的耦合,并就此使系统变得更能适应变化。

3
软件包对于团体你的模子类是大幅度的,可是切记重要的有个别是,你的类图应该是有关建立模型系统的轻易调换的消息。在你的软件包有过多类的气象下,最佳使用八个主旨类图,实际不是单独发生贰个大的类图。

4
要领悟主要一点,当自家说“全数的那几个成员”时,小编单独表示在当前图中的类将展现出来。展现贰个有内容的软件包的图,不须要呈现它的享有剧情。它能够遵守一些准绳,展现包括成分的子集,这几个法规正是永不全体的软件包分类器都以少不了的。

5 当画叁个类图时,在 UML
标准中,全体要做的只是把类归入纺锤形的顶上部分区域,而你同理管理接口;可是,UML
标准认为,在那个区域放置“class”文本是可选的,若是类未有显得,那么它应该被借使。

 

admin

网站地图xml地图