里选择的基本图的一体系小说的一局地,顶部区域展现类的名字

比方来说:

脚注

那是有关联合建模语言、即UML
里使用的基本图的一密密麻麻小说的一部分。在本人开始关于连串图的文章 里,我把首要从
UML 1.4 版,转移到 OMG的使用UML 2.0版草案规范(又称为UML
2)。在那篇小说中,我将会谈谈结构图,那是早已在 UML 2
中提出的一种新图序列。由于本连串小说的目标是使人们通晓记号元素及它们的寓意,该文主要关切类图。你飞速就会分晓这么做的说辞。随后的篇章将会覆盖结构范畴中包蕴的其他图。

0个或多少个

体育365网址 1

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

3

 

标记元素的,所以这个小说并不意味着为建模的最好点子提供引导方针,或是该怎么决定怎样内容应该首先被建模。相反的,该文及本种类作品的目的根本是协助大家对于记号元素

语法和意义有一个骨干的知晓。借由那个文化,你应该可以阅读图,并使用科学的标记元素成立你自己的图。*

那篇文章假定你对面向对象的统筹已经有了着力的明亮。你们当中借使有人需求有的面向对象概念的相助,那么可以访问http://java.sun.com/docs/books/tutorial/java/concepts/体育365网址,,来得到Sun集团关于面向对象编程的简短指点。阅读 “什么是类?” 什么是一而再?” 章节,将提需求你足足的了然,并对该文的读书会具有辅助。别的,大卫泰勒的书《 Object-Oriented Technologies: A Manager’s
Guide》提供了面向对象设计的卓绝,高品位的求证,而无需对计算机编程有高深的知晓。

UML 2 中的阴和阳

