UML–类详解

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

 

基础

基础

如先前所涉嫌的,类图的目标是显得建立模型系统的花色。在大部的 UML
模型中这几个品种包罗:

如先前所提到的,类图的目标是呈现建立模型系统的门类。在半数以上的 UML
模型中那个品种包涵:

  • 接口

  • 数据类型

  • 组件

  • 接口

  • 数据类型

  • 组件

UML
为这几个品种起了二个专门的名字:“分类器”。经常地,你能够把分类器当做类,但在技术上,分类器是尤为宽泛的术语,它照旧引用上边的别的三种类型为好。

UML
为那些项目起了贰个特地的名字:“分类器”。常常地,你能够把分类器当做类,但在技术上,分类器是越来越普遍的术语,它依旧引用上边包车型地铁别的三连串型为好。

类名

类名

类的 UML 表示是二个长方形,垂直地分成几个区,如图 1所示。顶部区域彰显类的名字。中间的区域列出类的质量。尾巴部分的区域列出类的操作。当在贰个类图上画三个类成分时,你不可能不要有上边的区域,上边包车型地铁一个区域是可采用的(当图描述仅仅用于体现分类器间关系的高层细节时,上面包车型客车多少个区域是不须求的)。图
一 出示贰个航程班机怎么着作为 UML
类建立模型。正如大家所能见到的,名字是 Flight,大家能够在中间区域来看Flight类的二个属性:flightNumber,departureTime

flightDuration。在底层区域中咱们能够看出Flight类有七个操作:delayFlight
和 getArrivalTime。

类的 UML 表示是三个长方形,垂直地分成八个区,如图 1所示。顶部区域呈现类的名字。中间的区域列出类的属性。后面部分的区域列出类的操作。当在2个类图上画一个类成分时,你必须求有上边的区域,上边的1个区域是可选拔的(当图描述仅仅用于浮现分类器间关系的高层细节时,下边包车型客车五个区域是不需求的)。图
一 体现二个航行路线班机怎么着作为 UML 类建立模型。正如大家所能见到的,名字是
Flight,我们得以在中间区域来看Flight类的三性格情:flightNumber,departureTime

flightDuration。在底层区域中大家得以看看Flight类有多少个操作:delayFlight
和 getArrivalTime。

大红鹰葡京会娱乐 1

大红鹰葡京会娱乐 2

图 一: Flight类的类图

图 1: Flight类的类图

类属性列表

类属性列表

类的属性节(中部区域)在分隔线上列出每2个类的品质。属性节是可挑选的,若是壹用它,就包涵类的列表呈现的各样属性。该线用如下格式:

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

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

一连大家的Flight类的事例,我们得以利用性质类型新闻来讲述类的属性,如表 一所示。

持续我们的Flight类的例子,大家可以动用性质类型消息来描述类的属性,如表 一所示。

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

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

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

在作业类图中,属性类型①般与单位符合,那对于图的只怕读者是有意义的(例如,分钟,日币,等等)。但是,用于转移代码的类图,供给类的习性类型必须界定在由程序语言提供的档次之中,或含有于在系统中完成的、模型的体系之中。

在工作类图中,属性类型壹般与单位符合,那对于图的或者读者是有意义的(例如,秒钟,新币,等等)。然则,用于转移代码的类图,须要类的属性类型必须界定在由程序语言提供的品类之中,或含有于在系统中落成的、模型的门类之中。

在类图上展现全数默许值的特定属性,有时是实惠的(例如,在银行账户应用程序中,2个新的银行账户会以零为早先值)。UML
规范允许在属性列表节中,通过采纳如下的记号作为私下认可值的标识:

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

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

比方来说:

比喻来说:

balance : Dollars = 0
balance : Dollars = 0

显示属性暗许值是可挑选的;图 2展现2个银行账户类具有两个名叫 balance的品种,它的暗许值为0。

显示属性暗中认可值是可采纳的;图 二 显示1个银行账户类具有多个名叫
balance的类型,它的暗中同意值为0。

大红鹰葡京会娱乐 3

大红鹰葡京会娱乐 4

图 二:展现暗许为0日币的balance属性值的银行账户类图。

图 二:显示暗中同意为0澳元的balance属性值的银行账户类图。

类操作列表

类操作列表

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

类操作记录在类图长方形的第多少个(最低的)区域中,它也是可挑选的。和总体性一样,类的操作以列表格式展现,各个操作在它和谐线上。操作使用下列记号表现:

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

上面包车型大巴表 2 中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 当3个操作有参数时,参数被放在操作的括号内;每种参数都应用那样的格式:“参数名:参数类型”。

