葡京在线开户UML–类详解

  • 倘建模者决定于大长方形中显软件包的成员,则怀有的那些成员 4 需要被放置于长方形里面。另外,所有软件包的讳需要放在软件包的较小长方形之内(如图
    8 的展示)。

  • 苟建模者决定于雅之长方形之外显示软件包成员,则有以会见当图上显示的积极分子还亟需给停放长方形之外。为了展示属于软件包的分类器属于,从每个分类器画一修线至个中有加号的圆,这些圆周粘附在软件包之上(图9)。

在线演示本地下载

祈求 8:在软件包的长方形内展示软件包成员的软件包元素例子

报到、注册切换特效

一个双向关联用半独类间的实线表示。在线的任一端,你放一个角色叫以及多重值。图
6
显示Flight与一个一定的Plane相关联,而且Flight类知道这关系。因为角色名以Plane类表示,所以Plane承担关联中之“assignedPlane”角色。紧接于Plane类后面的多重值描述0…1意味,当一个Flight实体存在时时,可以起一个要尚未Plane与的干(也就是是,Plane可能还从来不叫分配)。图
6
也显示Plane知道她同Flight类的干。在这个涉及中,Flight承担“assignedFlights”角色;图
6
的希冀告诉我们,Plane实体可以免与flight关联(例如,它是一样劫持全新的机)或跟从不上限的flight(例如,一劫持已当兵5年之机)关联。

  • 接口

  • 数据类型

  • 组件

只能1个

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

但,超类(父类)不自然要是是抽象类。标准类作为超类是健康的。

打听基础要

name : attribute type
flightNumber : Integer
name : attribute type = default value

比喻来说:

0..5


类似操作列表

0单或多只

balance : Dollars = 0

只能3个

1

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

    name(parameter list) : type of value returned

基础

于图 4 中,继承关系由每个超类的单独的线画有,这是在IBM Rational
Rose和IBM Rational
XDE中使用的法子。然而,有相同种植叫做 树标记的备选方式好画出继承关系。当在个别个或重多子类时,如图
4 中所出示,除了继续线象树枝一样混在一块儿他,你得运用树形记号。图 5
是重绘的同图 4 一样的后续,但是这次用了树形记号。

于面向对象的宏图中一个好关键的定义,继承,指的是一个类(子类)继承除此以外的一个看似(超类)的同样功能,并增她好之初成效(一个非技术性的比喻,想象自己累了自身娘的相似的乐力量,但是以自之内,我是绝无仅有一个玩电吉他的总人口)的能力。为了当一个类图上建模继承,从子类(要累行为之切近)拉发同样长长的闭合的,单键头(或三角形)的实线指向超类。考虑银行账户的类型:图
4 显示 CheckingAccount 和 SavingsAccount 类如何自 BankAccount
类继承而来。

图 11:增加关联类 MileageCredit

关联类 
每当论及建模中,存在部分情形下,你用包括外类,因为它涵盖了有关关联的起价的消息。对于这种情形,你晤面利用 关联类 来绑定你的中坚关系。关联类和一般类一样表示。不同之是,主类和关联类之间为此同长相交的点线连接。图
11 显示一个航空工业实例的关系类。

以祈求中留存个别栽方式表示软件包。并无规则要求采取啊种标志,除了用而个人的判定:哪种更方便阅读你写的类图。两栽方法还是由一个比较小的长方形(用于固定)嵌套在一个要命之长方形中开始之,如图
8 所展示。但是建模者必须控制包的成员争表示,如下:

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

5到15个

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

祈求3显得,delayFlight 操作发生一个Minutes类型的输入参数 —
numberOfMinutes。然而,delayFlight
操作没有回来值。 1 当一个操作发生参数时,参数为放在操作的括号内;每个参数还使这样的格式:“参数名为:参数类型”。

1只或我单

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

一个一方面的涉嫌,表示为平漫长带有指向已经知类的绽开箭头(不关的箭头或三角形,用于标志继承)的实线。如同标准提到,单为关系包括一个角色名以及一个大抵重值描述,但是与正规的双向关联不同的常常,单为关系只包含已知类的角色称与多重值描述。在图
7 中的例证中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的角色。然而,和规范提到不同,BankAccount
类并不知道它和 OverdrawnAccountsReport
相关联。 2

