毕业设计(论文)外文资料翻译(学生用)计算机1.doc_第1页
毕业设计(论文)外文资料翻译(学生用)计算机1.doc_第2页
毕业设计(论文)外文资料翻译(学生用)计算机1.doc_第3页
毕业设计(论文)外文资料翻译(学生用)计算机1.doc_第4页
毕业设计(论文)外文资料翻译(学生用)计算机1.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Jim Arlow,IIa NeustadtUML 2 and the Unified Process: (用外文写)PracticalObject-Oriented Analysis and Design,Second Edition北京:人民邮电出版社2006 附件1:外文资料翻译译文第七章 对象和类7.2什么是对象UML参考手册Rumbaugh 1中把对象给定义为“带有良好定义的边界、封装了状态和行为的具体实体,类的实例”。我们可以想象把对象看作数据和函数的内聚包。一般而言,要获得对象的数据部分的唯一方法就是通过调用那些可用的对象函数。我们把这些函数称之为方法。我们所知道的隐藏对象的数据部分在函数这层之下,就是封装或数据隐藏。UML同一些OO语言一样并没有强制封装,因为一些OO语言不要求封装。然而,用来隐藏对象的数据部分在操作或方法的背后归结到底是良好的OO风格。每一个对象它自己就是某个类的实例,并且这个类中定义了类的公共特征的(属性和方法)集被所有实例所共享。实际上类和类元的思想是非常简单的。考虑一下打印机的类型为“Epson Photo 1200”。其中描述了这个类所有特定实例的特性,例如一个放在我们桌面上的特定的打印机“Epson Photo 1200 S/N 43120098”。类的特定实例被称为对象。我们再多想一点以下Epson打印机对象的示例,我们将会看到它包含有特定的特性,这些特性是所有对象的公共特征。标识这是在时间和空间上对象的唯一存在。它把该对象同所有其他对象区分开,在我们的示例中,这打印机的序列号能够被用做打印机的标识,标识指向我们桌面上的特定打印机的标识符,并且是代表那个对象的唯一标识。序列号是一种好的方法来说明物理对象标识,并且我们使用这个相似的原则,对象引用的思想,来说明用于OO分析和设计中的每一个软件对象的标识。当然,在真实的世界中,并不是所有的对象都具有序列号,但是他们仍然可以具有唯一标识。因为它们具有特定的时间坐标和空间坐标。与此相似,在OO软件系统中,每一个对象都具有一些类型的对象引用。状态这由对象在特定时刻的属性值以及由该对象到其他对象的关系所确定。表7-1给出了一个不完整列表,该打印机所经历的状态。你能够看出,从这些对象状态是如何依赖于它的属性值的以及与它与其他对象的联系的。行为打印机能够为我们做的特定的事情:switchOn()switchOff()printDocument()pageFeed()clearInkJetNozzles()changeInkCartridge()表7-1对象状态类属性对象的属性值关系OnPowerOnN/AOffPowerOffN/AOutOfBlackInkblackInkCartridgeEmptyN/AOutOfColourInkcolorInkCartridgeEmptyN/AConnectedN/AN/A连接到计算机的对象NotConnectedN/AN/A没有连接到计算机的对象从对象中调用的方法将引起一个在一个或多个属性值的改变或者其引起到其他对象的关系发生变化,这组成了状态迁移。这是对象从一个状态到另一个状态有意义的变化。再次考虑表7-1,显然,对象状态也能够影响它的行为。例如,如果打印机中没有墨水了(对象状态=OutOfBlackInk),那么当对象调用方法printDocument()将引发一个出错信号,因此,printDocument()的实际行为是有状态依赖的。一个操作是某个行为的规格说明。一个行为的实现被称为方法。7.2.1封装正如我们在前面已经提到的,对象的标识是某一种唯一的句柄,通常一个内存地址,由实现它的语言提供。从现在开始,我们将把这些句柄作为对象引用。你不需要担心在OO分析中这些如何实现你可以简单地假设,每一个对象都是具有唯一的标识符,并且它被实现技术所管理。在设计中,你可能需要考虑对象引用的实现,如果你的目标语言是OO语言,例如C+,它允许你直接地操纵被称为指针的特定类型的对象引用。在图7-2中,我们表示了强调封装的对象概念图。注意:图7-2并不是UML图。你在后面将看到针对对象的UML语法。对象的状态是该对象在任何特定时刻的一组属性值(当前是1234567801,“Jim Arlow”,300.00)。一般地说,一些属性值始终保持固定不变,而另一些将随时间的改变而改变。例如,账户号码和名称极不可能发生改变,但我们希望的是余额能够稳步上涨!deposit()withdraw()getOwner()setOwner()1234567801“Jim Arlow”300.00图 7-2属性值操作由于余额是随着时间推移而改变,同时我们又看到该对象的状态是因时而变。例如,如果余额是负数,那么我们可以说该对象处于状态Overdrawn。随着余额从负数到零的改变,对象本身自然地发生了显著的变化它使得状态从Overdrawn迁移到状态Empty。而且随着Account的对象余额从零到正数的改变,它使得对象从状态Empty迁移到状态InCredit。那里可能比这存在着更多的状态迁移。实际上,任何方法调用都会导致对象本性实质性改变,从而产生状态迁移。UML为我们提供了一个强大的建模技术集,它被称为状态图,用于建模状态变化我们将会在第21章学习它们。任何对象的行为基本上是“它能为我们作什么”,你将能够看到图7-2中的对象提供的操作,它们列在表7-2中。这个操作集说明了该对象的行为。注意,在调用某些操作(deposit()、withdraw()、setOwner())时,将改变属性值并且可能引发状态迁移。其他操作(getOwner())并没有改变对象的任何属性值,因此这些将不会引发状态迁移。封装或数据隐藏是OO编程的主要优点之一,它能够导致更加健壮和可扩展的软件。在这个简单Account示例中,一个该对象的用户不需要关注隐藏在该对象中的数据结构,仅仅需要关心这些对象能够作什么换句话说,只需要关心它为其他的对象提供了哪些相应的服务。表 7-2操作语义deposit()在Account对象中存款增加balance属性值withdraw()在Account对象中提款减少balance属性值getOwner()返回Account对象所有者查询操作setOwner()改变Account对象所有者7.2.2 消息机制对象是具有属性值和行为的,但你如何把这些对象放在一起创建软件系统呢?对象协作来执行系统的功能。这意味着,对象形成链接到其他的对象并且通过这些链接来回发送消息。当一个对象接收到消息时,看起来向它查看它的操作集以了解是否存在一个这样的操作,它的签名匹配该消息的签名。如果它存在,那么它调用这个操作(参见图7-3)。这些签名包括消息(或者操作)名称、参数类型和返回值。withdraw(150.00)消息Bank 对象发送信息”withdraw 150.00” 给Account对象Account对象响应,调用它的取款操作。该操作减少账户余额150.00图 7-3Bank对象Account对象OO系统的运行期结构由很多对象组成,它们被创建,持续一段时间,然后可能被销毁。这些对象通过相互传递消息来调用另一个对象的服务。这是根本不同的结构与过程软件系统相比,过程软件系统是随着时间的推移,通过功能的顺序应用来处理数据的。7.3 UML对象符号UML对象图标是一个带有两个分栏的方框图7-4是个已给示例。这个顶部分栏包含对象标识符,总是带有下划线。这非常重要,因为类的UML符号与对象的符号非常相似。正确慎重地使用下划线来消除任何混淆建模元素无论是类还是对象的情况。UML是非常灵活的,关于如何在对象图上展示对象。对象标识符能够区分是以下任何一种情况。单独的类名称例如,:Account。这表明你具有一个匿名对象或者那个类的实例(也即,你正在观察Account的一个实例,但你没有标识或者不关心它是哪一个特定的实例)。只存在特定的一个对象时,当在给定图的时候,常常使用匿名对象。如果你需要显示一个相同类的两个对象,那么你应该给每一个对象赋予名称用来区别它们。单独的对象名称例如,jimsAccount。这标识一个特定对象,但是没有标识它到底是属于哪个类的。你还没有发现所有的类时候,这个符号是有用的,在早期的分析时期。对象名称后接类名称,彼此之间用冒号来分割。你可以把冒号读作:“是类的实例”。因此,在图7-4中,你能够这样读图对象jimsAccount是类Account的一个实例。jimsAccount:AccountaccountNumber:String=”1234567”owner:String=”Jim Arlow”balance:double=300.00对象名称类名称名称分栏属性分栏图 7-4属性名称属性类型属性值对象通常以混合大小写来命名,以小写字母开头,特殊字符诸如空格和下划线是要避免使用的。这就是我们所知的lowerCamelCase格式,原因是结果单词以小写字母开始,并且具有驼峰。从7.2节中,你知道一个类定义了一组对象的属性和操作。因为相同类的所有对象都具有相同的操作集合,操作举例在类图表中,而不是对象图表中。属性可以选择性地显示在对象图标的下面分栏中。你选择的属性要显示出来必须已被命名并且可以具有可选的类型和值。属性的命

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论