C面向对象程序设计ObjectOrientedProgramminginC_第1页
C面向对象程序设计ObjectOrientedProgramminginC_第2页
C面向对象程序设计ObjectOrientedProgramminginC_第3页
C面向对象程序设计ObjectOrientedProgramminginC_第4页
C面向对象程序设计ObjectOrientedProgramminginC_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、(C+)面向对象程序设计Object-Oriented Programming in C+刘荣香课程综述Course OverviewC+概述C+历史C+标准C+与C的关系面向对象思想C+优点程序开发周期课程内容和目标课程意义课程说明课程综述Brief history of C+1972,AT&T, Bell Lab. Dennis Ritche, C programming language1980, Bell Lab. Bjarne Stroustrup, “C with Classes” 1983, C+ was developed by Bjarne Strostrup at AT&T

2、 Bell Laboratories 1985, the first commercial version of C+1997, ANSI (American National Standards Institute) C+ (standard C+)C+之父 Bjarne Strostrup引入:类(Class)、虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)ANSI/ISO C+ stan

3、dard(ANSI/ISO C+ 标准)C+ 98 标准C+标准第一版,1998年发布。正式名称为ISO/IEC 14882:199818。C+ 03 标准C+标准第二版,2003年发布。正式名称为ISO/IEC 14882:200319 。C+ 11 标准C+标准第三版,2011年发布。正式名称为ISO/IEC14882:201120。C+ 14标准C+标准第三版,2014年发布。正式名称为ISO/IEC14882:201421。C+ 17 标准C+标准第五版,2017年发布。正式名称为ISO/IEC 14882:201722 。C+与C的关系C语言是C+的基础。C+对C的“增强”,表现在六

4、个方面:类型检查更为严格增加了面向对象的机制增加了泛型编程的机制(Template)增加了异常处理增加了运算符重载增加了标准模板库(STL)与C不兼容之处C允许从void*隐式转换到其它的指针类型,但C+不允许C+与C的关系C+定义了新关键字,例如new,class最大区别:解决问题的思想方法不一样C语言是结构化语言,关注过程(算法与数据结构)。C+是面向对象语言,关注对象(对象的属性和行为)。比喻1:面向过程是有一个“上帝之手”通过制定一系列规则来操纵一堆“死物”。面向对象是把世界描绘成N个有主动性的“活物”之间的交互。面向过程程序设计面向过程程序设计/结构化程序设计DATAFunction

5、 1Function 2Function N程序=数据+算法 procedural program缺点:把数据和对数据的处理过程分离为相互独立的实体,导致(1)程序的可维护性差(2)程序的可重用性差面向对象程序=对象+消息Object 1Object 2Object 4Object 3sendingreceivingDataFunctionAn objects representation object-oriented program面向对象程序设计C+与C的关系比喻1:我从冰箱拿饮料面向过程:定义各个变量三个分离的函数,并按序执行: f1(我的右手,冰箱): 我右手打开冰箱; f2(我的左

6、手,饮料):我左手拿出饮料; f3(我的右手,冰箱):我右手关上冰箱。面向对象:定义一个对象“我”,发消息给“我”。 对象:我 属性:左手,右手 方法:打开冰箱 ;拿出饮料();关上冰箱 发消息:我.打开冰箱;我.拿出饮料;我.关上冰箱。C+与C的关系比喻2:面向对象是把世界描绘成N个有主动性的“活物”之间的交互。面向过程是有一个“上帝之手”通过制定一系列规则来操纵一堆“死物”。面向对象思想对象(objects) 在现实世界中,对象是我们认识世界的基本单元。它可以是人、物、一件事,整个世界就是由形形色色的“对象”构成的。 对象可以是: * 有形的具体存在的事物(physical objects

7、) 例如: 一辆车、一个球、一个小学生; * 无形的、抽象的事件( unphysical objects ) 例如: 一次演出、一场球赛等。 对象既可以很简单,也可以很复杂,复杂的对象可以由若干简单的对象构成。 现实世界中的对象,具有以下特性: (1) 每一个对象必须有一个名字以区别其它对象; (2) 用属性来描述对象的某些特征; (3) 有一组操作,每一个操作决定对象的一种行为; (4) 对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。 在现实世界中对象可以表示为: 属性 + 行为 行 为 对象 属 性思想C+中14attributebehaviordatafun

