《软件工程面向对象的程序设计.pptx》由会员分享,可在线阅读,更多相关《软件工程面向对象的程序设计.pptx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、思考思考?面向对象分析和设计的结果必须用面向对象程序设计语言来实现吗?面向对象程序设计语言有哪些特有的优势?第1页/共19页第7章 面向对象的程序设计面向对象程序设计语言的优点有哪些?面向对象程序设计语言的技术特点如何?如何选择合适的面向对象程序设计语言?如何保持良好的面向对象程序设计风格?第2页/共19页一、面向对象程序设计(Object-oriented Programming,OOP)面向对象语言(OOPL)支持OO概念 编译程序可自动把OO概念映射到目标程序中 非面向对象语言 程序员实现OOPOOP是否必须用是否必须用OOPLOOPL来实现来实现?第3页/共19页OOD的结果可以用OO
2、PL/非OOPL实现OO是一种程序设计风格,而不是一种具有构造继承性、封装性和多态的程序设计语言族的命名OOPL功能强于非OOPL?任何通用语言都可实现OO概念OOPL实现OO概念远比非OOPL方便!选择编程语言的关键一致的表达能力可重用性可维护性错误错误!第4页/共19页1.OOPL的优点一致的表达方式 OOAOODOOP使用统一的概念可重用性好 可重用OOA、OOD、OOP的结果可维护性好 程序显式陈述问题域语义第5页/共19页几种典型OOPLSimula语言 Simula的基础是ALGOL60,它沿用了ALGOL60的数据结构和控制结构,其主要特点:具有主程序概念、具有分程概念、引用了虚
3、拟子程序概念与协同子程序概念。第6页/共19页几种典型OOPLSmalltalk语言 Smalltalk不是一种单纯的程序设计语言,而是反映面向对象程序设计思想的程序设计环境。其主要特点:无主程序概念,类是唯一构造程序的最小单位、每个对象都是某个类的实例、对象间通过消息通信、支持单继承。Eiffel语言 主要特点:类是唯一程序构造单元、静态类与动态对象概念、支持多继承、提供有断言机制、延迟类。第7页/共19页几种典型OOPL C+是目前使用最广泛的OOPL之一,其主要原因是它完全保留了传统优秀语言C的优 点,并与C完全兼容。C+是C超集,增加了数据抽象、继承性机制、虚拟函数以及其他 改善C语言
4、结构的成分,使之成为一个灵活、高效和易移植的OOPL。第8页/共19页总结:Simula Smalltalk Eiffel C+对象对象 对象对象 对象对象 对象对象 类类 类类 类类 类类 属性变量属性变量 实例变量实例变量 属性属性 成分成分 子程序子程序 方法方法 程式程式 函数函数子程序调用子程序调用消息发送消息发送 程式调用程式调用 函数调用函数调用虚拟子程序虚拟子程序抽象方法抽象方法 延迟程式延迟程式 虚拟函数虚拟函数 继承继承 单继承单继承 多多 继承继承 多继承多继承 子类子类 子类子类 后继类后继类 派生类派生类第9页/共19页2.OOPL的技术特点20世纪50年代,LISP
5、,动态联编60年代,SIMULA,类,继承70年代末,Modula_2,Ada,数据抽象机制80年代,OOPL纯OOPL(Smalltalk,Eiffel)混合型OOPL(C+)第10页/共19页支持OO概念 支持类和对象概念 实现整体-部分结构 实现一般-特殊结构 实现属性和服务 提供类库和强大的开发环境第11页/共19页类型检查按编译时进行类型检查的严格程度,分为强类型(Strong Typing)每个变量(属性)必须准确属于某个类 C+,Eiffel等弱类型(Weak Typing)仅要求每个变量(属性)隶属于一个对象 Smalltalk无类型,Foxpro等第12页/共19页强类型语言
6、的优点可靠 利于在编译时发现程序错误高效 增加了程序可读性 可生成高效率目标代码强类型编译型语言 弱类型解释型语言 开发软件产品开发软件产品快速开发原型快速开发原型第13页/共19页效率问题许多人认为OOPL的主要缺点是效率低早期OOPL是解释型而非编译型的 类库运行时dynamic binding实现多态性,要在运行时查找继承树 优化了查找过程,高效率查找C+:虚函数表虚函数名虚函数名虚函数入口点虚函数入口点m1函数指针函数指针Class AInstance a1第14页/共19页3.选择OOPL应考虑的因素 将来能否占主导地位 可重用性 类库、开发环境 其它因素第15页/共19页二、程序设
7、计风格 提高可重用性提高可重用性 提高方法的内聚 减小方法的规模 保持方法的一致性 把策略与实现分开 全面覆盖 尽量不使用全局信息 利用继承机制 提高可扩充性提高可扩充性 封装实现策略 不要用一个方法遍历多条关联链 避免使用多分支语句 精心确定公有方法 提高健壮性提高健壮性 预防用户的操作错误 检查参数合法性第16页/共19页小 结 面向对象语言的优点 面向对象语言的技术特点 选择面向对象语言的实际因素 程序设计风格第17页/共19页思考题有人认为:“应该尽量用面向对象语言来实现面向对象分析和设计的结果”。你认为他的观点对吗?请说明理由。选择面向对象程序设计语言时应该主要考虑哪些因素?第18页/共19页感谢您的观看!第19页/共19页