图3显示,delayFlight 操作有一个Minutes类型的输入参数 —
numberOfMinutes。不过,delayFlight
操作没有再次来到值。1当贰个操作有参数时,参数被放在操作的括号内;种种参数都选择那样的格式:“参数名:参数类型”。

大红鹰葡京会娱乐 5

大红鹰葡京会娱乐 6

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

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

当文书档案化操作参数时,你恐怕应用三个可挑选的提醒器,以呈现参数到操作的输入参数、或输出参数。这么些可选择的提示器以“in”或“out”现身,如图3中的操作区域所示。1般的话,除非将利用1种早期的次序编制程序语言,如Fortran
,这一个提示器可能会有着援助,不然它们是不供给的。然则,在
C++和Java中,全体的参数是“in”参数,而且根据UML规范,既然“in”是参数的暗中认可类型,大部分人将会遗漏输入/输出提醒器。

当文书档案化操作参数时,你恐怕利用三个可挑选的提醒器,以呈现参数到操作的输入参数、或输出参数。这么些可挑选的提醒器以“in”或“out”出现,如图三中的操作区域所示。1般的话,除非将使用1种早期的次序编程语言,如Fortran
,那一个提示器或然聚会场全体帮助,不然它们是不须求的。不过,在
C++和Java中,全数的参数是“in”参数,而且依照UML规范,既然“in”是参数的私下认可类型,半数以上人将会遗漏输入/输出提醒器。

继承

继承

