1、1(C+)(C+)面向对象程序设计面向对象程序设计Object-Oriented Programming in C+刘荣香刘荣香课程课程综述综述 Course Overview2uC+概述lC+历史lC+标准lC+与C的关系l面向对象思想lC+优点l程序开发周期u课程内容和目标u课程意义u课程说明课程综述课程综述3Brief history of C+Brief history of C+u1972,AT&T,Bell Lab.Dennis Ritche,C programming languageu1980,Bell Lab.Bjarne Stroustrup,“C with Classes
2、”u1983,C+was developed by Bjarne Strostrup at AT&T Bell Laboratories u1985,the first commercial version of C+u1997,ANSI(American National Standards Institute)C+(standard C+)4C+C+之父之父 Bjarne Strostrup引入:类(Class)、虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)
3、、异常(exception)、RTTI、命名空间(name space)5ANSI/ISO C+standardANSI/ISO C+standard(ANSI/ISO C+ANSI/ISO C+标准)标准)uC+98 标准标准lC+标准第一版,1998年发布。正式名称为ISO/IEC 14882:199818。uC+03 标准标准lC+标准第二版,2003年发布。正式名称为ISO/IEC 14882:200319。uC+11 标准标准lC+标准第三版,2011年发布。正式名称为ISO/IEC14882:201120。uC+14标准标准lC+标准第三版,2014年发布。正式名称为ISO/IEC
4、14882:201421。uC+17 标准标准lC+标准第五版,2017年发布。正式名称为ISO/IEC 14882:201722。6C+C+与与C C的关系的关系uC语言是C+的基础。lC+对C的“增强”,表现在六个方面:类型检查更为严格 增加了面向对象的机制 增加了泛型编程的机制(Template)增加了异常处理 增加了运算符重载 增加了标准模板库(STL)l与C不兼容之处 C允许从void*隐式转换到其它的指针类型,但C+不允许7C+C+与与C C的关系的关系 C+定义了新关键字,例如new,classu最大区别:解决问题的思想方法不一样lC语言是结构化语言,关注过程(算法与数据结构)。
5、lC+是面向对象语言,关注对象(对象的属性和行为)。u比喻1:l面向过程是有一个“上帝之手”通过制定一系列规则来操纵一堆“死物”。l面向对象是把世界描绘成N个有主动性的“活物”之间的交互。8面向过程程序设计面向过程程序设计u面向过程程序设计/结构化程序设计DATAFunction 1Function 2Function Nl程序=数据+算法 procedural programl缺点:把数据和对数据的处理过程分离为相互独立的实体,导致(1)程序的可维护性差(2)程序的可重用性差9l面向对象程序=对象+消息Object 1Object 2Object 4Object 3sendingreceiv
6、ingDataFunctionAn objects representation object-oriented program面向对象程序设计面向对象程序设计10C+C+与与C C的关系的关系u比喻1:我从冰箱拿饮料l面向过程:定义各个变量三个分离的函数,并按序执行:f1(我的右手,冰箱):我右手打开冰箱;f2(我的左手,饮料):我左手拿出饮料;f3(我的右手,冰箱):我右手关上冰箱。l面向对象:定义一个对象“我”,发消息给“我”。对象:我 属性:左手,右手 方法:打开冰箱;拿出饮料();关上冰箱 发消息:我.打开冰箱;我.拿出饮料;我.关上冰箱。11C+C+与与C C的关系的关系u比喻2:
7、l面向对象是把世界描绘成N个有主动性的“活物”之间的交互。l面向过程是有一个“上帝之手”通过制定一系列规则来操纵一堆“死物”。12面向对象思想面向对象思想对象(对象(objects)objects)在现实世界中现实世界中,对象是我们认识世界的基本单元。它可以是人、物、一件事,整个世界就是由形形色色的“对象”构成的。对象可以是:*有形的具体存在的事物(physical objects)例如:一辆车、一个球、一个小学生;*无形的、抽象的事件(unphysical objects)例如:一次演出、一场球赛等。对象既可以很简单,也可以很复杂,复杂的对象可以由若干简单的对象构成。13 现实世界中的对象,
8、具有以下特性:(1)每一个对象必须有一个名字以区别其它对象;(2)用属性来描述对象的某些特征;(3)有一组操作,每一个操作决定对象的一种行为;(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。在现实世界中对象可以表示为:属性+行为 行 为 对象 属 性思想思想C+中1414attributebehaviordatafunctionobject(method)&|commonC+15 举例:对象名:录音机 对象的属性:生产厂家:SONY 机器编号:XXXX 出厂日期:2015.05.06 对象的行为:播放 录音 停止 倒带 静态特征静态特征动态特征动态特征使用对象
9、时只需知道它向外界提供的使用对象时只需知道它向外界提供的接口接口形式而不需要知道它的内形式而不需要知道它的内部是如何实现的。部是如何实现的。这样,不仅使得对象的使用变得非常简单、方便,而且具有很这样,不仅使得对象的使用变得非常简单、方便,而且具有很高的安全性和可靠性。高的安全性和可靠性。可见面向对象程序设计中的对象来源于现实世界,更接近人们可见面向对象程序设计中的对象来源于现实世界,更接近人们的思维。的思维。16l面向对象程序=对象+消息Object 1Object 2Object 4Object 3sendingreceivingDataFunctionAn objects represen
10、tation object-oriented program面向对象程序设计面向对象程序设计17u面向对象程序的主要特征lData abstraction(抽象)lData Encapsulation(封装)lInheritance(继承)lPolymorphism(多态)面向对象程序设计面向对象程序设计1818Mr.ZhangMr.LiMr.WangChineseabstractionAmericanJapaneseabstractionPersonData abstractionobjectsclassData abstraction(抽象)(抽象)19苹果、梨、桔子、香蕉.-水果抽象的过
11、程是将有关事物的共性归纳、集中的过程。20EncapsulationEncapsulation(封装)(封装)2121Data Encapsulation(封装)(封装)DataData abstractionsFunctionsbindingObject2222Data Encapsulation(封装)(封装)Reduces the possibility of inadvertent data modification Reduces various kinds of logic errors.Reduce complex of operating object.Data Encapsu
12、lation(data hiding)advantage2323Inheritance Inheritance(继承)(继承)uClasses can be stand-alone or they can occur in Inheritance hierarchies,which consist of parent/child relationships among classes.父亲 儿子u 继承关系可以使后者继承前者的基本特性,又可以增加一些新的特性。2424Inheritance Inheritance(继承)(继承)哺乳动物哺乳动物 (热血、有毛发、用奶哺育幼仔)(热血、有毛发、用
13、奶哺育幼仔)狗狗 (有犬牙、食肉、特定的骨骼结构、群居)(有犬牙、食肉、特定的骨骼结构、群居)白狗白狗 黑狗黑狗 (白色)(白色)(黑色)(黑色)u 继承关系简化了人们对事物的认识和叙述,简化了工作程序。25 Inheritance is one of the most important OOP tools in the implementation of code reusability.Data Inheritancehorsemale horsefemale horse26PolymorphismPolymorphism(多态)(多态)uPolymorphism is the conc
14、ept of using the Polymorphism is the concept of using the same same functionsfunctions on different type of on different type of objects.objects.l不同的对象调用相同名称的函数却可导致不同的行为或结果的现象。uThis OOP tool enables C+programmers This OOP tool enables C+programmers to reduce to reduce program development time.progra
15、m development time.27PolymorphismPolymorphism(多态)(多态)u举例:不同的足球运动员在射门以后可能产生多种结果l球射在门框上球射在门框上l球射在观众席上球射在观众席上l球打中了守门员的头球打中了守门员的头l球被守门员接住了球被守门员接住了l球进了球进了28C+C+优点优点u C+是一种中级编程语言l可以高级编程方式编写应用程序 l又可以低级编程方式编写与硬件关系密切的库。u 在分层架构中,l常使用C+编写Web服务器l使用HTML、Java或.Net编写其他组件29Developing a computer programDeveloping a
16、computer programuProgram development cycleDesignWriteDebugCompileLink提出整体解决方案Test编写C+指令编译器把C+程序指令转换成机器指令纠正编译时错误链接器将程序目标文件和C+运行时库文件结合定位和修正程序错误确认程序错误(bug)Correct30课程内容和目标课程内容和目标u课程主要内容lC+语法l面向对象程序设计的概念l大量的编程实践u目标l熟练掌握C+语法l具有面向对象程序设计的概念与能力l能熟练阅读复杂的C+程序源代码l能独立的设计与完成面向对象的C+程序31课程意义课程意义设备软件服务u电子信息产业主链条u在互
17、连网+时代,软件和信息服务是电子信息产业发展的两个重要方向。32一一 人才培养目标人才培养目标3G/3G/4G4G通通信信产产业业链链应用软件开发应用软件开发网络构建、网络构建、优化与运维优化与运维技术研究技术研究 设备研发设备研发硬件测试、生产,硬件测试、生产,软件测试软件测试人人才才需需求求信息服务成为主流,内容与应用提信息服务成为主流,内容与应用提供商成为通信产业链的核心供商成为通信产业链的核心.33课程说明课程说明u课堂上主要给出内容的结构特征和要点,不可能讲述所有的章节,但必须进行充分的课前/后阅读、理解和实践。u开发环境:VC+6.0,VS,DEV C+,Eclipse(Linux)VC+6.0,VS,DEV C+,Eclipse(Linux)u学习建议:看经典资料、学习别人编码、阅读好的源代码编码,编码,再编码编码,编码,再编码。u学时学时:40:40学时学时(理论理论28,28,上机上机12)12)u作业要求:按时提交作业,成绩计入平时成绩。作业要求:按时提交作业,成绩计入平时成绩。u考核方式:在课程结束后,举行笔试。卷面成绩占总成绩考核方式:在课程结束后,举行笔试。卷面成绩占总成绩50%50%,上机及平时成绩占总成绩,上机及平时成绩占总成绩50%50%。