在面向对象的统筹中一个丰富关键的概念,继承,指的是一个类(子类)继承除此以外的一个类(超类)的均等功效,并增添它和谐的新职能(一个非技术性的比喻,想象我一而再了自家大姑的貌似的音乐力量,然而在自身的家里,我是绝无仅有一个玩电吉他的人)的能力。为了在一个类图上建模继承,从子类(要继承行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。考虑银行账户的门类:图
4 显示 CheckingAccount 和 SavingsAccount 类怎么着从 BankAccount
类继承而来。

图 14
描绘的涉及说多美滋(Karicare)个Employee实例可能是此外一个Employee实例的老总。可是,因为“manages”的关系角色有
0..*的多重性描述;一个雇员可能不受任何其余雇员管理。

参照 UML 基础体系的其他小说和学科

 

体育365网址 2

体育365网址 3

体育365网址 4

订阅 UML 相关小说和科目标 RSS
提要

体育365网址 5

 

在 UML 2 中有两种基本的图范畴:结构图和行为图。每个 UML
图都属于那二个图范畴。结构图的目标是突显建模系统的静态结构。它们包含类,组件和(或)对象图。另一方面,行为图显示系统中的对象的动态行为,包含如目的的章程,合作和运动等等的情节。行为图的实例是活动图,用例图和连串图。

 

回页首

大致上的结构图

有如自己所说的,结构图呈现建模系统的静态结构。关心系统的构件,无需考虑时间。在系统内,静态结构通过显示档次和它们的实例进行传播。除了体现系统项目和它们的实例,结构图至少也出示了那个元素间的部分关乎,可能的话,甚至也显得它们的内部结构。

贯穿整个软件生命周期,结构图对于各类社团成员都是实惠的。一般而言,那个图协理安插验证,和民用与团伙间的安排性调换。举例来说,业务分析师能够选用类或对象图,来为近日的工本和资源建模,例如分类账,产品或地理层次。架构师可以行使组件和安排图,来测试/确认他们的统筹是不是丰富。开发者可以选取类图,来设计并为系统的代码(或即将成为代码的)类写文档。

分外规的类图

UML 2
把协会图看成一个分类;那里并不存在称为“结构图”的图。但是,类图提供协会图类型的一个重视实例,并为咱们提供一组记号元素的初步集,供所有其余社团图使用。由于类图是那般主题,本文的剩下部分将会把第一集中在类图书号集。在本文的末梢,你将对此怎么画UML
2类图有所了解,而且对于精通在前面文章少校涉及的任何协会图有一个深厚的底子。

 

回页首

基础

如先前所涉嫌的,类图的目标是浮现建模系统的种类。在大部的 UML
模型中这么些品种包蕴:

  • 接口

  • 数据类型

  • 组件

UML
为那些项目起了一个专门的名字:“分类器”。常常地,你能够把分类器当做类,但在技术上,分类器是更进一步常见的术语,它依然引用上边的任何二种档次为好。

类名

类的 UML 表示是一个长方形,垂直地分成多个区,如图 1
所示。顶部区域彰显类的名字。中间的区域列出类的性质。底部的区域列出类的操作。当在一个类图上画一个类元素时,你必必要有上面的区域,上边的二个区域是可选用的(当图描述仅仅用于显示分类器间涉及的高层细节时,下边的三个区域是不必要的)。图
1 展现一个航路班机怎样作为 UML
类建模。正如我辈所能见到的,名字是Flight,大家得以在中游区域来看Flight类的3个特性:flightNumber,departure提姆e

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

体育365网址 6

图 1: Flight类的类图

类属性列表

类的属性节(中部区域)在分隔线上列出每一个类的特性。属性节是可挑选的,假设一用它,就隐含类的列表突显的各类属性。该线用如下格式:

name : attribute type
flightNumber : Integer

继续大家的Flight类的例证,我们得以应用性质类型音讯来叙述类的属性,如表 1
所示。

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

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

在作业类图中,属性类型一般与单位符合,那对于图的可能读者是有含义的(例如,分钟,英镑,等等)。可是,用于转移代码的类图,要求类的品质类型必须界定在由程序语言提供的品种之中,或带有于在系统中贯彻的、模型的档次之中。

在类图上显得所有默许值的一定属性,有时是卓有效率的(例如,在银行账户应用程序中,一个新的银行账户会以零为早先值)。UML
规范允许在属性列表节中,通过应用如下的符号作为默许值的标识:

name : attribute type = default value

比方来说:

balance : Dollars = 0

来得属性默许值是可挑选的;图 2
突显一个银行账户类具有一个名为 balance的花色,它的默许值为0。

体育365网址 7

图 2:呈现默许为0日币的balance属性值的银行账户类图。

类操作列表

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

   name(parameter list) : type of value returned

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

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

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

图3出示,delayFlight 操作有一个Minutes类型的输入参数 —
numberOfMinutes。不过,delayFlight
操作没有重回值。 1 当一个操作有参数时,参数被放在操作的括号内;每个参数都选取那样的格式:“参数名:参数类型”。

体育365网址 8

图 3:Flight类操作参数,包含可接纳的“in”标识。

当文档化操作参数时,你恐怕选取一个可选拔的提示器,以显示参数到操作的输入参数、或输出参数。那些可选择的提示器以“in”或“out”出现,如图3中的操作区域所示。一般的话,除非将动用一种早期的次第编程语言,如Fortran
,那个提醒器可能会持有帮助,否则它们是不须要的。可是,在
C++和Java中,所有的参数是“in”参数,而且依据UML规范,既然“in”是参数的默许类型,一大半人将会遗漏输入/输出提醒器。

继承

在面向对象的筹划中一个这些首要的概念,继承,指的是一个类(子类)继承其它的一个类(超类)的同一功用,并伸张它自己的新职能(一个非技术性的比方,想象自己继续了本人大姑的形似的音乐力量,可是在自己的家里,我是唯一一个玩电吉他的人)的力量。为了在一个类图上建模继承,从子类(要一而再行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。考虑银行账户的门类:图
4 显示 CheckingAccount 和 SavingsAccount 类怎么样从 BankAccount
类继承而来。

体育365网址 9

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

在图 4 中,继承关系由各样超类的独自的线画出,那是在IBM Rational
罗斯和IBM Rational
XDE中运用的主意。不过,有一种名叫树标记的预备形式可以画出继承关系。当存在多少个或更加多子类时,如图
4 中所示,除了延续线象树枝一样混在协同外,你可以动用树形记号。图 5
是重绘的与图 4 一样的一连,然则本次运用了树形记号。

体育365网址 10

图 5: 一个行使树形记号的后续实例

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

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

关联 
当你系统建模时,特定的靶子间将会互相关系,而且那几个涉及本身必要被清晰地建模。有八种关系。在这一片段中,我将会谈谈它们中的四个– 双向的涉嫌和单向的涉嫌,而且我将会在Beyond the
basics
一些商讨剩下的两种关系类型。请小心,关于曾几何时该行使每体系型涉及的事无巨细谈论,不属于本文的界定。相反的,我将会把紧要集中在每种关系的用途,并表明如何在类图上画出涉及。

双向(标准)的关联 
关系是四个类间的联网。关联总是被假定是双向的;那代表,八个类互相明白它们间的维系,除非您限定一些此外项目标关系。回看一下Flight
的例子,图 6 突显了在Flight类和Plane类之间的一个正规项目的涉及。

体育365网址 11

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

鉴于对那多少个在涉及底部可能出现的多重值描述感到困惑,下边的表3列出了一部分多重值及它们含义的例证。

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

莫不的多重值描述

表示

含义

0..1

0个或1个

1

只能1个

0..*

0个或七个

*

0个或七个

1..*

1个或本人个

3

只能3个

0..5

0到5个

5..15

5到15个

单向关系 
在一个单向关系中,七个类是连锁的,不过唯有一个类知道那种关联的存在。图 7
呈现单向关系的透支财务报告的一个实例。

体育365网址 12

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

一个一边的涉及,表示为一条带有指向已知类的怒放箭头(不关门的箭头或三角形,用于标志继承)的实线。就像是标准提到,单向关系包涵一个角色名和一个多重值描述,然而与业内的双向关联分歧的时,单向关系只包含已知类的角色名和多重值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的角色。但是,和专业提到不一样,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。 2

软件包 
不可防止,若是你正在为一个大的序列或大的业务领域建模,在你的模型上校会有广大不比的分类器。管理所有的类将是一件令人生畏的职务;所以,UML
提供一个名为 软件包的团队元素。软件包使建模者可以社团模型分类器到名字空间中,那有些象文件系统中的文件夹。把一个种类分为多少个软件包使系统成为不难精晓,越发是在每个软件包都表现系统的一个一定部分时。 3

在图中设有三种艺术表示软件包。并没有规则需要运用哪一种标志,除了用你个人的论断:哪一种更方便阅读你画的类图。三种办法都是由一个较小的长方形(用于固定)嵌套在一个大的长方形中初露的,如图
8 所示。但是建模者必须决定包的成员如何表示,如下:

  • 比方建模者决定在大长方形中显得软件包的积极分子,则有着的那一个成员 4 亟需被停放在长方形里面。此外,所有软件包的名字须求放在软件包的较小长方形之内(如图
    8 的来得)。

  • 如若建模者决定在大的长方形之外突显软件包成员,则拥有将会在图上突显的分子都需求被停放长方形之外。为了突显属于软件包的分类器属于,从各类分类器画一条线到中间有加号的圆圆,那一个圆周粘附在软件包之上(图9)。

体育365网址 13

图 8:在软件包的长方形内显示软件包成员的软件包元素例子

体育365网址 14

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

刺探基础首要性

在 UML 2
中,通晓类图的功底更为首要。那是因为类图为拥有的别样社团图提供基本的营造块。如组件或对象图(仅仅是举了些例子)。

 

回页首

超过基础

到此截止,我早就介绍了类图的底子,可是请继续往下读!在底下的有些中,我将会引导你到你会使用的类图的更要紧的上面。这几个概括UML
2 正式中的接口,其余的两种关系类型,可知性和其它补偿。

接口 
在本文的面前,我指出你以类来设想分类器。事实上,分类器是一个尤其相似的概念,它概括数据类型和接口。

关于哪天、以及如何连忙地在系统结构图中利用数据类型和接口的完全探究,不在本文的座谈范围之内。既然那样,我何以要在此间提及数据类型和接口呢?你或许想在结构图上效仿那一个分类器类型,在那么些时候,使用正确的符号来代表,或者至少知道这么些分类器类型是非同寻常的。不得法地绘制这一个分类器,很有可能将使您的构造图读者感到混乱,将来的系统将不能够适应须求。

一个类和一个接口不一致:一个类可以有它造型的真正实例,可是一个接口必须至少有一个类来落到实处它。在
UML 2
中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也有文件“interface”,如图
10
所示。 5

体育365网址 15

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

在图 10
中呈现的图中,Professor和Student类都达成了Person的接口,但并不从它两次三番。我们通晓那或多或少是由于上边五个原因:1)
Person对象作为接口被定义 —
它在目的的名字区域中有“interface”文本,而且咱们看出由于Professor和Student对象根据画类对象的规则(在它们的名字区域中从未额外的分类器文本)标示,所以它们是 目标。
2) 大家驾驭继承在此间没有被出示,因为与带箭头的线是点线而不是实线。如图
10
所示,一条带有闭合的单向箭头的 线意味着落成(或施行);正如大家在图
4 中所见到的,一条带有闭合单向箭头的线意味着继续。