在面向对象的规划中二个万分重大的定义,继承,指的是三个类(子类)继承别的的3个类(超类)的同等效能,并追加它本人的新功能(二个非技术性的比方,想象自个儿一而再了自笔者老母的形似的音乐力量,可是在本身的家里,笔者是唯十一个玩电吉他的人)的力量。为了在一个类图上建立模型继承,从子类(要继续行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。思虑银行账户的品类:图
四 呈现 CheckingAccount 和 SavingsAccount 类如何从 BankAccount
类继承而来。

在面向对象的统一筹划中二个不胜关键的概念,继承,指的是3个类(子类)继承此外的三个类(超类)的一致成效,并追加它本人的新职能(1个非技术性的比方,想象本人延续了自家老母的壹般的音乐力量,可是在自己的家里,小编是唯13个玩电吉他的人)的力量。为了在3个类图上建立模型继承,从子类(要一连行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。思量银行账户的品种:图
4 凸显 CheckingAccount 和 SavingsAccount 类怎样从 BankAccount
类继承而来。

大红鹰葡京会娱乐 7

大红鹰葡京会娱乐 8

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

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

在图 肆 中,继承关系由各类超类的单身的线画出,那是在IBM Rational
罗丝和IBM Rational
XDE中接纳的艺术。然则,有1种名称叫 树标记的备选格局能够画出继承关系。当存在多少个或愈多子类时,如图
四 中所示,除了一而再线象树枝一样混在壹块外,你能够使用树形记号。图 伍是重绘的与图 4 1样的继承,不过本次使用了树形记号。

在图 4 中,继承关系由各种超类的独自的线画出,那是在IBM Rational
罗丝和IBM Rational XDE中使用的点子。然则,有1种名为
树标记的备选方式可以画出继承关系。当存在五个或更加多子类时,如图 4中所示,除了继续线象树枝1样混在一齐外,你能够应用树形记号。图 伍是重绘的与图 4 1样的接续,不过此番运用了树形记号。

大红鹰葡京会娱乐 9

大红鹰葡京会娱乐 10

图 5: 1个采纳树形记号的接轨实例

图 5: 多个应用树形记号的一而再实例

抽象类及操作 
周全的读者会小心到,在图 4 和 图5中的图中,类名BankAccount和withdrawal操作使用斜体。那表示,BankAccount
类是二个抽象类,而withdrawal方法是架空的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount
八个子类都各自地进行它们分别版本的操作。

抽象类及操作
周到的读者会小心到,在图 四 和 图5中的图中,类名BankAccount和withdrawal操作使用斜体。那代表,BankAccount
类是二个抽象类,而withdrawal方法是抽象的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount
七个子类都分别地进行它们分别版本的操作。

唯独,超类(父类)不自然如果抽象类。标准类作为超类是健康的。

可是,超类(父类)不肯定即使抽象类。标准类作为超类是常常的。

关联 
当你系统建立模型时,特定的靶子间将会互相关系,而且那些涉嫌本人供给被明晰地建立模型。有四种关系。在那一局部中,小编将会谈谈它们中的四个– 双向的关系和单向的关系,而且本身将会在Beyond the
basics
局地研讨剩下的二种关系类型。请留意,关于几时该应用每连串型涉及的详尽座谈,不属于本文的限定。相反的,作者将会把重大集中在每一种关系的用途,并证实什么在类图上画出涉及。

关联
当您系统建立模型时,特定的目的间将会相互关系,而且那些关乎本人供给被清楚地建立模型。有七种关系。在那1有的中,小编将会探究它们中的多个– 双向的关联和单向的关联,而且本身将会在Beyond the
basics
有些商讨剩下的二种关系类型。请小心,关于什么日期该使用每类别型涉及的详尽研究,不属于本文的限量。相反的,小编将会把重点集中在各样关系的用途,并表达怎么样在类图上画出涉及。

双向(标准)的关联 
提到是三个类间的连片。关联合国善后救济总署是被假定是双向的;那表示,四个类相互明白它们间的关联,除非你限定1些别的类型的关联。回看一下Flight
的事例,图 6 展现了在Flight类和Plane类之间的三个规范项指标涉嫌。

双向(标准)的关联
论及是七个类间的连接。关联合国善后救济总署是被假定是双向的;那表示,四个类相互驾驭它们间的维系,除非你限定一些别样门类的涉嫌。回看一下Flight
的例子,图 6 呈现了在Flight类和Plane类之间的二个行业内部项指标关联。

大红鹰葡京会娱乐 11

大红鹰葡京会娱乐 12

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

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

一个双向关联用七个类间的实线表示。在线的任一端,你放置三个剧中人物名和多重值。图
陆展现Flight与1个特定的Plane相关联,而且Flight类知道这一个关系。因为角色名以Plane类表示,所以Plane承担关联合中学的“assignedPlane”剧中人物。紧接于Plane类后边的多重值描述0…一意味着,当二个Flight实体存在时,能够有三个或尚未Plane与之提到(也正是,Plane大概还不曾被分配)。图
6也出示Plane知道它与Flight类的涉及。在这几个涉及中,Flight承担“assignedFlights”剧中人物;图
6的图告诉大家,Plane实体能够不与flight关联(例如,它是1架全新的飞行器)或与从不上限的flight(例如,一架已经当兵5年的飞机)关联。

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

由于对这么些在提到尾部恐怕出现的多重值描述感到纳闷,上面包车型大巴表三列出了某个多重值及它们含义的例证。

出于对这么些在提到尾部只怕出现的多重值描述感到疑惑,上边包车型地铁表三列出了1部分多重值及它们含义的例证。

表 叁: 多重值和它们的表示

表 三: 多重值和它们的代表

可能的多重值描述

也许的多重值描述

表示

表示

含义

含义

0..1

0..1

0个或1个

0个或1个

1

1

只能1个

只能1个

0..*

0..*

0个或多个

0个或三个

*

*

0个或五个

0个或三个

1..*

1..*

二个或本身个

一个或自个儿个

3

3

只能3个

只能3个

0..5

0..5

0到5个

0到5个

5..15

5..15

5到15个

5到15个

单向关系 
在三个单向关系中,七个类是连锁的,可是只有多个类知道那种关系的留存。图 柒展现单向关系的透支财务报告的一个实例。

单向关系
在1个单向关系中,多少个类是有关的,不过只有2个类知道这种沟通的留存。图 七显示单向关系的透支财务报告的一个实例。

大红鹰葡京会娱乐 13

大红鹰葡京会娱乐 14

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

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

二个单向的涉嫌,表示为一条带有指向已知类的开放箭头(不停歇的箭头或三角形,用于标志继承)的实线。就像标准提到,单向关系包含一个剧中人物名和2个多重值描述,可是与规范的双向关联分裂的时,单向关系只包蕴已知类的剧中人物名和多重值描述。在图
七 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的剧中人物。但是,和标准提到差异,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。 2

一个一面包车型客车涉及,表示为一条带有指向已知类的绽开箭头(不关门的箭头或三角形,用于标志继承)的实线。就像标准提到,单向关系包含一个角色名和1个多重值描述,可是与业内的双向关联不相同的时,单向关系只含有已知类的剧中人物名和多重值描述。在图
七 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的剧中人物。可是,和规范提到差别,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。2

软件包 
不可幸免,假如您正在为1个大的系统或大的事情领域建立模型,在您的模子中校会有不少例外的分类器。管理全数的类将是一件令人生畏的天职;所以,UML
提供多少个号称 软件包的团协会成分。软件包使建立模型者能够组织模型分类器到名字空间中,那有个别象文件系统中的文件夹。把1个连串分为四个软件包使系统成为简单领会,越发是在各样软件包都表现系统的1个一定部分时。 3

软件包
不可防止,若是你正在为2个大的种类或大的业务领域建立模型,在你的模型中校会有无数比不上的分类器。管理全体的类将是1件令人生畏的天职;所以,UML
提供1个称呼
软件包的团队成分。软件包使建立模型者能够社团模型分类器到名字空间中,那某个象文件系统中的文件夹。把叁个种类分为八个软件包使系统成为不难精晓,尤其是在每种软件包都表现系统的一个特定部分时。3

在图中存在三种艺术表示软件包。并不曾规则须要使用哪一种标志,除了用你个人的论断:哪个种类更便于阅读你画的类图。二种办法都以由一个较小的正方形(用于固定)嵌套在2个大的长方形中初露的,如图
八 所示。可是建立模型者必须决定包的成员怎么样表示,如下:

在图中留存三种形式表示软件包。并从未规则供给运用哪类标志,除了用你个人的判断:哪个种类更有利阅读你画的类图。三种艺术都以由三个较小的纺锤形(用于固定)嵌套在2个大的长方形中开头的,如图
捌 所示。不过建模者必须控制包的分子怎样表示,如下:

  • 万第1建工公司模者决定在大长方形中展现软件包的分子,则怀有的那几个成员 4 亟待被放置在正方形里面。其它,全部软件包的名字需求放在软件包的较小长方形之内(如图
    八 的显得)。

  • 若是建立模型者决定在大的正方形之外展现软件包成员,则兼具将会在图上呈现的积极分子都须求被置于椭圆形之外。为了展现属于软件包的分类器属于,从种种分类器画一条线到内部有加号的圆圆,这么些圆周粘附在软件包之上(图玖)。

  • 要是建模者决定在大椭圆形中显得软件包的分子,则具有的这个成员4内需被停放在正方形里面。其它,全数软件包的名字要求放在软件包的较小长方形之内(如图
    八 的来得)。

  • 万第1建工公司模者决定在大的正方形之外显示软件包成员,则有所将会在图上展现的积极分子都亟需被置于纺锤形之外。为了显示属于软件包的分类器属于,从每种分类器画一条线到中间有加号的圆圆,这个圆周粘附在软件包之上(图玖)。

大红鹰葡京会娱乐 15

大红鹰葡京会娱乐 16

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

图 8:在软件包的纺锤形内浮现软件包成员的软件包元素例子

大红鹰葡京会娱乐 17

大红鹰葡京会娱乐 18

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

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

打探基础主要性

叩问基础重要性

在 UML 2中,掌握类图的根基更为主要。这是因为类图为拥有的别的组织图提供基本的营造块。如组件或对象图(仅仅是举了些例子)。

在 UML 第22中学,精通类图的根基更为主要。那是因为类图为持有的别样组织图提供基本的创设块。如组件或对象图(仅仅是举了些例子)。



回页首

回页首

超越基础

超过基础

到此甘休,作者曾经介绍了类图的底子,不过请继续往下读!在底下的某些中,小编将会辅导你到你会动用的类图的更重视的方面。那个回顾UML
二 正式中的接口,此外的两种关系类型,可知性和别的补偿。

到此停止,笔者早已介绍了类图的根基,不过请继续往下读!在上边包车型客车片段中,作者将会指导您到您会采纳的类图的更首要的地点。那几个包含UML
二 专业中的接口,此外的二种关系类型,可知性和其他补给。

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

接口
在本文的先头,作者提出您以类来设想分类器。事实上,分类器是一个更为相似的概念,它回顾数据类型和接口。

有关曾几何时、以及哪些高效地在系统结构图中采用数据类型和接口的完全商量,不在本文的切磋范围以内。既然那样,作者干什么要在此地谈起数据类型和接口呢?你只怕想在结构图上模仿那一个分类器类型,在今年,使用科学的标志来代表,恐怕至少知道那一个分类器类型是至关心珍视要的。不科学地绘制这一个分类器,很有希望将使您的协会图读者感觉混乱,以往的系统将不可能适应需要。

有关曾几何时、以及如何赶快地在系统结构图中使用数据类型和接口的总体商讨,不在本文的议论范围之内。既然那样,笔者怎么要在此处提起数据类型和接口呢?你恐怕想在结构图上模拟这一个分类器类型,在今年,使用正确的符号来代表,或然至少知道那些分类器类型是重中之重的。不科学地绘制那些分类器,很有一点都不小希望将使您的布局图读者感到混乱,未来的系统将不能够适应需要。

三个类和一个接口不相同:贰个类能够有它造型的实事求是实例,然则3个接口必须至少有三个类来完毕它。在
UML 第22中学,三个接口被认为是类建立模型元素的特殊化。由此,接口就象类那样绘制,可是长方形的顶部区域也有文件“interface”,如图
10所示。 5

叁个类和三个接口差异:一个类能够有它造型的真实实例,不过三个接口必须至少有一个类来兑现它。在
UML 2中,一个接口被认为是类建立模型成分的特殊化。因而,接口就象类那样绘制,可是长方形的顶部区域也有文件“interface”,如图
10所示。5

大红鹰葡京会娱乐 19

大红鹰葡京会娱乐 20

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

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

在图 10中展现的图中,Professor和Student类都落实了Person的接口,但并不从它再三再四。大家了然那一点是由于上面七个原因:一)
Person对象作为接口被定义 —
它在对象的名字区域中有“interface”文本,而且我们看看由于Professor和Student对象依据画类对象的规则(在它们的名字区域中从不额外的分类器文本)标示,所以它们是 对象。
2) 大家明白继承在那边未有被出示,因为与带箭头的线是点线而不是实线。如图
⑩所示,一条带有闭合的单向箭头的 线意味着达成(或执行);正如大家在图
四 中所见到的,一条带有闭合单向箭头的线意味着继续。

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

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

