UML–类详解。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,departureTime

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
Rose和IBM Rational
XDE中动用的方。然而,有同等种名叫 树标记的备方式可画出继承关系。当是个别单或更多子类时,如图
4 中所展示,除了继续线象树枝一样混在共同他,你可以运用树形记号。图 5
是重绘的以及图 4 一样的接轨,但是这次用了树形记号。

于图 4 中,继承关系由每个超类的单身的丝画来,这是在IBM Rational
Rose和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 2
中,了解类图的功底更为重要。这是坐类图为持有的旁组织图供基本的构建块。如组件或对象图(仅仅是选了几例子)。

以 UML 2
中,了解类图的功底更为重要。这是因类图为富有的外组织图供基本的构建块。如组件或对象图(仅仅是选举了几例子)。



回页首

回页首

跨基础

跨基础

顶之结束,我早就介绍了类图的底蕴,但是要继续向下读!在底下的一些中,我以见面带而顶公见面动的类图的再主要的方。这些概括UML
2 规范着之接口,其它的老三栽关系类型,可见性和另补给。

暨是结束,我已介绍了类图的根底,但是要继续朝着生念!在下面的一些被,我将会晤指引您及您晤面下的类图的再着重的方面。这些包括UML
2 正规被的接口,其它的老三栽涉类型,可见性和其余补偿。

接口 
当本文的先头,我提议您为类来设想分类器。事实上,分类器是一个更相似的定义,它包括数据类型和接口。

接口
当本文的前头,我建议你坐看似来考虑分类器。事实上,分类器是一个更加相似的概念,它概括数据类型和接口。

至于何时、以及哪些快速地以系统结构图被使数据类型和接口的共同体讨论,不以本文的座谈范围里边。既然这样,我为什么要当这边提及数据类型和接口也?你或许想以结构图上模仿这些分类器类型,在斯时,使用对的号子来表示,或者至少知道这些分类器类型是重点之。不正确地绘制这些分类器,很有或用设您的组织图读者觉得混乱,以后的网将未能够适应需求。

关于何时、以及如何快速地当系统结构图中动用数据类型和接口的一体化讨论,不在本文的议论范围中。既然这样,我干什么而于此地提及数据类型和接口也?你或许想在结构图上套这些分类器类型,在此上,使用对的符来代表,或者至少知道这些分类器类型是要之。不得法地绘制这些分类器,很有或以如您的构造图读者感觉混乱,以后的体系以未可知适应需求。

一个像样以及一个接口不同:一个近似可以产生它相的真实例,然而一个接口必须至少发生一个类似来贯彻其。在
UML 2
中,一个接口被认为是相仿建筑模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也发文件“interface”,如图
10
所展示。 5

一个好像与一个接口不同:一个看似可以出其造型的实际实例,然而一个接口必须至少发生一个近似来实现它。在
UML 2
中,一个接口被看是接近建筑模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域为发生文件“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
描绘的关系说明一个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:一个类图显示图14负饰演不同角色的类

瞩目,你莫能够在纯类图中做类角色的建模,即使图
18展示你可如此做。为了采取角色记号,你将会晤需要运用下讨论的内部结构记号。

内的构造 
UML 2
结构图的还实用的力量有是初的内部结构记号。它同意而出示一个类或另外的一个分类器如何当中间整合。这当
UML 1. x
中是未容许的,因为记号限制而不得不显示一个近似所怀有的联谊关系。现在,在 UML
2 中,内部的组织记号让您又懂得地显示类的一一组成部分如何保持关系。

给我们看一个实例。在图 18
中我们有一个类图以见一个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

今天,让咱们看一个接近,以说明性和操作的可见性类型。在图 15
中,所有的特性和操作都是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 中图描述的雇员类扮演的角色实例。在图 18
中,我们好当,即使雇员类及它们自己有关,关系真的是有关雇员之间扮演经理与团体成员的角色。

必威电竞外围网站 38

图 18:一个类图显示图14受到串不同角色的近乎

注意,你不能够于纯类图中做类角色的建模,即使图
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 。


回页首

结论

足足是个别单了解类图的重大理由。第一只是她显得系统分类器底静态结构;第二独理由是祈求也UML描述的其它组织图供了基本记号。开发者将见面看类图是为她们专程建立的;但是别的集团成员将发现她啊是卓有成效的。业务分析师可以用类图,为系统的工作远景建模。正而我们以见面在照系列有关
UML 基础之章被来看的,其他的图 —
包括活动图,序列图和状态图——参考类图中的类建模和文档化。

至于“UML 基础”的按系列的后的构件图。


回页首

脚注

1
delayFlight没有返回值,因为自作出了设计决定,不要回来值。有好几可以争论之是,延迟操作应该归新的达时,而且,如果是这种状态,操作属性将显得为
delayFlight(numberOfMinutes : Minutes) : Date。

2恐看起老奇怪, BankAccount 类不晓得
OverdrawnAccountsReport
类。这个建模使报表类可以了解她报告的业务类,但是事情类似不明了其正在为报告。这解开两个目标的耦合,并就此如果系统转换得重新能适应变化。

3
软件包对于团队而的模子类是翻天覆地之,但是切记要之某些凡,你的类图应该是关于建模系统的好交流之信。在您的软件包出许多像样的状况下,最好使用多单主题类图,而无是不过有一个老大的类图。

4
要明了要一点,当我说“所有的那些成员”时,我偏偏表示在时下图被之类将显示出来。显示一个生内容的软件包之图,不待出示它的有内容。它好按照一些准则,显示包含元素的子集,这个规则就是毫不所有的软件包分类器都是不可或缺的。

5 当画一个类图时,在 UML
规范着,全部要举行的只是将看似放入长方形的顶部区域,而而同理处理接口;然而,UML
规范认为,在这个区域放置“class”文本是可选的,如果类似没有显得,那么其应让如。

 

相关文章

admin

网站地图xml地图