越来越多的涉嫌 
在地点,我谈谈了双向关联和单向关系。现在,我将会介绍剩下的三种档次的涉及。

关联类 
在论及建模中,存在一些场馆下,你须求包涵其余类,因为它涵盖了有关关联的有价值的音讯。对于那种情状,你会使用 关联类 来绑定你的大旨关系。关联类和一般类一样表示。不一样的是,主类和关联类之间用一条相交的点线连接。图
11 显示一个航空工业实例的关联类。

体育365网址 16

图 11:增添关联类 MileageCredit

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

聚合 
聚拢是一种越发类型的涉嫌,用于描述“总体到部分”的涉及。在基本的聚众关系中, 部分类 的生命周期独立于 整体类 的生命周期。

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

最少存在五个了然类图的紧要性理由。第三个是它彰显系统分类器的静态结构;首个理由是图为UML描述的此外协会图提供了基本记号。开发者将会觉得类图是为她们特意建立的;不过其余的团体成员将发现它们也是卓有成效的。业务分析师可以用类图,为系统的业务远景建模。正如我辈将会在本体系有关
UML 基础的稿子中看看的,其余的图 —
包罗活动图,连串图和状态图——参考类图中的类建模和文档化。

比方来说,大家得以想像, 是一个全部实体,而 车轮 轮胎是整辆车的一局地。轮胎可以在安插到车时的前多少个星期被制作,并放置于仓库中。在这几个实例中,Wheel类实例清楚地独自地Car类实例而留存。可是,有些情状下, 部分 类的生命周期并  独立于 整体 类的生命周期

那名叫合成聚合。举例来说,考虑公司与机关的涉及。 店家和单位 都建模成类,在小卖部存在从前,部门不可以存在。那里Department类的实例倚重于Company类的实例而留存。

让大家更进一步商讨基本聚合和整合聚合。

宗旨聚合 
有汇聚关系的涉及提议,某个类是其余某个类的一局地。在一个聚众关系中,子类实例可以比父类存在更长的年月。为了突显一个集合关系,你画一条从父类到有些类的实线,并在父类的关联末端画一个未填充棱形。图
12 彰显车和轮胎间的聚合关系的例证。

体育365网址 17

图 12: 一个聚集关联的事例

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

体育365网址 18

图 13: 一个组合关系的例证

在图 13
中的关系建模中,一个Company类实例至少总有一个Department类实例。因为涉嫌是结合关系,当Company实例被移除/销毁时,Department实例也将自行地被移除/销毁。组合聚合的另一个最主要功用是局部类只能与父类的实例相关(举例来说,大家例子中的Company类)。

反射关联 
方今我们曾经琢磨了独具的关系类型。如同您恐怕注意到的,大家的享有例子已经显得了八个差别类之间的关联。然而,类也足以利用反射关联与它自己相关联。初叶,那或许没有意思,可是切记,类是空泛的。图
14 彰显一个Employee类怎样通过manager /
manages角色与它自身有关。当一个类关联到它本身时,那并不意味着类的实例与它自己有关,而是类的一个实例与类的另一个实例相关。

体育365网址 19

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

图 14
描绘的涉及说Bellamy(Bellamy)个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。

体育365网址 20

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

 

回页首

UML 2 补充

既然如此大家早已覆盖了根基和高等大旨,大家将掩盖一些由UML 1.
x充实的类图的新标志。

实例 
当一个系统结创设模时,显示例子类实例有时候是实用的。为了这种结打造模,UML
2
提供 实例规范 元素,它显得在系统中动用例子(或具体)实例的值得注意的信息。

实例的号子和类一样,不过代表顶端区域中仅有的类名,它的名字是由此拼接的:

Instance Name : Class Name

举例来说:

Donald : Person

因为显示实例的目标是体现值得注意的或有关的新闻,没要求在你的模型中包罗整体实体性质及操作。相反地,仅仅突显感兴趣的性质及其值是完全适用的。如图16所描述。

体育365网址 21

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

但是,仅仅突显有些实例而从未它们的涉嫌不太实用;由此,UML 2
也允许在实体层的涉及/关联建模。绘制关联与一般的类关系的平整一样,除了在建模关联时有一个叠加的渴求。附加的限定是,关联关系必须与类图的涉及相平等,而且涉及的角色名字也亟须与类图相平等。它的一个例证突显于图
17 中。在那些例子中,实例是图 6 中类图的事例实例。

体育365网址 22

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

图 17
有Flight类的二个实例,因为类图提议了在Plane类和Flight类之间的涉嫌是 0或多。由此,大家的例证给出了多个与NX0337
Plane实例相关的Flight实例。

角色 
建模类的实例有时比期望的进一步详细。有时,你恐怕然则想要在一个较多的相似层次做类关系的模型。在那种情景下,你应该利用 角色 记号。角色记号类似于实例记号。为了创设类的角色模型,你画一个方格,并在里头放置类的角色名及类名,作为实体记号,可是在那意况你不可以加下划线。图
18 呈现一个由图 14 中图描述的雇员类扮演的角色实例。在图 18
中,大家得以认为,即使雇员类与它自己有关,关系真正是关于雇员之间扮演老板及团队成员的角色。

体育365网址 23

图 18:一个类图显示图14中饰演不相同角色的类

在意,你不可能在纯粹类图中做类角色的建模,固然图
18来得你可以如此做。为了利用角色记号,你将会需求运用上面商讨的内部结构记号。

其中的结构 
UML 2
结构图的更使得的效用之一是新的内部结构记号。它同意你呈现一个类或别的的一个分类器如何在中间整合。那在
UML 1. x
中是不可以的,因为记号限制你只好突显一个类所具备的聚集关系。现在,在 UML
2 中,内部的社团记号让您更明了地出示类的相继部分怎么样保持关系。

让我们看一个实例。在图 18
中我们有一个类图以呈现一个Plane类如何由两个引擎和多个控制软件对象组成。从那几个图中省略的东西是显示关于飞机部件怎么着被装配的一对音讯。从图
18
的图,你不可以表达,是每个控制软件对象说了算五个引擎,仍旧一个控制软件对象说了算多个引擎,而另一个控制一个引擎。

体育365网址 24

图 19: 只显示对象时期关系的类图