累我们的Flight类的事例,我们好下性能类型信息来叙述类的习性,如表 1
所示。

在图 10
中显得的图中,Professor和Student类都落实了Person的接口,但连无由她延续。我们掌握这或多或少凡出于下两只原因:1)
Person对象作为接口被定义 —
它于目标的讳区域受到来“interface”文本,而且我们见到由Professor和Student对象根据画类对象的平整(在其的讳区域受到并未额外的分类器文本)标示,所以它是 靶。
2) 我们领略继承在此处没有为显示,因为同带箭头的丝是点线而无是实线。如图
10
所著,一长长的带有闭合的仅为箭头的 线意味着实现(或施行);正如我们在图
4 中所见到的,一漫长带有闭合单向箭头的线意味着继续。

聚合 
聚拢是同一种植专门类型的涉嫌,用于描述“总体到有些”的关系。在主导的成团关系遇, 部分类 的生命周期独立于 整体类 的生命周期。

图 1: Flight类的类图

每当事情类图中,属性类型一般与单位符合,这对图的也许读者是发意义之(例如,分钟,美元,等等)。然而,用于转移代码的类图,要求近似的习性类型必须界定以由程序语言提供的型中,或含于在系统受贯彻的、模型的类型中。

祈求 4: 继承通过对超类的同等漫漫闭合的,单箭头的实线表示。

每当类图上显示所有默认值的特定属性,有时是中的(例如,在银行账户应用程序中,一个初的银行账户会因散为初始值)。UML
规范允许在属于性列表节中,通过下如下的标志作为默认值的标识:

每当 UML 2
中,了解类图的功底更为重要。这是盖类图为具有的另外组织图供基本的构建块。如组件或对象图(仅仅是推了几例子)。

恍如操作记录在类图长方形的老三个(最低的)区域中,它吗是不过选取的。和性能一样,类的操作为列表格式显示,每个操作以其和谐线上。操作下下列记号表现:

表示

但为关系 
于一个但为关系中,两独像样是息息相关的,但是只是出一个接近知道这种沟通的有。图 7
显示仅为关系的透支财务报告的一个实例。

至此结束,我早就介绍了类图的功底,但是要继续向生读!在脚的一对受到,我用会见带你到您晤面用的类图的更重要的上面。这些包括UML
2 规范中的接口,其它的老三种涉类型,可见性和其它补偿。

双向(标准)的关联 
涉及是片只类间的通。关联总是吃如是双向的;这表示,两个近乎彼此了解她中间的关系,除非您限定一些其他类型的关联。回顾一下Flight
的事例,图 6 显示了于Flight类和Plane类之间的一个专业项目的涉。

表 3: 多重值和它的表示

贪图 5: 一个下树形记号的存续实例

*

0独或多单

3

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

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

含义

是因为对那些以涉及尾部或出现的多重值描述感到纳闷,下面的表3列有了一些大多重值及她含义的例证。

比喻来说,我们得以想像, 是一个完完全全实体,而 车轮 轮胎是收拾辆车之同片段。轮胎可以安置到车时的眼前几乎独礼拜给打,并放置于仓库被。在此实例中,Wheel类实例清楚地单独地Car类实例而留存。然而,有些情况下, 部分 类的生命周期并  独立于 整体 类的生命周期

随即叫做合成聚合。举例来说,考虑企业暨机构的干。 供销社和机关 都建模成类,在铺在前,部门不能够存在。这里Department类的实例依赖让Company类的实例而有。

被我们还进一步探索基本凑和构成聚合。

主干凑 
发出成团关系的涉及指出,某个类是另外有类的同片。在一个会合关系面临,子类实例可以比较父类存在重复增长之时空。为了呈现一个集关系,你描一长由父类到片近乎的实线,并当父类的关联末端画一个勿填充棱形。图
12 显示车和轮胎里的会师关系的事例。

图 12: 一个聚关联的事例

结聚合 
组合聚合关系是集结关系的别样一样种样式,但是子类实例的生命周期依赖让父类实例的生命周期。在祈求13着,显示了Company类和Department类之间的重组关系,注意组合关系如果聚合关系一致绘制,不过这次菱形是叫填的。

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