愈来愈多的关联
在上头,作者谈谈了双向关联和单向关系。现在,作者将会介绍剩下的三种档次的关联。

关联类 
在关系建立模型中,存在有的情景下,你须求包含其余类,因为它含有了有关关联的有价值的新闻。对于那种情景,你会动用 关联类 来绑定你的主干关系。关联类和一般类1样表示。分化的是,主类和关联类之间用一条相交的点线连接。图
1一 展现二个航空工业实例的涉嫌类。

关联类
在提到建模中,存在部分情状下,你供给包蕴别的类,因为它含有了有关关联的有价值的音信。对于那种情况,你会选拔
关联类
来绑定你的着力关系。关联类和一般类一样表示。差别的是,主类和关联类之间用一条相交的点线连接。图
1一 展现1个航空工业实例的关系类。

大红鹰葡京会娱乐 21

大红鹰葡京会娱乐 22

图 1壹:扩展关联类 MileageCredit

图 11:扩展关联类 MileageCredit

在图 1一 中显得的类图中,在Flight类和 FrequentFlyer
类之间的关系,发生了名叫MileageCredit的涉嫌类。这意味着当Flight类的一个实例关联到 FrequentFlyer
类的叁个实例时,将会发生 MileageCredit 类的3个实例。

在图 11 中显示的类图中,在Flight类和 FrequentFlyer
类之间的关系,发生了名字为MileageCredit的涉嫌类。那象征当Flight类的贰个实例关联到 FrequentFlyer
类的三个实例时,将会生出 MileageCredit 类的三个实例。

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