绘制类的内在结构将会改进这种情状。早先时,你通过用二个区域画一个方格。最上边的区域包蕴类名字,而较低的区域包括类的内部结构,展现在它们父类中承受差距角色的一对类,角色中的每个部分类也论及到任何类。图
19 展现了Plane类的内部结构;注意内部结构如何澄清混乱性。

体育365网址 25

图 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”文本是可选的,即使类没有呈现,那么它应该被假诺。

 

参考资料

有关小编

体育365网址 26

DonaldBell是IBM全世界服务的一个IT专家,在当时他和IBM的客户一同从事于统筹和支付基于软件解决方案的J2EE。

到此截止,我曾经介绍了类图的根底,可是请继续往下读!在下面的片段中,我将会指导您到您会动用的类图的更关键的地点。那么些包含UML
2 专业中的接口,其余的两种关系类型,可知性和其余补给。

体育365网址 27

*我也想唤起读者,这一多元小说是有关 UML

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

表 4:UML 接济的可知性类型的标志

一个类和一个接口差异:一个类可以有它造型的实在实例,然则一个接口必须至少有一个类来落实它。在
UML 2
中,一个接口被认为是类建模元素的特殊化。由此,接口就象类那样绘制,可是长方形的顶部区域也有文件“interface”,如图
10
所示。 5

  • 假诺建模者决定在大长方形中呈现软件包的积极分子,则兼具的那一个成员4急需被放置在长方形里面。其余,所有软件包的名字要求放在软件包的较小长方形之内(如图
    8 的显得)。

  • 要是建模者决定在大的长方形之外呈现软件包成员,则有所将会在图上展现的分子都亟需被内置长方形之外。为了体现属于软件包的分类器属于,从种种分类器画一条线到中间有加号的圆圆,那几个圆周粘附在软件包之上(图9)。

体育365网址 28

体育365网址 29

接口 
在本文的前边,我提出你以类来考虑分类器。事实上,分类器是一个尤为相似的定义,它包涵数据类型和接口。

0个或多少个

双向(标准)的关联 
事关是多少个类间的过渡。关联总是被假定是双向的;那意味,五个类相互通晓它们间的关系,除非您限定一些其它类型的关系。回想一下Flight
的例证,图 6 彰显了在Flight类和Plane类之间的一个业内项目的涉及。

1

图 1: Flight类的类图

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

领先基础

比方来说:

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

出于对那么些在涉及尾部可能出现的多重值描述感到狐疑,上面的表3列出了有些多重值及它们含义的事例。

1..*

体育365网址 30

体育365网址 31

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

0到5个

5..15

关联类 
在提到建模中,存在部分状态下,你需要包罗其他类,因为它包蕴了有关关联的有价值的音讯。对于那种气象,你会采纳 关联类 来绑定你的主干关系。关联类和一般类一样表示。分歧的是,主类和关联类之间用一条相交的点线连接。图
11 彰显一个航空工业实例的关系类。

回页首

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

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

体育365网址 32

角色
建模类的实例有时比期望的更为详细。有时,你或许只有想要在一个较多的貌似层次做类关系的模子。在那种状态下,你应有采用
角色
记号。角色记号类似于实例记号。为了创设类的角色模型,你画一个方格,并在中间放置类的角色名及类名,作为实体记号,可是在那情景你不可能加下划线。图
18 展现一个由图 14 中图描述的雇员类扮演的角色实例。在图 18
中,我们可以认为,就算雇员类与它自身有关,关系真正是关于雇员之间扮演老董及协会成员的角色。

图 5: 一个应用树形记号的一连实例

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

继承


只能3个

刺探基础主要性

name : attribute type = default value

2可能看起来很奇怪, BankAccount 类不知情
OverdrawnAccountsReport
类。这些建模使报表类可以明白它们报告的业务类,不过工作类不亮堂它们正在被告知。那解开五个目的的耦合,并据此使系统变得更能适应变化。

不过,超类(父类)不必然若是抽象类。标准类作为超类是常规的。

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

1个或本人个

UML 2 补充

鉴于对那个在事关头部可能出现的多重值描述感到可疑,上面的表3列出了一部分多重值及它们含义的事例。

图 13: 一个构成关系的事例

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

在类图上出示所有默许值的一定属性,有时是实用的(例如,在银行账户应用程序中,一个新的银行账户会以零为早先值)。UML
规范允许在属性列表节中,通过选拔如下的标志作为默许值的标识:

在业务类图中,属性类型一般与单位符合,那对于图的或是读者是有含义的(例如,分钟,美金,等等)。然则,用于转移代码的类图,须要类的性质类型必须界定在由程序语言提供的品类之中,或蕴涵于在系统中完成的、模型的门类之中。

一个类和一个接口分歧:一个类可以有它造型的忠实实例,可是一个接口必须至少有一个类来已毕它。在
UML 2
中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,不过长方形的顶部区域也有文件“interface”,如图
10
所示。5

0..1

当文档化操作参数时,你可能利用一个可挑选的提示器,以呈现参数到操作的输入参数、或输出参数。这几个可挑选的提示器以“in”或“out”出现,如图3中的操作区域所示。一般的话,除非将运用一种早期的次第编程语言,如Fortran
,这一个提醒器可能会持有支持,否则它们是不须要的。然则,在
C++和Java中,所有的参数是“in”参数,而且按照UML规范,既然“in”是参数的默许类型,大多数人将会遗漏输入/输出提示器。

5..15

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

软件包 
不可幸免,如若你正在为一个大的连串或大的事务领域建模,在您的模型中校会有多如牛毛见仁见智的分类器。管理所有的类将是一件令人生畏的职务;所以,UML
提供一个称作 软件包的团队元素。软件包使建模者可以社团模型分类器到名字空间中,那有些象文件系统中的文件夹。把一个连串分为八个软件包使系统成为简单精晓,更加是在每个软件包都表现系统的一个特定部分时。 3

图 18:一个类图突显图14中扮演分裂角色的类

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


体育365网址 33

后续我们的Flight类的例证,我们得以使用性质类型信息来讲述类的属性,如表 1
所示。

图 3:Flight类操作参数,包含可拔取的“in”标识。

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

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

类属性列表

聚合 
见面是一种尤其类型的关系,用于描述“总体到一些”的涉嫌。在主导的成团关系中, 部分类 的生命周期独立于 整体类 的生命周期。

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

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

到此停止,我曾经介绍了类图的基础,不过请继续往下读!在底下的有些中,我将会引导你到你会选用的类图的更紧要的上边。那几个概括UML
2 规范中的接口,别的的三种关系类型,可知性和其他补偿。

