十面向对象软件构造.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文档。上传文档
查看更多
十面向对象软件构造

第十一章  面向对象软件构造 1. 早期:计算机硬件技术不高、成本高、解决问题小、规模小、软件规模也小,软件生产基本是“师傅带徒弟”的手工作坊式。 2. 后期:硬件技术发展迅速,解决问题大且复杂、软件规模大、需要众多工作人员协同完成。 3. 软件危机: 软件研制成本、管理、软件质量均失去了控制 解决办法:软件工程 软件质量:可靠性(Reliability) 、可用性(Usability )、效率(Efficiency) 、可维护性(Maintainability )、可重用性(Reusability) 4. 面向对象程序设计角度特别强调: 程序语法与语义方面的可靠性; 程序结构方面的可扩展性和可重用性。 5. 程序的可靠性分为: 程序的正确性(correctness) 程序的健壮性(robustness) 6. 提高程序可靠性: 强类型语言 类属机制 程序断言机制 异常处理机制 11.2.1 程序断言 程序断言:在程序中描述程序需求说明的表达式(类似离散数学中的谓词) 程序断言的作用: 保证程序的正确性与健壮性 断言可用于形成程序的文档 支持程序的动态调试 构成异常处理的基础 11.2.1 程序断言 求平方根函数sqrt(x,epsilon) 要求:x=0,精度=epsilon 基于合约的设计(programming by contract) // function: 求x的平方根,精度为epsilon double sqrt(double x, double epsilon) { if(x0) { … // 复数的特殊处理 } else if (epsilon 10E-6) { … // 精度太小的处理 } else { … // 求平方根的正常计算程序 } } 11.2.1 程序断言 采用断言机制 // function: 求x的平方根,精度为epsilon double sqrt(double x, double epsilon) require: x=0 epsilon=10E-6 ensure: abs(RESULT*RESULT-x)=2*epsilon*RESULT { … // 求平方根的正常计算程序 } C++仅支持很少的程序断言机制 11.2.2 程序断言的用法 断言主要形式 前置条件  require引入前置断言 后置条件  ensure引入后置断言 类的不变式 invariant引入不变式 循环的不变式 检测语句等 check引入检测语句 以注释的形式写在C++程序中 11.2.2 程序断言的用法 类的不变式  // decription: 描述长城信用卡账户 // invariant: (balance= - max_overdrawn) class CREDIT_CARD_ACCOUNT { public: … protected: static const float max_overdrawn; float balance; … }; const float CREDIT_CARD_ACCOUNT:: max_overdrawn=1000.00 11.2.2 程序断言的用法 循环的不变式 // 初始化 wholes=0; remainder=dividend; // 利用加、减法实现除法 // invariant: dividend==wholes*divisor+remainder // remainder=0 while(remainder=divisor) { remainder=remainder-divisor; wholes=wholes+1; } 11.2.2 程序断言的用法 检测语句 … // check: (head != NULL) head=head.next; … 11.2.3 C++语言中

文档评论(0)

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

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

1亿VIP精品文档

相关文档