聚合
集合是1种专门类型的关联,用于描述“总体到有的”的关系。在主题的集聚关系中,
部分类 的生命周期独立于 整体类 的生命周期。

比方来说,大家得以想像, 是一个完全实体,而 车轮 轮胎是整辆车的1部分。轮胎能够在安放到车时的前多少个星期被制作,并放置于仓库中。在那个实例中,Wheel类实例清楚地独自地Car类实例而存在。不过,有个别情况下, 部分 类的生命周期并  独立于 整体 类的生命周期

那称为合成聚合。举例来说,思虑公司与单位的关系。 卖家和机关 都建立模型成类,在铺子存在之前,部门不可能存在。那里Department类的实例依赖于Company类的实例而留存。

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

着力聚合 
有汇集关系的关系建议,有个别类是其它某些类的一局地。在八个集聚关系中,子类实例能够比父类存在更长的时刻。为了展现3个汇集关系,你画一条从父类到有的类的实线,并在父类的涉嫌末端画1个未填充棱形。图
12 突显车和轮胎间的汇集关系的例证。

大红鹰葡京会娱乐 23

图 1贰: 多少个晤面关联的事例

组合聚合 
整合聚合关系是汇聚关系的另一种样式,但是子类实例的生命周期重视于父类实例的生命周期。在图一叁中,展现了Company类和Department类之间的构成关系,注意组合关系如聚合关系1致绘制,不过这一次菱形是被填充的。

大红鹰葡京会娱乐 24