单向关系 
在一个单向关系中,多少个类是巢倾卵破的,不过唯有一个类知道那种关联的存在。图 7
彰显单向关系的透支财务报告的一个实例。

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

  • 假定建模者决定在大长方形中显示软件包的成员,则拥有的那多少个成员 4 亟待被停放在长方形里面。其它,所有软件包的名字要求放在软件包的较小长方形之内(如图
    8 的体现)。

  • 假诺建模者决定在大的长方形之外展现软件包成员,则有着将会在图上彰显的积极分子都急需被放到长方形之外。为了彰显属于软件包的分类器属于,从每个分类器画一条线到内部有加号的圆圆,这几个圆周粘附在软件包之上(图9)。

在面向对象的设计中一个极度主要的概念,继承,指的是一个类(子类)继承除此以外的一个类(超类)的等同功效,并增添它和谐的新成效(一个非技术性的比喻,想象我继续了自身丈母娘的相似的音乐力量,但是在自我的家里,我是唯一一个玩电吉他的人)的力量。为了在一个类图上建模继承,从子类(要继续行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。考虑银行账户的品种:图
4 展现 CheckingAccount 和 SavingsAccount 类怎么着从 BankAccount
类继承而来。

5到15个

 

图 8:在软件包的长方形内突显软件包成员的软件包元素例子

比方来说:

0个或八个


来得属性默许值是可选择的;图 2
彰显一个银行账户类具有一个名为 balance的门类,它的默认值为0。

单向关系
在一个单向关系中,多个类是不无关系的,不过唯有一个类知道那种关系的存在。图 7
突显单向关系的透支财务报告的一个实例。

0..5

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

*

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

在 UML 2
中,了然类图的根基更为主要。那是因为类图为具有的别样社团图提供基本的创设块。如组件或对象图(仅仅是举了些例子)。

让我们更进一步啄磨基本聚合和烧结聚合。

体育365网址 34

只能3个

叩问基础紧要性

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

体育365网址 35

只顾,你无法在纯粹类图中做类角色的建模,即便图
18显得你可以这么做。为了接纳角色记号,你将会要求动用上面研讨的内部结构记号。

balance : Dollars = 0

UML
为那么些种类起了一个专程的名字:“分类器”。平日地,你可以把分类器当做类,但在技术上,分类器是尤为广泛的术语,它依旧引用下面的别的三种档次为好。

越来越多的涉及 
在上头,我谈谈了双向关联和单向关系。现在,我将会介绍剩下的二种档次的关系。

1..*

体育365网址 36

在 UML 2
中,了解类图的根基更为紧要。那是因为类图为具有的别样社团图提供基本的营造块。如组件或对象图(仅仅是举了些例子)。

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

体育365网址 37

当文档化操作参数时,你或许利用一个可挑选的提示器,以突显参数到操作的输入参数、或输出参数。这么些可挑选的提醒器以“in”或“out”现身,如图3中的操作区域所示。一般的话,除非将利用一种早期的次第编程语言,如Fortran
,那几个提示器可能会持有辅助,否则它们是不须求的。可是,在
C++和Java中,所有的参数是“in”参数,而且根据UML规范,既然“in”是参数的默许类型,超过半数人将会遗漏输入/输出提示器。

基础

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

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

体育365网址 38

因为显示实例的目标是显得值得注意的或相关的信息,没要求在您的模子中涵盖全体实体性质及操作。相反地,仅仅展现感兴趣的属性及其值是一点一滴适用的。如图16所讲述。

体育365网址 39

类的 UML 表示是一个长方形,垂直地分成三个区,如图 1
所示。顶部区域呈现类的名字。中间的区域列出类的性质。底部的区域列出类的操作。当在一个类图上画一个类元素时,你无法不要有上面的区域,下边的二个区域是可挑选的(当图描述仅仅用于呈现分类器间事关的高层细节时,下边的七个区域是不需求的)。图
1 来得一个航路班机怎么样作为 UML 类建模。正如我辈所能见到的,名字是
Flight,大家可以在中间区域来看Flight类的3个属性:flightNumber,departureTime

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

在图 10
中体现的图中,Professor和Student类都落实了Person的接口,但并不从它继续。大家了然那或多或少是出于上边三个原因:1)
Person对象作为接口被定义 —
它在对象的名字区域中有“interface”文本,而且大家看来由于Professor和Student对象依据画类对象的平整(在它们的名字区域中并未额外的分类器文本)标示,所以它们是 指标。
2) 我们领悟继承在那里没有被出示,因为与带箭头的线是点线而不是实线。如图
10
所示,一条带有闭合的单向箭头的 线意味着完成(或施行);正如大家在图
4 中所见到的,一条带有闭合单向箭头的线意味着继续。

0个或1个

类操作记录在类图长方形的第七个(最低的)区域中,它也是可接纳的。和性质一样,类的操作以列表格式显示,每个操作在它和谐线上。操作使用下列记号表现:

图 1: Flight类的类图

0个或1个

软件包
不可幸免,借使您正在为一个大的系统或大的政工领域建模,在您的模子上校会有很多分化的分类器。管理所有的类将是一件令人生畏的义务;所以,UML
提供一个号称
软件包的社团元素。软件包使建模者可以社团模型分类器到名字空间中,那有些象文件系统中的文件夹。把一个系统分为七个软件包使系统成为不难精通,更加是在每个软件包都表现系统的一个特定部分时。3

表示

3

含义

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

在图 11 中显得的类图中,在Flight类和 FrequentFlyer
类之间的涉及,暴发了名为
MileageCredit的关联类。那意味当Flight类的一个实例关联到 FrequentFlyer
类的一个实例时,将会发生 MileageCredit 类的一个实例。

绘制类的内在结构将会改进那种景观。发轫时,你通过用二个区域画一个方格。最上端的区域蕴涵类名字,而较低的区域包罗类的内部结构,展现在它们父类中顶住分歧角色的局地类,角色中的每个部分类也涉嫌到别的类。图
19 显示了Plane类的内部结构;注意内部结构如何澄清混乱性。

1

UML
规范并不必要质量及操作可知性必须出示在类图上,不过它要求为每个属性及操作定义可知性。为了在类图上的显示可知性,放置可知性标志于属性或操作的名字从前。纵然UML 指定三种可见性类型,不过事实上的编程语言可能伸张额外的可知性,或不帮衬UML 定义的可知性。表4展现了 UML 协理的可知性类型的不等标志。

或许的多重值描述

体育365网址 40

