第7章面向对象的程序设计概要.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文档。上传文档
查看更多
软件工程 Software Engineering 武汉大学 计算机学院 第7章 面向对象程序设计语言 程序设计语与软件设计方法 几种典型面向对象程序设计语言 面向对象程序设计语言的选择 面向对象程序设计风格 一、程序设计语与软件设计方法 语言研究先于方法研究 过程性语言与结构化程序设计方法 过程性语言:50—60年代末,FORTRAN、ALGOL、COBOL、APL/I等 写程序方便、程序规模越来越大,正确性与可靠性成为主要矛盾 结构化程序设计方法,并发展为SA/SD的软件开发方法,方法又促进结构化程序设计语言的发展,如Pascal、Ada等 一、程序设计语与软件设计方法 面向对象语言与面向对象方法 60年代末:Simula(67)、Smalltalk、Eiffel等 80年代初:抽象数据类型ADT(Abstract Data Type)+OOPL导制OOM方法的研究 OOM又促进传统语言向面对象语言发展 如object-C、C++、Java OOD的结果可以用OOPL/非OOPL实现 OOPL是一种程序设计风格,而不是一种具有构造继承性、封装性和多态的程序设计语言族的命名 OOPL功能强于非OOPL? 任何通用语言都可实现OO概念 OOPL实现OO概念远比非OOPL方便! 选择编程语言的关键 一致的表达能力 可重用性 可维护性 1. OOPL的优点 一致的表达方式 OOA→OOD→OOP使用统一的概念 可重用性好 可重用OOA、OOD、OOP的结果 可维护性好 程序显式陈述问题域语义 几种典型OOPL Simula语言 67年 Simula的基础是ALGOL60,它沿用了ALGOL60的数据结构和控制结构,其主要特点: 具有主程序概念、具有分程概念、引用了 虚拟子程序概念与协同子程序概念。 几种典型OOPL Smalltalk语言 70年代初 Smalltalk不是一种单纯的程序设计语言 ,而是反映面向对象程序设计思想的程序设计环境。其主要特点:无主程序概念 ,类是唯一构造程序的最小单位、每个对象都是某个类的实例、对象间通过消息通信、支持单继承。 Eiffel语言 主要特点:类是唯一程序构造单元、静态类与动态对象概念、支持多继承、提供有断言机制、延迟类。 几种典型OOPL C++是目前使用最广泛的OOPL之一,其主要原因是它完全保留了传统优秀语言C的优 点,并与C完全兼容。 C++是C超集,增加了数据抽象、继承性机制、虚拟函数以及其他 改善C语言结构的成分,使之成为一个灵活、高效和易移植的OOPL。 总结: 2. OOPL的技术特点 60年代 SIMULA,类,继承 70年代末,Modula_2,Ada,数据抽象机制 80年代,OOPL 纯OOPL(Smalltalk, Eiffel) 混合型OOPL(C++) 支持OO概念 支持类和对象概念 实现整体-部分结构 实现一般-特殊结构 实现属性和服务 提供类库和强大的开发环境 类型检查 按编译时进行类型检查的严格程度,分为 强类型(Strong Typing) 每个变量(属性)必须准确属于某个类 C++,Eiffel等 弱类型(Weak Typing) 仅要求每个变量(属性)隶属于一个对象 Smalltalk无类型,Foxpro等 强类型语言的优点 可靠 利于在编译时发现程序错误 高效 增加了程序可读性 可生成高效率目标代码 强类型编译型语言 ? 弱类型解释型语言 ? 效率问题 许多人认为OOPL的主要缺点是效率低 早期OOPL是解释型而非编译型的 ? 类库 运行时dynamic binding实现多态性,要在运行时查找继承树 ? 优化了查找过程,高效率查找 C++ :虚函数表 3. 选择OOPL应考虑的因素 将来能否占主导地位 可重用性 类库、开发环境 其它因素 二、程序设计风格 提高可重用性 提高方法的内聚 减小方法的规模 保持方法的一致性 把策略与实现分开 全面覆盖 尽量不使用全局信息 利用继承机制 提高可扩充性 封装实现策略 不要用一个方法遍历多条关联链 避免使用多分支语句 精心确定公有方法 提高健壮性 预防用户的操作错误 检查参数合法性 小 结 面向对象语言的优点—与OOM概念一致 面向对象语言的技术特点—重用性、高内聚、独立性强 选择面向对象语言的实际因素 程序设计风格 思考题 有人认为:“应该尽量用面向对象语言来实现面向对象分析和设计的结果”。你认为他的观点对吗 ?请说明理由。 选择面向对象程序设计语言时应该主要考虑哪些因素? * Software Engineering * * Software Engin

文档评论(0)

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

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

1亿VIP精品文档

相关文档