图 一三: 3个重组关系的例子

在图 一三中的关系建立模型中,2个Company类实例至少总有3个Department类实例。因为关乎是整合关系,当Company实例被移除/销毁时,Department实例也将机关地被移除/销毁。组合聚合的另二个根本功能是一对类只好与父类的实例相关(举例来说,大家例子中的Company类)。

反射关联 
今昔大家已经斟酌了颇具的关联类型。就像您只怕注意到的,我们的装有例子已经显得了八个区别类之间的涉嫌。但是,类也足以接纳反射关联与它本人相关联。开头,那大概未有意思,不过切记,类是架空的。图
1四 展现二个Employee类怎样通过manager /
manages剧中人物与它自身有关。当叁个类关联到它自个儿时,那并不意味类的实例与它自己有关,而是类的1个实例与类的另三个实例相关。

大红鹰葡京会娱乐 25

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

图 14描绘的涉及说澳优个Employee实例或者是此外二个Employee实例的老总。然则,因为“manages”的关系剧中人物有
0..*的多重性描述;2个雇员也许不受任何其余雇员管理。

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

UML
规范并不供给品质及操作可知性必须出示在类图上,不过它必要为各样属性及操作定义可知性。为了在类图上的显示可知性,放置可知性标志于属性或操作的名字此前。虽然UML 内定多样可知性类型,可是实际的编制程序语言恐怕扩展额外的可知性,或不辅助UML 定义的可见性。表四展现了 UML 协理的可知性类型的例外标志。

表 四:UML 帮忙的可知性类型的申明

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

近日,让我们看二个类,以表达属性及操作的可知性类型。在图 15中,全体的属性及操作都以public,除了 updateBalance 操作。updateBalance
操作是protected。

大红鹰葡京会娱乐 26

图 ①5:二个 BankAccount 类表达它的性子及操作的可知性


回页首

UML
2 补充

既是大家已经覆盖了根基和高档大旨,我们将覆盖壹些由UML 壹.
x增添的类图的新标志。

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

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

Instance Name : Class Name

举例来说来说:

Donald : Person

因为体现实例的指标是呈现值得注意的或相关的音信,没要求在您的模子中隐含全部实体性质及操作。相反地,仅仅显示感兴趣的习性及其值是截然适用的。如图1六所描述。

大红鹰葡京会娱乐 27

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

而是,仅仅突显1些实例而尚未它们的关系不太实用;由此,UML 2也同意在实体层的涉嫌/关联建立模型。绘制关联与1般的类关系的条条框框一样,除了在建立模型关联时有三个附加的渴求。附加的限定是,关联关系必须与类图的涉嫌相平等,而且事关的剧中人物名字也亟须与类图相平等。它的四个事例展现于图
一柒 中。在那些例子中,实例是图 陆 中类图的例证实例。

大红鹰葡京会娱乐 28

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

图 一7有Flight类的三个实例,因为类图提议了在Plane类和Flight类之间的关系是 0或多。因此,大家的例子给出了八个与NX03三七Plane实例相关的Flight实例。

角色 
建立模型类的实例有时比期望的进一步详细。有时,你大概但是想要在二个较多的1般层次做类关系的模型。在那种情景下,你应有利用 角色 记号。剧中人物记号类似于实例记号。为了创造类的角色模型,你画三个方格,并在当中放置类的剧中人物名及类名,作为实体记号,然而在那景况你无法加下划线。图
1八 呈现3个由图 14 中图描述的雇员类扮演的角色实例。在图 18中,大家得以认为,即便雇员类与它本人有关,关系真正是关于雇员之间扮演组长及团伙成员的角色。

大红鹰葡京会娱乐 29

图 1八:1个类图展现图第11四中学饰演不一致角色的类

在意,你不可能在纯粹类图中做类剧中人物的建立模型,即便图
1八显示你能够如此做。为了采用剧中人物记号,你将会供给运用上边研究的内部结构记号。

内部的结构 
UML 2结构图的更实用的意义之一是新的内部结构记号。它同意你显示3个类或其余的二个分类器怎么着在里面整合。这在
UML 壹. x
中是不容许的,因为记号限制你不得不显示二个类所全部的集纳关系。现在,在 UML
二 中,内部的组织记号让您更明白地出示类的相继部分怎么样保持关系。

让大家看贰个实例。在图 18中大家有三个类图以表现三个Plane类怎么样由多个引擎和三个控制软件对象组成。从这一个图中省略的东西是显得关于飞机部件怎样棉被服装配的一对音讯。从图
1八的图,你十分的小概表达,是种种控制软件对象说了算七个引擎,如故3个控制软件对象说了算多少个引擎,而另叁个操纵二个发动机。

