第8章类图和对象图.docVIP

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 类图和对象图 系统的静态模型描述的是系统所操纵的数据块之间持有的结构上的关系。它们描述数据如何分配到对象之中,这些对象如何分类,以及它们之间可以具有什么关系。静态模型并不描述系统的行为,也不描述系统中的数据如何随着时间而演进,这些方面由各种动态模型描述。 对象图和类图是两种最重要的静态模型。对象图提供了系统的一个“快照”,显示在给定时间实际存在的对象以及它们之间的链接。可以为一个系统绘制多个不同的对象图,每个都代表系统在一个给定时刻的状态。对象图展示系统在给定时间持有的数据,这些数据可以表示为各个对象、在这些对象中存储的属性值或者这些对象之间的链接。 理解系统的一个方面是了解哪些对象图表示了系统可能的有效状态,哪些对象图表示的是无效状态。例如,考虑图8.1所示的两个对象图,它们描述一个假想的大学档案系统中的学生和课程对象。 图 8.1 有效对象图(a)和无效对象图(b) 图8.1(a) 显示的是一特定学生选修一门课程的情形。假设系统的责任之一是记录哪些学生选修哪些课程,那么这个对象图就表示了系统的一种合法状态。图8.1(a)所示的特定链接必定会有不存在的时候,甚至在系统运行的整个时间,都根本不会出现这个特殊的对象结构,但是,它的确表示了可能出现的情形,如果现实世界的实际情况需要这种情形。 图8.1(b)的情况则不同。一门课程选修另一门课程是没有意义的,因此在大学档案系统的例子中这个图是完全没有意义的。我们不能问它描述的情形是真或是假,因为它根本不能描述一种有意义的情景。 然而,不可能通过明确地考虑所有可能的对象图,并将它们分为合法或不合法来详细说明系统,因为的确存在着太多的对象图。为了说明任何表示了系统合法状态的对象图都必须具有的性质,需要一种更一般的方法。为此目的,UML使用类图。 类图作为一种系统说明书, 除了别的方面以外,它规定可以存在什么类型的对象,这些对象封装什么数据,以及系统中的对象如何彼此关联在一起。例如,学生档案系统的一个适当的类图可以清楚地表明,图8.1(a)表示了系统的一种可能状态,而8.1(b)是不可能的。 本章描述UML类图的特征,并说明如何用类图指定软件系统某些结构上的特性。本章使用的例子是假想的,只是为了讨论系统的静态结构,而丝毫不涉及该结构应该支持的处理。这种简化在介绍表示法的细节时有好处,但是不能作为如何使用和开发类图的实际可行的说明。如第5章的例子所指出的,类图的开发通常与交互图密切相关,交互图有助于标识系统中所需要的类。 8.1 数据类型 和众多程序设计语言一样,UML也定义了许多基本数据类型,而且也提供了用以定义新类型的机制。数据类型代表简单的、无结构的数据种类,例如数值、字符和布尔值。数据类型一般用于指定类中的属性的类型和操作参数的类型。 数据类型的实例称为数据值。数据值不同于对象,数据值没有本体的概念。例如,整数2的两个不同当前值,存储在不同的位置,会认为是相同的数据值,并且在检测是否相等时会返回“true”。但是,两个对象总认为是不同的,即使它们的状态相同。 UML中可以使用的数据类型分为三类。首先,有许多预定义类型,主要有整数、字符串和布尔值。UML定义这些类型的表示法如图8.2所示,尽管实际上只是在类型表达式中使用其名字。UML中没有定义这些类型的值,但假定是不言自明的。 图 8.2 UML中的预定义数据类型 数据值是没有结构的,所以数据类型不定义属性或操作。然而,可以为数据类型定义纯函数:它们返回数据值,但是不能修改它们的参数。 数据类型还可以定义为枚举,实质上和许多编程语言提供的枚举类型相同。枚举的值是一组命名的枚举字面值。布尔值用一个预定义的枚举表示,如图8.2所示。该类型的字面值是true和false两个值。用户定义的枚举可以通过将枚举字面值列举在图标下部的栏中定义,如图8.3所示。 图 8.3 用户定义的枚举 最后,模型可以使用编程语言数据类型。这就允许特定编程语言的类型可以在UML中使用。这在从代码逆向构造一个类的时侯,或者在实现一个设计时,例如可能必须指定使用指针或数组类型,就很有用。 重数 在UML中,有许多地方必须声明给定实体在某些情况下可以出现多少次。这用重数表示。重数是一个整数集合,该集合的每个成员代表指定实体可能出现的数量。 在UML中重数作为数据类型来定义,用重数范围表示。范围由用圆点隔开的一对整数表示,例如0..9。特殊符号*的意思是“无限制的”,可以用于表示没有上界的范围。 因此,0..100表示从0到100的所有整数,包括0和100,而0..*表示所有的非负整数。两端数字相同的重数范围,如1..1,用单个的数字1表示。 通常,重数由包含数字范围和单独数字的列表给定,最好以升序排列。例如,假定一

文档评论(0)

KWZoJLfpjN + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档