在图 4 中,继承关系由各种超类的独自的线画出,这是在IBM Rational
罗斯和IBM Rational
XDE中动用的法子。但是,有一种名叫 树标记的备选形式可以画出继承关系。当存在八个或越多子类时,如图
4 中所示,除了继续线象树枝一样混在一块儿外,你可以接纳树形记号。图 5
是重绘的与图 4 一样的一而再,然则这一次运用了树形记号。

后日,让大家看一个类,以表达属性及操作的可知性类型。在图 15
中,所有的品质及操作都是public,除了 updateBalance 操作。updateBalance
操作是protected。

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

在图 11 中显示的类图中,在Flight类和 FrequentFlyer
类之间的关系,暴发了号称
MileageCredit的关系类。那象征当Flight类的一个实例关联到 FrequentFlyer
类的一个实例时,将会生出 MileageCredit 类的一个实例。

  • 接口

  • 数据类型

  • 组件

Instance Name : Class Name

在图中留存二种方法表示软件包。并从未规则须要运用哪类标志,除了用你个人的判定:哪个种类更有益于阅读你画的类图。二种方法都是由一个较小的长方形(用于固定)嵌套在一个大的长方形中初露的,如图
8 所示。但是建模者必须决定包的成员怎样表示,如下:

name : attribute type
flightNumber : Integer
    name(parameter list) : type of value returned

体育365网址 41


抽象类及操作
周全的读者会专注到,在图 4 和 图5
中的图中,类名BankAccount和withdrawal操作使用斜体。那意味着,BankAccount
类是一个抽象类,而withdrawal方法是空虚的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount
多少个子类都各自地推行它们各自版本的操作。

类名

图 8:在软件包的长方形内体现软件包成员的软件包元素例子

在类图上浮现所有默认值的特定属性,有时是行得通的(例如,在银行账户应用程序中,一个新的银行账户会以零为初叶值)。UML
规范允许在属性列表节中,通过利用如下的记号作为默许值的标识:

体育365网址 42

回页首
  name(parameter list) : type of value returned

只能1个

表示

0..*

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

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

浮现属性默许值是可挑选的;图 2 彰显一个银行账户类具有一个名为
balance的品类,它的默许值为0。

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

1个或自己个

体育365网址 43

让大家看一个实例。在图 18
中大家有一个类图以突显一个Plane类怎样由八个引擎和八个控制软件对象组成。从那几个图中省略的东西是显示关于飞机部件怎么着被装配的部分音讯。从图
18
的图,你不能表明,是每个控制软件对象说了算多个引擎,照旧一个控制软件对象说了算多个引擎,而另一个说了算一个引擎。

一个一面的涉嫌,表示为一条带有指向已知类的开放箭头(不倒闭的箭头或三角形,用于标志继承)的实线。就像标准提到,单向关系包罗一个角色名和一个多重值描述,然而与正规的双向关联分化的时,单向关系只包括已知类的角色名和多重值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的角色。然则,和正式提到不一致,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。 2

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

如先前所涉及的,类图的目标是显得建模系统的档次。在一大半的 UML
模型中这么些种类包含:

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

图 2:突显默许为0法郎的balance属性值的银行账户类图。

体育365网址 44

基础

0到5个

类的 UML 表示是一个长方形,垂直地分成多少个区,如图 1
所示。顶部区域突显类的名字。中间的区域列出类的属性。尾部的区域列出类的操作。当在一个类图上画一个类元素时,你无法不要有上边的区域,上面的二个区域是可选拔的(当图描述仅仅用于显示分类器间事关的高层细节时,上面的四个区域是不需要的)。图
1 体现一个航程班机怎么着作为 UML
类建模。正如大家所能见到的,名字是 Flight,大家得以在中间区域来看Flight类的3个特性:flightNumber,departure提姆e

flightDuration。在底层区域中我们可以看到Flight类有多个操作:delayFlight
和 getArrival提姆e。

在图 20 中Plane有四个 ControlSoftware
对象,而且每个控制二个引擎。在图右边上的
ControlSoftware(control1)控制引擎 1 和 2 。在图左边的
ControlSoftware(control2)控制引擎 3 和 4 。

name : attribute type
flightNumber : Integer
属性名称 属性类型
flightNumber Integer
departureTime Date
flightDuration Minutes

体育365网址 45

体育365网址 46

抽象类及操作 
细心的读者会小心到,在图 4 和 图5
中的图中,类名BankAccount和withdrawal操作使用斜体。那意味,BankAccount
类是一个抽象类,而withdrawal方法是望梅止渴的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount
三个子类都各自地执行它们各自版本的操作。

在图中存在二种格局表示软件包。并不曾规则要求使用哪个种类标志,除了用你个人的判断:哪类更有益阅读你画的类图。二种形式都是由一个较小的长方形(用于固定)嵌套在一个大的长方形中初露的,如图
8 所示。不过建模者必须控制包的分子怎么样表示,如下:

图 11:增添关联类 MileageCredit

反射关联
当今我们已经研商了富有的关联类型。如同你可能注意到的,大家的装有例子已经显示了多个差异类之间的涉及。但是,类也可以运用反射关联与它自身相关联。开首,那或许没有意义,但是切记,类是抽象的。图
14 显示一个Employee类怎么着通过manager /
manages角色与它自身有关。当一个类关联到它自身时,那并不表示类的实例与它自己有关,而是类的一个实例与类的另一个实例相关。

类属性列表

name : attribute type = default value

类操作列表

只能1个

UML
为那个品种起了一个特意的名字:“分类器”。寻常地,你能够把分类器当做类,但在技术上,分类器是更为普遍的术语,它仍然引用上面的其余三系列型为好。

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

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

主干聚合
有会聚关系的涉及提议,某个类是其它某个类的一局地。在一个会见关系中,子类实例可以比父类存在更长的大运。为了显示一个汇集关系,你画一条从父类到部分类的实线,并在父类的涉及末端画一个未填充棱形。图
12 彰显车和轮胎间的集合关系的例证。

关联 
当您系统建模时,特定的目标间将会互相关系,而且那个涉及本身要求被清晰地建模。有三种关系。在这一有些中,我将会谈论它们中的三个– 双向的涉嫌和单向的涉嫌,而且自己将会在Beyond the
basics
一对琢磨剩下的两种关系类型。请留心,关于曾几何时该行使每种类型涉及的详实研讨,不属于本文的限制。相反的,我将会把首要集中在每种关系的用处,并表达如何在类图上画出涉嫌。

Donald : Person