大红鹰葡京会娱乐 30

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

绘制类的内在结构将会革新这种情景。发轫时,你通过用2个区域画3个方格。最上端的区域包涵类名字,而较低的区域包涵类的内部结构,展现在它们父类中承担不相同剧中人物的一些类,剧中人物中的每一种部分类也涉及到其余类。图
1九 呈现了Plane类的内部结构;注意内部结构怎么着澄清混乱性。

大红鹰葡京会娱乐 31

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

在图 20 中Plane有多个ControlSoftware 对象,而且每一种控制三个引擎。在图左侧上的
ControlSoftware(control壹)控制引擎 一 和 2 。在图左边的
ControlSoftware(control二)控制引擎 三 和 四 。 

举例来说来说,咱们能够想像, 是2个完整实体,而 车轮
轮胎是整辆车的一片段。轮胎能够在交待到车时的前多少个礼拜被塑造,并放置于仓库中。在这一个实例中,Wheel类实例清楚地单独地Car类实例而留存。但是,有个别情况下,
部分 类的生命周期并 独立于 整体 类的生命周期 —
那名字为合成聚合。举例来说,思量公司与机构的关联。 同盟社和部门
都建立模型成类,在集团存在在此之前,部门不可能存在。那里Department类的实例信赖于Company类的实例而留存。

让我们更进一步商量基本聚合和重组聚合。

着力聚合
有集聚关系的关系提出,有个别类是别的某些类的一局地。在二个会晤关系中,子类实例能够比父类存在越来越长的时光。为了展现叁个汇集关系,你画一条从父类到有的类的实线,并在父类的关系末端画一个未填充棱形。图
1二 显示车和轮胎间的成团关系的事例。

大红鹰葡京会娱乐 32

图 1二: 二个凑合关联的例子

组合聚合
整合聚合关系是汇集关系的另壹种样式,可是子类实例的生命周期正视于父类实例的生命周期。在图1三中,展现了Company类和Department类之间的组成关系,注意组合关系如聚合关系1致绘制,可是此次菱形是被填充的。

大红鹰葡京会娱乐 33

图 1三: 贰个重组关系的例证

在图 一3中的关系建立模型中,二个Company类实例至少总有多少个Department类实例。因为涉嫌是整合关系,当Company实例被移除/销毁时,Department实例也将机关地被移除/销毁。组合聚合的另二个根本意义是有的类只好与父类的实例相关(举例来说,大家例子中的Company类)。

反射关联
未来大家已经商量了全部的关联类型。就像是您大概注意到的,我们的全数例子已经呈现了多个区别类之间的涉及。可是,类也得以使用反射关联与它自身相关联。开首,那说不定未有意义,可是切记,类是架空的。图
1四 突显贰个Employee类如何通过manager /
manages剧中人物与它自个儿有关。当3个类关联到它本人时,那并不表示类的实例与它自身有关,而是类的一个实例与类的另3个实例相关。

大红鹰葡京会娱乐 34

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

图 1四描绘的关联说澳优个Employee实例或者是其余多少个Employee实例的经纪。不过,因为“manages”的涉嫌剧中人物有
0..*的多重性描述;3个雇员可能不受任何别的雇员管理。

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

UML
规范并不须求质量及操作可知性必须出示在类图上,不过它要求为每种属性及操作定义可知性。为了在类图上的展现可知性,放置可知性标志于属性或操作的名字从前。即便UML 内定各类可知性类型,然则实际上的编制程序语言大概扩充额外的可知性,或不帮衬UML 定义的可知性。表四突显了 UML 帮忙的可知性类型的例外标志。

表 4:UML 协助的可知性类型的标志

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

大红鹰葡京会娱乐,当今,让大家看五个类,以注解属性及操作的可知性类型。在图 15中,全数的属性及操作都以public,除了 updateBalance 操作。updateBalance
操作是protected。

大红鹰葡京会娱乐 35

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


回页首

UML 2 补充

既然大家曾经覆盖了根基和高等宗旨,大家将掩盖1些由UML 一.
x日增的类图的新标志。

实例
当三个系统结创设模时,显示例子类实例有时候是立竿见影的。为了那种结创设立模型,UML
二 提供 实例规范
成分,它展现在系统中使用例子(或具体)实例的值得注意的新闻。

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

Instance Name : Class Name

举例来说来说:

Donald : Person

