您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象程序设计(谭浩强版)
面向对象程序设计第1章C++的初步知识第2章类和对象第3章关于类和对象的进一步讨论第4章运算符重载第5章继承与派生第6章多态性与虚函数第7章输入输出流第8章C++工具内容简介面向对象的基本思想C++语言的基本概念、基本语法和编程方法C++语言的面向对象特征类与对象继承与派生多态性与虚函数学习方法多练习,掌握基本概念多读程序,学习编程方法与技巧多上机实践,加强动手能力多剖析范例,积累编程经验教材及参考书目C++语言基础教程.吕凤翥著.清华大学出版社.1999C++语言及其程序设计教程(修订版).张国峰编著.电子工业出版社.1997C++语言程序设计.郑莉等编著.清华大学出版社.1999VisualC++程序设计.王育坚编著.清华大学出版社第1章C++初步知识1.1从C到C++1.2最简单的C++程序1.3C++对C的扩充1.4C++程序的编写和实现1.5关于C++上要实践1.6C++程序的结构1.1从C到C++机器语言(二进制码)汇编语言20世纪50年代中期,FORTRAN语言20世纪50年代中期,Algol语言在计算机语言发展史上具有划时代的意义,引入了许多程序设计概念。如变量、数组、循环、分支等。提出块(Begin…End)思想,对数据进行保护,是一种初级封装。20世纪60年代中期,Simula67语言面向对象语言的鼻祖,提出了对象、类的概念,并支持类的继承。20世纪70年代中期,Ada语言支持数据抽象类型的最重要的语言之一,但不完全支持继承。20世纪70年代中期,Smalltalk语言最有影响的面向对象语言之一,丰富了面向对象的概念。20世纪80年代中期后出现C++等多种面向对象语言1.1从C到C++C语言的主要特点是:1、C语言是一种结构化的程序设计语言,语言本身简洁、使用灵活方便。既适用于设计和编写大的系统程序,又适用于编写小的控制程序,也适用科学计算。2、它既有高级语言的特点,又具有汇编语言的特点。运算符丰富,除了提供对数据的算术逻辑运算外,还提供了二进制的位运算。并且也提供了灵活的数据结构。用C语言编写的程序表述灵活方便,功能强大。用C语言开发的程序,其结构性好,目标程序质量高,程序执行效率高。3、程序的可移植性好。用C语言在某一种型号的计算机上开发的程序,基本上可以不作修改,而直接移植到其它型号和不同档次的计算机上运行。4、程序的语法结构不够严密,程序设计的自由度大。这对于比较精通C语言的程序设计者来说,可以设计出高质量的非常通用的程序。但对于初学者来说,要能比较熟练运用C语言来编写程序,并不是一件容易的事情。与其它高级语言相比而言,调试程序比较困难。往往是编好程序输入计算机后,编译时容易通过,而在执行时还会出错。但只要对C语言的语法规则真正领会,编写程序及调试程序还是比较容易掌握的。随着C语言应用的推广,C语言存在的一些缺陷或不足也开始流露出来,并受到大家的关注。如:C语言对数据类型检查的机制比较弱;缺少支持代码重用的结构;随着软件工程规模的扩大,难以适应开发特大型的程度等等。为了克服C语言本身存在的缺点,并保持C语言简洁、高效,与汇编语言接近的特点,1980年,贝尔实验室的BjarneStroustrup博士及其同事对C语言进行了改进和扩充,并把Simula67中类的概念引入到C中。并在1983年由RickMaseitti提议正式命名为C++(CPlusPlus)。后来,又把运算符的重载、引用、虚函数等功能加入到C++中,使C++的功能日趋完善。当前用得较为广泛的C++有:VC++(VisualCPlusPlus)、BC++(BorlandCPlusPlus)、AT&TC++等。一、C++的起源在C语言基础上为支持面向对象的程序设计研制的一个通用目的的程序设计语言;由AT&T贝尔实验室BjarneStroustrup博士开发;二、C++的特点与C兼容,既保持了C的简洁、高效和接近汇编的特点,又比C更安全,结构化程度更高;既支持面向过程的程序设计,又支持面向对象的程序设计;注意其两面性1.1从C到C++必须先研究事物,而后才能研究过程。必须先知道一个事物是什么,而后才能觉察这个事物中所发生的变化。《路德维希·费尔巴哈和德国古典文学的终结》恩格斯三、面向对象的方法1.1从C到C++1.2最简单的C++程序例1.1:输出一行字符:“ThisisaC++program.”#includeiostream//用cout输出时需要用此头文件usingnamespacestd;//使用命名空间std(276)intmain(){coutThisisaC++Program.\n;//用cout的方法输出一行return0;}1.2最简单的C++程序分析:(1)main前的int;return0;表示正常返回(2)/*……*/多行注释,不能嵌套定义(3)cout(c、out),输出对流类的一个对象(4)头文件iostream,i-o-stream,输入输出流类(5)usingnamespacestd;命名空间std,表示要用到命名空间std的内容。(273页)1.2最简单的C++程序cout:输出(1)coutab;(2)couta,b,c;(3)续行符“\”(4)cout“hello\n”;//原样输出字符串(5)cout“a=”aendl;错换行1.2最简单的C++程序例1.2:求a和b两个数之和。#includeiostream//用cout输出时需要用此头文件usingnamespacestd;//使用命名空间stdintmain(){//函数体开始inta,b,sum;//定义变量cinab;//输入语句sum=a+b;//赋值语句couta+b=sumendl;//输出语句return0;//如程序正常结束,向操作系统返回一个零值}参考9页1.2最简单的C++程序#includeiostreamusingnamespacestd;intmain(){intmax(intx,inty);inta,b,c;cinab;c=max(a,b);//函数调用coutmax=cendl;return0;}例1.3:输入两个数x和y,求两数中的大者。intmax(intx,inty){intz;if(xy)z=x;elsez=y;return(z);}函数声明1.2最简单的C++程序例1.4:输入任意短语或句子,计算该短语包含多少个字(word)和字符(character)。注意:输入短语时,必须在字和字之间只空一格。面向过程的方法#includestdio.h#includeconio.hvoidmain(){charch;intwdcount,chcount;wdcount=1;chcount=0;printf(***:Pleaseinputanyphrase…\n);while((ch=getche())!='\r'){chcount++;1.2最简单的C++程序if(ch=='')wdcount++;}printf(\n***:Thenumberofwordis%d\n,wdcount);printf(\n***:Thenumberofcharis%d\n,chcount);}面向对象的方法#includeiostream.h#includeconio.hclasscount{public:定义类公有成员1.2最简单的C++程序(续)count();voidprocess();voiddisplay();private:intwdcount,chcount;};count::count(){wdcount=1;chcount=0;}voidcount::process(){私有成员构造函数成员函数数据成员1.2最简单的C++程序charch;cout***:Pleaseinputanyphrase…endl;while((ch=getche())!='\r'){chcount++;if(ch=='')wdcount++;}coutendl;}voidcount::display(){printf(\n***:Thenumberofwordis%d\n,wdcount);1.2最简单的C++程序(续)printf(\n***:Thenumberofcharis%d\n,chcount);}voidmain(){countA;A.process();A.display();}运行结果***Pleaseinputanyphrase...Iamateacher***:Thenumberofwordis4***:Thenumberofcharis15定义对象调用公有成员函数1.2最简单的C++程序(续)一、面向过程与面向对象程序设计是一种数学思维或计算机思维方法,与人们认识世界的方法不同以不稳定的、多变的“过程”和“操作”为中心来构造系统可重用性较差是建立在认识方法学基础上的一项技术科学,比较自然地模拟了人类认识客观世界的方式;以相对稳定的“对象”和“数据结构”为中心来构造系统可重用性较好面向过程程序设计面向对象程序设计一、面向过程与面向对象程序设计面向过程程序设计面向对象程序设计P1P2P3P4P5O1O2O3O4O5P6一、面向过程与面向对象程序设计面向过程程序设计面向对象程序设计O1O2O3O4O5O4二、抽象在面向对象中的作用Ⅰ、抽象的概念抽象代表着一个对象的本质特征,这个特征将这个对象与所有其他种类的对象区别开来;抽象是通过从特定的实例中抽取共同的性质以形成一般化的概念的过程;抽象具有层次;汽车轮船飞机交通工具二、抽象在面向对象中的作用(续)Ⅱ、面向对象抽象的原理(面向对象计算的本质)数据抽象、行为共享、进化、确定性1、数据抽象为程序员提供了一种对数据和为操作这些数据所需要的算法的抽象;是面向对象方法的核心,包括:模块化:构成了面向对象计算的本质;信息隐藏:将一个模块的细节部分对用户隐藏起来,用户只能通过一个受保护的接口来访问某个模块,而不能直接访问一个模块内部的细节;类公有成员二、抽象在面向对象中的作用(续)2、行为共享行为是由实体的外部接口定义的行为共享指许多实体具有相同的接口,可增加系统的灵活性;支持行为共享的方式分类与层次分类多态与继承对象公有成员函数名二、抽象在面向对象中的作用(续)3、进化需求进化(虚函数)进化式的问题求解(继承的构造函数)4、确定性确保每个行为项都有一个正确的解释,系统不会因不能响应某一行为而失败;确定性与类型的正确性有关;三、面向对象计算的基本特征面向对象系统的三要素:对象、类和继承;(一)、对象1、概念上对象是代表着正在创建的系统中的一个实体;2、实现形式上对象是一个状态和操作(或方法)的封装体;3、对象的定义状态:对象的状态由这个对象的属性和这些属性的当前值决定。属性是静态的,当前值是动态的;一个对象具有状态、行为和标识。三、面向对象计算的基本特征(续)行为:一个对象如何以状态变化和消息传递的形式进行作用和对外界进行反应。一个对象的行为代表了这个对象的外部可见的和可测试的活动;一个对象的状态代表着它的行为的累积结果;标识:标识是一个对象固有的一种特性,该特性将这个对象与其他对象区别开来;属性1属性2...属性n值11值21...值n1值12值22...值n2对象1行为值11值21...值n1值12值22...值n2对象2行为三、面向对象计算的基本特征(续)4、对象的分类实体对象界面对象控制对象按作用分类存储信息的对象支持系统的主要功能5、对象的确认发明对象:主要是控制对象;发现对象:主要是实体对象或界面对象;(二)、类1、什么是类三、面向对象计算的基本特征(续)类是创建对象的样板,它包含着所创建对象的状态描述和方法的定义。类的完整描述包含了外部
本文标题:面向对象程序设计(谭浩强版)
链接地址:https://www.777doc.com/doc-5645401 .html