比方来说,大家能够想象, 是一个完好实体,而 车轮 轮胎是整辆车的一有些。轮胎可以在交待到车时的前几个礼拜被创设,并放置于仓库中。在那几个实例中,Wheel类实例清楚地单独地Car类实例而留存。不过,有些处境下, 部分 类的生命周期并  独立于 整体 类的生命周期

那名叫合成聚合。举例来说,考虑公司与机关的涉及。 商家和单位 都建模成类,在商店存在往日,部门无法存在。那里Department类的实例器重于Company类的实例而存在。

让我们更进一步研商基本聚合和构成聚合。

骨干聚合 
有成团关系的涉嫌提议,某个类是此外某个类的一有的。在一个会师关系中,子类实例能够比父类存在更长的时刻。为了表现一个会聚关系,你画一条从父类到一些类的实线,并在父类的涉及末端画一个未填充棱形。图
12 展现车和轮胎间的汇集关系的例子。

体育365网址 47

图 12: 一个集合关联的例子

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

体育365网址 48

图 13: 一个构成关系的例证

在图 13
中的关系建模中,一个Company类实例至少总有一个Department类实例。因为关乎是组成关系,当Company实例被移除/销毁时,Department实例也将自动地被移除/销毁。组合聚合的另一个最主要效能是有些类只能够与父类的实例相关(举例来说,大家例子中的Company类)。

反射关联 
最近大家早就研究了具有的涉嫌类型。就像你也许注意到的,我们的拥有例子已经显得了多个不一致类之间的关系。不过,类也足以选拔反射关联与它自己相关联。起头,那恐怕没有意义,可是切记,类是虚幻的。图
14 突显一个Employee类怎么样通过manager /
manages角色与它自己有关。当一个类关联到它自身时,那并不意味着类的实例与它本身有关,而是类的一个实例与类的另一个实例相关。

体育365网址 49

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