于图 13
中的干建模中,一个Company类实例至少总起一个Department类实例。因为涉及是成关系,当Company实例被移除/销毁时,Department实例也将自行地吃移除/销毁。组合聚合的另一个要职能是有些接近只能和父类的实例相关(举例来说,我们例子中之Company类)。

照关联 
现行我们早已讨论了装有的涉嫌类型。就设您或许注意到的,我们的具有例子已经亮了少单非同类中的涉。然而,类为堪行使反射关联和她自身相关联。起先,这或许没有意思,但是切记,类是空虚的。图
14 显示一个Employee类如何通过manager /
manages角色与她本身有关。当一个看似涉到它们本身时,这并无代表类的实例与它自己有关,而是切近的一个实例与类似的另外一个实例相关。

图 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。

图 15:一个 BankAccount 类说明她的性和操作的可见性


回页首

UML
2 补充

既是我们既蒙了基础和高级主题,我们拿蒙有是因为UML 1.
x多的类图的初标志。

实例 
当一个系统结构建模时,显示例子类实例有时候是实惠之。为了这种布局建模,UML
2
供 实例规范 元素,它显示在系统中使用例子(或具体)实例的值得注意的音讯。

实例的标志和类似一样,但是代表顶端区域被单局部类名,它的名是经拼接的:

Instance Name : Class Name

比喻来说:

Donald : Person

盖展示实例的目的是显示值得留意的要有关的音,没必要当您的型中涵盖全体实体性质与操作。相反地,仅仅显示感兴趣之习性和其值是全然适用的。如图16所描述。

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

而是,仅仅呈现有些实例而从未她的涉嫌匪太实用;因此,UML 2
呢同意以实体层的干/关联建模。绘制关联和一般的近乎涉的规则平等,除了在建模关联时有一个叠加的渴求。附加的界定是,关联关系必须与类图的涉嫌相互平等,而且关系的角色名啊务必和类图相平等。它的一个例证显示为图
17 中。在斯事例中,实例是祈求 6 中类图的例子实例。

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

图 17
有Flight类的亚独实例,因为类图指出了于Plane类和Flight类之间的涉是 0或多。因此,我们的例子让闹了一定量只跟NX0337
Plane实例相关的Flight实例。

角色 
兴修模类的实例有时比较期望的更详细。有时,你恐怕单想使当一个于多的形似层次做类关系的型。在这种状态下,你应当以 角色 记号。角色记号类似于实例记号。为了建立类似的角色模型,你画一个方格,并在其间放置类的角色名及类名,作为实体记号,但是在这情形你免可知加下划线。图
18 显示一个出于图 14 中图描述的雇员类扮演的角色实例。在图 18
中,我们好看,即使雇员类及它自己有关,关系着实是有关雇员之间扮演经理与组织成员的角色。

图 18:一个类图显示图14蒙受饰演不同角色的类似

注意,你莫克在纯类图中做类角色的建模,即使图
18显得你可这样做。为了使角色记号,你将会晤要使用下讨论的内部结构记号。

个中的结构 
UML 2
结构图的更实惠之作用有是初的内部结构记号。它同意而来得一个接近还是另外的一个分类器如何当里边做。这当
UML 1. x
中是免可能的,因为记号限制而不得不显示一个好像所具备的会师关系。现在,在 UML
2 中,内部的组织记号让您再度懂得地展示类的逐条组成部分如何保持关系。

为咱看一个实例。在图 18
中我们来一个类图以表现一个Plane类如何由四个引擎和有限只控制软件对象成。从这个图中省略的物是显得关于飞机部件如何给配的部分音讯。从图
18
的觊觎,你无法说明,是每个控制软件对象说了算两独引擎,还是一个控制软件对象说了算三只引擎,而其他一个控制一个发动机。

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

绘画制类的内在结构以见面改进这种状态。开始经常,你通过用二单区域画一个方格。最上面的区域包含类名字,而于逊色之区域包含类的内部结构,显示在其父类中负不同角色的一对类,角色中之每个片类为干及其他类。图
19 来得了Plane类的内部结构;注意内部结构如何澄清混乱性。

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

以图 20 中Plane有有限单
ControlSoftware 对象,而且每个控制次独勾擎。在祈求左上之
ControlSoftware(control1)控制引擎 1 和 2 。在祈求右边的
ControlSoftware(control2)控制引擎 3 和 4 。 

