面向对象实现及测试第九章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象实现及测试第九章

组装(Composition) 组装关系是一个实现级关系,它对应于应用级的聚合关系。 它也叫做component(部件)或叫做 is part of(是…的一部分)。 组装与消息两者都是类间的关系,在这种关系中,一个类的实例将是另一个类的实现的一部分。 考虑Dictionary类的实现。 在Dictionary中存储item的一种数据表示是使用散列表(HashTable)。 进行Dictionary类的低层设计时,要指明在Dictionary类和HashTable类之间的一个 is part of 关系。 在实现时,应当在Dictionary类的定义中声明这个Hash Table的实例。 继承(Inheritance) 继承允许在既存类的基础上定义新的类。 一个新类B继承了既存类A,则B包括了A定义的某些行为,以及它自定义的某些附加行为。 有多少种面向对象程序设计语言,就有多少种不同的继承实现方式。 继承图 ① 针对实现的继承 两个类之间“针对实现”的继承关系的建立指的是使用既存类的内部表示来做为新类的内部表示的一部分。我们不推荐这种继承方式。 考虑使用继承来实现一个Circle类,为了定义一个圆,需要定义一个点和一个值,做为圆的圆心和半径。因此,Point类可支持Circle类的一部分实现。把Point当做派生类。 如果Circle类直接使用Point的数据成员x和y,将失去抽象。而且失去做为一个点的圆心的标识。 针对实现的继承一般在原型开发中使用。 ② 针对特殊化的继承 这种继承的使用适合于大多数面向对象程序设计语言所提供的关系,是针对一般化-特殊化关系的。 这种继承使用is a关系。类B的一个实例是(is a)类A的一个实例。 在使用中,继承将使得既存类的界面成为新类的界面。这表明新类具有它的基类的所有行为。 为了定义Dictionary类,应当首先查找既存的抽象,看Dictionary类会是哪个既存抽象的特殊情况。 Dictionary应是一个有序表,但具有它自己特有的操作,如使用关键码进行搜索等。既存的Ordered List类可以提供Dictionary类的某些行为,但不是全部。还要确认,在Ordered List中是否有的行为在Dictionary中是不需要的。如果有,可能需要重新组织层次或者开发某些附加的抽象。 is kind of (是一种…)继承 这种继承允许有选择地包含既存类的属性,从而建立新的定义。 一个鸟类可能有一个关于飞行的属性。一个鸵鸟派生类在模型化时可能就不选择这个属性,因为鸵鸟不会飞。鸵鸟是一种( is kind of )鸟,但具有的属性与鸟不完全相同。 is kind of 继承是不严格继承。 类的实现 一种方案是先开发一个比较小的比较简单的类,做为开发比较大的比较复杂的类的基础。即从简单到复杂的开发方案。 在这种方案中,类的开发是分层的。一个类建立在一些既存的类的基础上,而这些既存的类又是建立在其它既存的类的基础上。通过诸如“is a”或“is part of”之类的关系,利用既存代码就能着手建立新的类。 考虑一个类的层次。在基类中我们定义了一个操作X。 每一个派生类都使用操作X,它是在各个类所定义的私有属性和操作的环境中使用的。因使用操作X的环境变化太大,所以必须在每一个派生类的环境下都测试操作X。 在面向对象开发环境下,把操作完全孤立起来进行测试,其收效是很小的。 集成测试 因为面向对象软件没有一个层次的控制结构,所以传统的自顶向下和自底向上的组装策略意义不大。 每次将一个操作组装到类中(像传统的增殖式组装那样)常常行不通,因为在构成类的各个部件之间存在各种直接的和非直接的交互。 对于面向对象系统的集成测试,存在两种不同的测试策略。 基于线程测试 (Thread-based Test) 它把为响应某一系统输入或事件所需的一组类组装在一起。每一条线索将分别测试和组装。 基于使用的测试 (Use-based Test) 它着眼于系统结构,首先测试独立类,这些类只使用很少的服务器类。再测试那些使用了独立类的相关类。一系列测试各层相关类的活动继续下去,直到整个系统构造完成。 确认测试 在进行确认测试和系统测试时,不关心类之间连接的细节。着眼于用户的要求和用户能够认可的系统输出。 为了帮助确认测试的执行,测试者需要回到分析模型,根据那里提供的事件序列(脚本)进行测试。 可以利用黑盒测试的方法来驱动确认测试。 测试方法学检测软件中的故障并确定软件是否执行了预定要开发的功能。 测试过程包括了一组测试用例的开发,每一个测试用例要求能检验应用的一个特定的元素。还需要分析用各个测试用例执行测试的结果来收集有关软件的信息。 按不同层次进行测试 测试类中各个操作,主要测试类,这种测试是某

文档评论(0)

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

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

1亿VIP精品文档

相关文档