因为体现实例的目标是显得值得注意的或相关的新闻,没须要在你的模子中隐含全部实体性质及操作。相反地,仅仅彰显感兴趣的习性及其值是截然适用的。如图1陆所描述。

大红鹰葡京会娱乐 36

图 1陆:Plane类的二个实例例子(只浮现感兴趣的属性值)

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

大红鹰葡京会娱乐 37

图 一七:图 ⑥ 中用实例代替类的例证

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

角色
建立模型类的实例有时比期望的愈益详细。有时,你恐怕仅仅想要在2个较多的形似层次做类关系的模子。在那种气象下,你应有运用
角色
记号。剧中人物记号类似于实例记号。为了建立类的剧中人物模型,你画多少个方格,并在中间放置类的脚色名及类名,作为实体记号,但是在这景观你不能加下划线。图
18 展现三个由图 14 中图描述的雇员类扮演的剧中人物实例。在图 1第88中学,大家能够认为,尽管雇员类与它自身有关,关系真的是关于雇员之间扮演总经理及团体成员的剧中人物。

大红鹰葡京会娱乐 38

图 18:二个类图显示图第11肆中学扮演分歧剧中人物的类

留神,你不能够在纯粹类图中做类剧中人物的建立模型,即便图
18出示你能够如此做。为了利用角色记号,你将会须要运用下边研讨的内部结构记号。

在那之中的协会
UML 2结构图的更有效的功力之1是新的内部结构记号。它同意你显得贰个类或别的的3个分类器怎样在个中整合。这在
UML 1. x
中是不容许的,因为记号限制你不得不呈现二个类所享有的联谊关系。以后,在 UML
二 中,内部的构造记号让您更清楚地出示类的各种部分怎么着保持关系。

让我们看三个实例。在图 18中大家有1个类图以表现四个Plane类怎样由多个引擎和多少个控制软件对象组成。从那些图中省略的事物是显得关于飞机部件怎么样棉被服装配的某些新闻。从图
1八的图,你不能表明,是各类控制软件对象说了算四个引擎,依然八个控制软件对象说了算四个引擎,而另二个决定三个内燃机。

大红鹰葡京会娱乐 39

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

绘制类的内在结构将会立异那种气象。开首时,你通过用二个区域画多少个方格。最上方的区域包蕴类名字,而较低的区域包蕴类的内部结构,呈现在它们父类中负责不一样剧中人物的有个别类,剧中人物中的每一种部分类也关乎到别的类。图
1九 显示了Plane类的内部结构;注意内部结构如何澄清混乱性。

大红鹰葡京会娱乐 40

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

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


回页首

结论

最少存在三个驾驭类图的主要理由。第1个是它展现系统一分配类器的静态结构;第叁个理由是图为UML描述的其他协会图提供了核心记号。开发者将会认为类图是为她们尤其成立的;可是别的的协会成员将发现它们也是卓有成效的。业务分析师能够用类图,为系统的业务远景建立模型。正如大家将会在本种类有关
UML 基础的篇章中见到的,其余的图 —
包涵活动图,种类图和状态图——参考类图中的类建立模型和文书档案化。

关于“UML 基础”的本体系的背后的构件图。


回页首

脚注

1
delayFlight未有再次回到值,因为笔者作出了陈设决定,不要再次来到值。有好几能够争持的是,延迟操作应该回到新的抵达时间,而且,如果是这种情形,操作属性将呈现为
delayFlight(numberOfMinutes : Minutes) : Date。

2唯恐看起来很奇怪, BankAccount 类不了然OverdrawnAccountsReport
类。这一个建立模型使报表类能够知道它们报告的业务类,但是事情类不知晓它们正在被告知。那解开多少个对象的耦合,并为此使系统变得更能适应变化。

3
软件包对于公司你的模子类是庞大的,可是切记主要的1些是,你的类图应该是有关建立模型系统的不难沟通的音讯。在你的软件包有不少类的景况下,最棒使用七个主题类图,而不是单纯暴发三个大的类图。

4
要明白主要一点,当自家说“全数的那几个成员”时,笔者可是表示在此时此刻图中的类将彰显出来。突显叁个有内容的软件包的图,不供给体现它的有所内容。它可以遵照壹些准则,呈现包括成分的子集,那个规则正是毫不全体的软件包分类器都以必备的。

5 当画3个类图时,在 UML
规范中,全体要做的只是把类放入纺锤形的顶部区域,而你同理处理接口;不过,UML
规范认为,在这么些区域放置“class”文本是可选的,假如类没有显得,那么它应该被要是。

 

相关文章

admin

网站地图xml地图