图 14
描绘的涉及说圣元(Synutra)(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。

体育365网址 50

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


回页首

UML
2 补充

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

实例 
当一个系统结营造模时,展现例子类实例有时候是有效的。为了那种协会建模,UML
2
提供 实例规范 元素,它突显在系统中采纳例子(或具体)实例的值得注意的音讯。

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

Instance Name : Class Name

举例来说:

Donald : Person

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

体育365网址 51

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

唯独,仅仅显示有些实例而从不它们的涉及不太实用;由此,UML 2
也同意在实体层的关系/关联建模。绘制关联与一般的类关系的平整平等,除了在建模关联时有一个外加的必要。附加的限量是,关联关系必须与类图的关联相平等,而且涉嫌的角色名字也非得与类图相平等。它的一个例证展现于图
17 中。在那些事例中,实例是图 6 中类图的例子实例。

体育365网址 52

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

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

角色 
建模类的实例有时比期望的愈来愈详细。有时,你可能仅仅想要在一个较多的一般层次做类关系的模子。在那种处境下,你应有使用 角色 记号。角色记号类似于实例记号。为了建立类的角色模型,你画一个方格,并在其中放置类的角色名及类名,作为实体记号,可是在那景况你无法加下划线。图
18 突显一个由图 14 中图描述的雇员类扮演的角色实例。在图 18
中,大家可以认为,即便雇员类与它自身有关,关系真的是有关雇员之间扮演总裁及团体成员的角色。

体育365网址 53

图 18:一个类图突显图14中扮演不一样角色的类

注意,你不可以在纯粹类图中做类角色的建模,尽管图
18出示你可以这么做。为了利用角色记号,你将会需求采纳上面啄磨的内部结构记号。

中间的社团 
UML 2
结构图的更有效的职能之一是新的内部结构记号。它同意你来得一个类或其它的一个分类器怎样在其间整合。那在
UML 1. x
中是不能的,因为记号限制你不得不展现一个类所负有的集合关系。现在,在 UML
2 中,内部的构造记号让你更明亮地出示类的顺序部分怎么样有限协助关系。

让我们看一个实例。在图 18
中大家有一个类图以彰显一个Plane类怎么着由多少个引擎和多个控制软件对象组成。从那一个图中省略的东西是显得关于飞机部件怎样被装配的一对音信。从图
18
的图,你不能表达,是种种控制软件对象说了算三个引擎,如故一个控制软件对象说了算八个引擎,而另一个操纵一个发动机。

体育365网址 54

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

绘制类的内在结构将会创新那种情景。起头时,你通过用二个区域画一个方格。最顶端的区域包罗类名字,而较低的区域包蕴类的内部结构,显示在它们父类中担当分歧角色的有些类,角色中的每个部分类也关乎到别的类。图
19 浮现了Plane类的内部结构;注意内部结构怎样澄清混乱性。

体育365网址 55

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

在图 20 中Plane有五个ControlSoftware 对象,而且每个控制二个引擎。在图左侧上的
ControlSoftware(control1)控制引擎 1 和 2 。在图左边的
ControlSoftware(control2)控制引擎 3 和 4 。 

接口
在本文的前头,我提议您以类来设想分类器。事实上,分类器是一个进一步相似的概念,它概括数据类型和接口。

继续我们的Flight类的例证,大家得以应用质量类型信息来叙述类的习性,如表 1
所示。

更加多的涉及
在上面,我谈谈了双向关联和单向关系。现在,我将会介绍剩下的三连串型的关系。

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

0..*

至于曾几何时、以及怎么样急忙地在系统结构图中动用数据类型和接口的一体化探究,不在本文的琢磨范围以内。既然那样,我为何要在那边提及数据类型和接口呢?你恐怕想在结构图上模拟这个分类器类型,在那么些时候,使用科学的标志来代表,或者至少知道那些分类器类型是重中之重的。不科学地绘制那么些分类器,很有可能将使您的结构图读者感觉混乱,将来的种类将不可能适应须要。

5到15个

体育365网址 56

体育365网址 57

兴许的多重值描述

体育365网址 58

回页首

1
delayFlight没有再次来到值,因为自己作出了安顿决定,不要重返值。有一些得以争执的是,延迟操作应该回到新的到达时间,而且,要是是那种状态,操作属性将显得为
delayFlight(numberOfMinutes : Minutes) : Date。

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

在工作类图中,属性类型一般与单位符合,那对于图的或许读者是有意义的(例如,分钟,法郎,等等)。但是,用于转移代码的类图,须要类的习性类型必须界定在由程序语言提供的品类之中,或含有于在系统中完结的、模型的类型之中。

关联类
在论及建模中,存在部分情况下,你须求包涵别的类,因为它包括了有关关联的有价值的音讯。对于这种情景,你会动用
关联类
来绑定你的中央关系。关联类和一般类一样表示。分裂的是,主类和关联类之间用一条相交的点线连接。图
11 突显一个航空工业实例的涉及类。

体育365网址 59

0个或多个

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


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

关于“UML 基础”的本序列的背后的构件图。

图 12: 一个汇集关联的例子

结论

一个双向关联用多少个类间的实线表示。在线的任一端,你放置一个角色名和多重值。图
6
突显Flight与一个一定的Plane相关联,而且Flight类知道这一个涉及。因为角色名以Plane类表示,所以Plane承担关联中的“assignedPlane”角色。紧接于Plane类前面的多重值描述0…1意味着,当一个Flight实体存在时,可以有一个或从不Plane与之提到(也就是,Plane可能还向来不被分配)。图
6
也出示Plane知道它与Flight类的涉及。在这些涉及中,Flight承担“assignedFlights”角色;图
6
的图告诉大家,Plane实体可以不与flight关联(例如,它是一架全新的飞行器)或与没有上限的flight(例如,一架已经服役5年的飞行器)关联。

个中的社团
UML 2
结构图的更实用的机能之一是新的内部结构记号。它同意你显得一个类或其它的一个分类器怎么着在其中整合。那在
UML 1. x
中是不容许的,因为记号限制你不得不突显一个类所所有的聚合关系。现在,在 UML
2 中,内部的构造记号让您更清楚地突显类的各种部分怎么着有限支撑关系。

类名

  • 接口

  • 数据类型

  • 组件

4
要明了首要一点,当我说“所有的那些成员”时,我单独表示在近来图中的类将突显出来。展现一个有内容的软件包的图,不必要体现它的兼具情节。它可以遵从一些规则,显示包涵元素的子集,那个规则就是不要所有的软件包分类器都是少不了的。

回页首

回页首

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

含义

举例来说,我们得以想像, 是一个完完全全实体,而 车轮
轮胎是整辆车的一部分。轮胎可以在安顿到车时的前几个礼拜被创设,并放置于仓库中。在那个实例中,Wheel类实例清楚地独自地Car类实例而留存。但是,有些景况下,
部分 类的生命周期并 独立于 整体 类的生命周期 —
那名叫合成聚合。举例来说,考虑公司与机构的关系。 供销社和机构
都建模成类,在公司存在此前,部门不可以存在。那里Department类的实例看重于Company类的实例而存在。

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

如先前所涉嫌的,类图的目标是显得建模系统的连串。在超过半数的 UML
模型中那些系列包含:

关于哪一天、以及怎么样急忙地在系统结构图中利用数据类型和接口的总体钻探,不在本文的钻探范围以内。既然那样,我干什么要在此地提及数据类型和接口呢?你恐怕想在结构图上模拟这一个分类器类型,在这些时候,使用科学的符号来表示,或者至少知道这么些分类器类型是至关首要的。不得法地绘制这么些分类器,很有可能将使你的布局图读者感到混乱,未来的系统将无法适应必要。

图 11:伸张关联类 MileageCredit

实例
当一个系统结构建模时,显示例子类实例有时候是卓有成效的。为了那种协会建模,UML
2 提供 实例规范
元素,它显得在系统中运用例子(或具体)实例的值得注意的消息。

双向(标准)的关联
涉嫌是八个类间的连接。关联总是被假定是双向的;那象征,多少个类相互明白它们间的联络,除非你限定一些其余连串的关联。回想一下Flight
的例证,图 6 突显了在Flight类和Plane类之间的一个标准项目标关联。

0..5

体育365网址 60

继承

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

类操作列表

在图 13
中的关系建模中,一个Company类实例至少总有一个Department类实例。因为涉及是整合关系,当Company实例被移除/销毁时,Department实例也将活动地被移除/销毁。组合聚合的另一个主要意义是有些类只好与父类的实例相关(举例来说,大家例子中的Company类)。

图 5: 一个行使树形记号的后续实例

balance : Dollars = 0

图3浮现,delayFlight 操作有一个Minutes类型的输入参数 —
numberOfMinutes。不过,delayFlight
操作没有重回值。1当一个操作有参数时,参数被放在操作的括号内;每个参数都选取那样的格式:“参数名:参数类型”。

体育365网址 61

关联
当您系统建模时,特定的对象间将会互相关系,而且那些涉及本身须要被清楚地建模。有多样关系。在这一局地中,我将会谈论它们中的两个– 双向的涉及和单向的涉及,而且自己将会在Beyond the
basics
一些研讨剩下的二种关系类型。请留意,关于曾几何时该行使每种类型涉及的详细谈论,不属于本文的界定。相反的,我将会把首要集中在每种关系的用处,并表明怎么着在类图上画出涉嫌。

体育365网址 62

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

*

0..1

实例的标记和类一样,然而代表顶端区域中仅部分类名,它的名字是通过拼接的:

在图 4 中,继承关系由种种超类的独门的线画出,那是在IBM Rational
罗斯和IBM Rational XDE中应用的法子。但是,有一种叫做
树标记的准备格局可以画出继承关系。当存在三个或愈多子类时,如图 4
中所示,除了一连线象树枝一样混在一齐外,你可以拔取树形记号。图 5
是重绘的与图 4 一样的存续,不过这一次运用了树形记号。

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

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

既是咱们早就覆盖了根基和高档主旨,咱们将掩盖一些由UML 1.
x增添的类图的新标志。

体育365网址 63

体育365网址 64

而是,仅仅突显有些实例而从不它们的涉及不太实用;由此,UML 2
也同目的在于实体层的关系/关联建模。绘制关联与一般的类关系的平整平等,除了在建模关联时有一个外加的要求。附加的限量是,关联关系必须与类图的关系相平等,而且涉嫌的角色名字也不可能不与类图相平等。它的一个例证突显于图
17 中。在那些事例中,实例是图 6 中类图的例子实例。

跨越基础

一个单方面的涉嫌,表示为一条带有指向已知类的开放箭头(不倒闭的箭头或三角形,用于标志继承)的实线。似乎标准提到,单向关系包罗一个角色名和一个多重值描述,可是与正统的双向关联分裂的时,单向关系只包涵已知类的角色名和多重值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的角色。但是,和正式提到不一样,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。2

可见性
在面向对象的宏图中,存在属性及操作可知性的记号。UML
识别四体系型的可知性:public,protected,private及package。

体育365网址 65

3
软件包对于社团你的模型类是巨大的,然则切记主要的一点是,你的类图应该是关于建模系统的不难沟通的信息。在您的软件包有众多类的情况下,最好使用五个主题类图,而不是只是爆发一个大的类图。

相关文章