体系结构第2章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章类图在本章中,将学习下列内容:●类的可视化表示。●属性。●操作。●职责和约束。●类的发现。2.1类的可视化表示正如前一章中所指出的,在UML中一个放形表示一个类的图标。按照UML的约定,类名的首字母大写,放在矩形的偏上部。如果类名是由两个单词组成,那么将这两个单词合并,第一个单词首字母大写。如果WashingMachine(洗衣机)类是HousehouldAppliances(家用电器)包的—部分,那么这个类的名字为:HouseholdAppliances::WashingMachine。包名在左,类名在右,中间用双冒号隔开。这种类型的类名叫路径名(pathname)。如下图所示。2.2属性属性是类的一个特性。它描述了类的对象(也就是类的实例)所具有的一系列特性值。一个类可以具有零个到多个属性。按照UML的约定,单字属性名小写。如果属性名包含了多个字,这些字要合并,并且除了第一个字外其余字首字母要大写。属性名列表放在类名之下,并且和类名之间用分隔线隔开,如下图所示。类的属性在该类的每个对象中都有具体值。下图是一个例子。注意,对象名首字母小写,后面跟一个冒号,冒号后面是该对象所属的类名,并且整个名字要带下划线。名字myWasher:WashingMachine是一个命名实例。也可以有诸如:WashingMachine这样的匿名实例。UML还允许指明属性的附加信息。在类的图标里,你可以指定每个属性值的类型。可能的类型包括字符串(string)、浮点数(floating-point)、整数(integer)和布尔(bool)型(以及其他的枚举类型)。要指明类型,则在属性值后面加上类型名,中间用冒号隔开。还可以为属性指定一个缺省值。下图说明了属性的各种表示方式。枚举类型(enumeratedtype)是由一系列被命名的值所定义的一种数据类型。例如Boolean类型就是个枚举类型,因为它只有两种可能的值“true”和“faIse”。可以自己定义所需使用的枚举类型,例如状态类型,它由“固体”、“液体”和“气体“状态值组成。2.3操作操作(operatin)是类能够做的事情,或者别的类能对这个类做的事情。和属性名的表示类似,单字操作名小写。如果操作名包含了多个字,这些字要合并,并且除了第一个字外其余字首字母要大写。操作名列表放在属性名列表之下,两者之间用分隔线隔开,如下图所示。就像给属性指定附加信息一样,你也可以为操作指定附加信息。在操作名后面的括号中可以说明操作所需要的参数和参数的类型。有一种操作叫函数(function),它在完成操作后要返回一个返回值。可以指明函数的返回值及返回值的类型。上述全部的操作信息被称为操作的型构(signature)。下图说明了如何表达型构。2.4属性、操作和可视化表达当同时表示多个类的时候,通常没必要总是显示这些类的所有属性和操作,这样做会使图形表示比较混乱。相反,可以只给出类名,而将属性或者操作区(或者两者全部)空着。有时,只显示类的一部分属性和操作很有用。为了说明你只表示出部分操作和属性,可以在列表的后面加上3个小点“…”。这个符号叫省略符(ellipsis),这种省略了一个或多个属性或者操作的表示法叫做类的省略表示法。下图说明了类的省略表示法。如果属性或名操作列表太长,可以用构造型来组织属性或操作列表,以方便理解。构造型是UML提供的扩展机制,它允许你创建新的模型元素以解决具体问题。第1章中已经提到过,构造型用双尖角括号括住的名字来表示。对属性列表,可以使用一个构造型作为部分属性的标题,如下图所示。2.5职责和约束类图标中还可以指明另—种类的信息。在操作列表框下面的区域,你可以用来说明类的职责。职责(responsibility)描述了类做什么——也就是类的属性和操作能完成什么任务。例如,一台洗衣机的职责是将脏衣服作为输入,输出洗干净的衣服。在图标中,职责在操作区域下面的区域中说明。更形式化的方式是使用约束(constraint),它是一个用花括号括起来的自由格式的文本。括号中的文本指定了该类所要满足的一个或者多个规则。例如,假设你想指定WashingMachine类的洗衣机容量只能是16、18或者20磅(也就是说对WashingMachine类的capacity属性施加约束),你可以在WashingMachine类图标的旁边写个约束,如下图所示。UML提供了另一种方式(也是非常形式化的一种表达方式)表示施加约束,以便模型元素的语义定义更加明确。它实际上是也一个完整的语言,被称为对象约束语言(ObjectConstraintLanguage,0CL)。0CL是UML的一个高级的但是很有用的工具,有自己的规则、术语和操作符。2.6附加注释除了上面介绍过的属性、操作、职责和约束之外,还可以以对类附加注释的形式给类添加更多的信息。下图中的注释说明了serialNumber(序列号)属性引用了政府标准,根据这个注释就可以参考相关标准以查阅如何生成WashingMachng类对象的serialNumber属性值。2.7类应该做什么和如何识别它们类代表的是领域知识中的词汇和术语。同客户交谈,分析他们的领域知识,设计用来解决领域中的问题的计算机系统,同时也就是在学习这些领域词汇,并用UML中的类建立这些领域词汇的类模型。在与客户的交谈中,要注意客户用来描述业务实体的名词术语。这些名词可作为领域模型中的类。还要注意你听到的动词,因为这些动词可能会构成这些类中的操作。当得到一组类的核心列表后,应当向客户询问在业务过程中每个类的作用。他们的回答将告诉你这些类的职责。假设你是一个系统分析员,要建立篮球比赛模型,现在你正在会见一名教练员来了解比赛规则情况。谈话的过程可能如下:分析员:“教练,请大致介绍一下篮球比赛。”教练员:“比赛的目标是要把篮球投入蓝框并且要尽量比对手得更多的分。每个篮球队由5名队员组成:两名后卫、两名前锋和一名中锋。每个队要将球推进到篮框附近,目的是将篮球投中篮框。”分析员:“如何将球推进?”教练员:“通过运球和传球。但是某一方篮球队必须在规定的进攻时间内投篮。”分析员:“规定的进攻时间?”教练员:“是的,在某一方获得控球权后,必须在规定的进攻时间内投篮。美国职业篮球比赛是24秒,国际篮球比赛是30秒,美国大学篮球比赛是35秒。”分析员:“如何计算篮球比赛得分?”教练员:“三分线之内每投中一坎篮柜得两分,三分线之外投中一次得三分。一次罚球得—分。顺便说一下,罚球是对方犯规后判罚的投球。如果某一个队员犯规,则比赛暂停,由被侵犯的队员在罚球线处罚球。”分析员:“再详细说明一下每个篮球队员在比赛中的情况好吗?”教练员:“后卫队员通常主要是运球和传球。他们—般都比前锋队员矮,前锋队员通常又比中锋矮。所有的队员必须都要能运球、传球、投球、抢篮板球,大部分抢篮板球和中距离投篮都由前锋队员完成,而中锋通常离篮框最近,一般出他来篮下进攻。”分析员:“场地大小如何?另外,每场比赛时间是多少?”教练员:“国际比赛场地为28米长、15米宽。蓝框离地面3.05米高。在美国职业篮球比赛中,一场比赛为48分钟,分为4节,每节12分钟。在美国大学和国际比赛中,一场比赛40分钟,分为上下两个20分钟的半场。有专门的比赛时钟记录比赛还剩下多少时间。我们现在停止说明这些对话,来看看谈话的内容。下面是你在对话中发现的名词:篮球(Ball)、篮框(Basket)、篮球队(Team)、队员(Player)、后卫队员(Guard)、前锋队员(Forward)、中锋(Center)、投球(Shot)、进攻时间时钟(ShotClock)、三分线(three—pointline)、罚球(freethrow)、犯规(Foul)、罚球线(free-throwline)、球场(Court)、比赛时钟(GameClock)。还有—些动词:投篮(shoot)、推进(advance)、运球(dribble)、传球(Pass)、犯规(Foul)、抢篮板球(rebound)。你还可得到上述名词的一些附加信息——例如每个位置的队员的相对高度、篮球场大小、进攻时间以及比赛时间。最后,根据常识可以为这些类建立一些属性和操作。例如,通常球类都有体积(vo1ume)和直径(diameter)等属性。使用这些信息,你可以建立一个如下图所示的图。它说明了领域中的类,并提供了—些属性、操作和约束。这个图也可以表示职责。2.8小结UML的类图标是由一个矩形表示的。类名字、属性、操作和职责都在区域中有各自的方框。可以使用构造型来组织属性和操作名列表。可以使用类的省略表示法,只表示出类的一部分属性和操作。这样可以使类图比较清晰。可以在类图标中指定属性的类型和初始值,还可以指明操作执行时所需要的参数和参数的类型。对一个操作来讲,这些附加信息被称作型构。为了减少描述类时的二义性,可以对类施加约束。UML还允许对模型元素附加注释来说明有关模型元素更多的附加信息。类表达的是领域知识中的词汇。与客户或者领域中的专家交谈可以发现—些类模型中的名词和可能成为操作的动词。你可以使用一个类图来促进和客户的进—步交流,以揭示出更多的领域知识。

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功