空泛类和操作 
周密之读者见面专注到,在图 4 和 图5
中之图中,类名BankAccount和withdrawal操作以斜体。这意味,BankAccount
类是一个抽象类,而withdrawal方法是空泛的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount
两独子类都各自地实施其分别版本的操作。

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

软件包 
不可避免,如果您正为一个那个之网或者很的作业领域建模,在公的型中将会见发不少不等之分类器。管理有的类将是均等宗使得人生畏的天职;所以,UML
提供一个名 软件包的集体元素。软件包要建模者能够组织模型分类器到名字空间中,这出些象文件系统中的文本夹。把一个网分为多单软件包要系统成为容易懂,尤其是当每个软件包都表现网的一个特定部分经常。 3

接口 
当本文的前头,我提议你坐看似来设想分类器。事实上,分类器是一个尤其相似的定义,它概括数据类型和接口。

0..1

回页首

关联 
当您系统建模时,特定的对象中用会见相互关系,而且这些关乎本身要让清楚地建模。有五种关系。在及时无异于有些受,我拿会讨论其中之蝇头单
— 双向的关系和单的涉,而且我拿会以Beyond the
basics
有些讨论剩下的老三种植涉类型。请留意,关于何时该应用每种型涉及的详实讨论,不属本文的范围。相反的,我以见面将主要集中在各国种关系的用,并说明如何在类图上画有涉嫌。

UML
为这些项目从了一个特别之讳:“分类器”。通常地,你得拿分类器当做类,但在技术上,分类器是越宽广的术语,它要引用上面的其余三栽档次也好。

0到5个

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

申 2:从图 2 投的Flight类的操作

5..15

继承

0个或1个

类属性列表

再度多之关联 
当方,我谈谈了双向关联和单纯为关系。现在,我以见面介绍剩下的老三种档次的关系。

恍如的 UML 表示是一个加上方形,垂直地分成三独区,如图 1
所示。顶部区域显示类的名。中间的区域列出类的特性。底部的区域列出类的操作。当在一个类图上描绘一个类元素时,你不能不要发生上的区域,下面的第二单区域是只是选的(当图描述仅仅用于展示分类器间事关之高层细节时,下面的蝇头单区域是匪必要的)。图
1 来得一个航程班机如何当 UML
类建模。正而我们所能望的,名字是 Flight,我们好在当中区域看Flight类的3独特性:flightNumber,departureTime

flightDuration。在底层区域中我们得望Flight类有个别只操作:delayFlight
和 getArrivalTime。

于图 11 中展示的类图中,在Flight类和 FrequentFlyer
类之间的关联,产生了名为
MileageCredit的关系类。这表示当Flight类的一个实例关联到 FrequentFlyer
类的一个实例时,将会晤产生 MileageCredit 类的一个实例。

看似的属性节(中部区域)在分隔线上排列有每一个近乎的性质。属性节是不过选取的,要是一样于是它,就含有类的列表显示的每个属性。该线用而下格式:

来得属性默认值是不过摘的;图 2
显示一个银行账户类具有一个誉为吧 balance的档次,它的默认值为0。

0..*

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

兴许的多重值描述

要先所涉嫌的,类图的目的是显得建模系统的花色。在大多数底 UML
模型中这些类别包括:

类名

当文档化操作参数时,你恐怕利用一个但卜的指示器,以显示参数到操作的输入参数、或输出参数。这个只是摘的指示器以“in”或“out”出现,如图3吃的操作区域所示。一般的话,除非将采取同一栽早期的主次编程语言,如Fortran
,这些指示器可能会见持有助,否则它们是无必要的。然而,在
C++和Java中,所有的参数是“in”参数,而且以UML规范,既然“in”是参数的默认类型,大多数人数拿会留漏输入/输出指示器。

超基础

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

1..*

希冀 2:显示默认为0美元之balance属性值的银行账户类图。

至于何时、以及如何快速地于系统结构图中运用数据类型和接口的完好讨论,不在本文的讨论范围里边。既然这样,我何以而在此处提及数据类型和接口也?你可能想以结构图上模仿这些分类器类型,在这上,使用是的号来代表,或者至少知道这些分类器类型是要之。不科学地绘制这些分类器,很有或以设你的构造图读者觉得混乱,以后的体系以未克适应需求。