8、ctionobject(method)&|commonC+ 举例: 对象名: 录音机 对象的属性: 生产厂家: SONY 机器编号 :XXXX 出厂日期 :2015.05.06 对象的行为: 播放 录音 停止 倒带 静态特征动态特征使用对象时只需知道它向外界提供的接口形式而不需要知道它的内部是如何实现的。 这样,不仅使得对象的使用变得非常简单、方便,而且具有很高的安全性和可靠性。 可见面向对象程序设计中的对象来源于现实世界,更接近人们的思维。面向对象程序=对象+消息Object 1Object 2Object 4Object 3sendingreceivingDataFunctionAn ob

9、jects representation object-oriented program面向对象程序设计面向对象程序的主要特征Data abstraction (抽象)Data Encapsulation (封装)Inheritance (继承)Polymorphism(多态)面向对象程序设计18Mr. ZhangMr. LiMr. WangChineseabstractionAmericanJapaneseabstractionPersonData abstractionobjectsclassData abstraction (抽象)苹果、梨、桔子、香蕉 . -水果抽象的过程是将有关事物的

10、共性归纳、集中的过程。Encapsulation(封装)21Data Encapsulation (封装)DataData abstractionsFunctionsbindingObject22Data Encapsulation (封装)Reduces the possibility of inadvertent data modification Reduces various kinds of logic errors.Reduce complex of operating object.Data Encapsulation (data hiding) advantage23Inher

11、itance (继承)Classes can be stand-alone or they can occur in Inheritance hierarchies ,which consist of parent/child relationships among classes. 父亲 儿子 继承关系可以使后者继承前者的基本特性,又可以增加一些新的特性。24Inheritance (继承) 哺乳动物 (热血、有毛发、用奶哺育幼仔) 狗 (有犬牙、食肉、特定的骨骼结构、群居) 白狗 黑狗 (白色) (黑色) 继承关系简化了人们对事物的认识和叙述,简化了工作程序。 Inheritance is

12、 one of the most important OOP tools in the implementation of code reusability.Data Inheritancehorsemale horsefemale horsePolymorphism(多态)Polymorphism is the concept of using the same functions on different type of objects.不同的对象调用相同名称的函数却可导致不同的行为或结果的现象。This OOP tool enables C+ programmers to reduce

13、program development time. Polymorphism(多态)举例:不同的足球运动员在射门以后可能产生多种结果球射在门框上球射在观众席上球打中了守门员的头球被守门员接住了球进了C+ 优点 C+是一种中级编程语言可以高级编程方式编写应用程序 又可以低级编程方式编写与硬件关系密切的库。 在分层架构中,常使用C+编写Web服务器使用HTML、Java或.Net编写其他组件Developing a computer programProgram development cycleDesignWriteDebugCompileLink提出整体解决方案Test编写C+指令源文件编译器

14、把C+程序指令转换成机器指令目标文件纠正编译时错误链接器将程序目标文件和C+运行时库文件结合可执行文件定位和修正程序错误确认程序错误(bug)Correct课程内容和目标课程主要内容C+ 语法面向对象程序设计的概念大量的编程实践目标熟练掌握C+语法具有面向对象程序设计的概念与能力能熟练阅读复杂的C+程序源代码能独立的设计与完成面向对象的C+程序课程意义设备软件服务电子信息产业主链条在互连网+时代,软件和信息服务是电子信息产业发展的两个重要方向。一 人才培养目标3G/4G通信产业链应用软件开发网络构建、优化与运维技术研究 设备研发硬件测试、生产,软件测试人才需求信息服务成为主流,内容与应用提供商成为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论