面向对象程序设计语言基础.ppt
《面向对象程序设计语言基础.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计语言基础.ppt(387页珍藏版)》请在三一办公上搜索。
1、第3章 面向对象程序设计语言基础,3.1 面向对象程序设计语言 3.2 C+语言基础 3.3 Java的基础知识,3.1 面向对象程序设计语言,掌握面向对象程序设计,首先应该学习面向对象程序设计语言。当今有很多种编程语言能体现基本的面向对象思想,如C+、Java、Smalltalk、CLOS等,但普遍被推崇的、流行的有两种,即C+和Java。下面将介绍C+和Java的一些基础知识。,3.1.1 程序 程序是有目的的动作序列,它是一种软件。对于程序员来说,程序是以某种语言为工具编制出来的动作序列,它表达了人解决现实世界问题的思想。计算机程序是用计算机程序设计语言所要求的规范书写出来的一系列动作,
2、它表达了程序员要求计算机执行的操作。对于计算机来说,一组机器指令就是程序。我们所说的机器代码或者机器指令,都是指程序,它是按计算机硬件设计规范的要求编制出来的动作序列。在计算机中,程序通常以文件的形式保存。,3.1.2 语言及其分类 语言按其等级可分为高级语言和低级语言。机器语言和汇编语言都是低级语言。程序语言越低级,程序的描写越复杂,越难懂,程序描述的问题越接近机器。最早,程序员使用最原始的计算机指令,即机器语言程序。只有机器语言才能被机器识别和运行,这些指令以一串二进制数表示。不久,发明了汇编语言,它可以将机器指令映射为一些能被人读懂的助记符。以后,各种高级语言迅速发展起来。发展过程中,经
3、历了严酷的优胜劣汰过程,最后剩下一些比较优秀的高级语言。C+作为一种多范型语言,就是一种优秀的高级语言。,例如,我们用C+和汇编语言分别来实现表达式a2b+3c?1,用C+实现为a2*b+3*c?1;用汇编来实现为 mov eax,DWORD PTR b_$ebp mov ecx,DWORD PTR c_$ebp mul eax,2 mul ecx,3 add eax,ecx dec eax mov DWORD PTR b_$ebp,eax,语言越低级,就表明越靠近机器;越高级,就表明越靠近人的表达与理解、越自然。程序语言的发展,是从低级到高级,直到可用人的自然语言来描述。程序语言的发展也是从
4、具体到抽象的发展过程。从上面的例子中可以看出,作为高级语言的C+在实现表达式时要比汇编语言简洁得多。,3.1.3 C+是面向对象程序设计语言 正如第1、2章所述,程序设计方法正在从结构化程序设计走向面向对象程序设计。C语言能够很好地支持结构化范型程序设计,而C+能够很好地支持面向对象范型程序设计。在第4、5章中将介绍用C+来实现面向对象范型的程序设计。,3.2 C+语言基础,3.2.1 C+的发展史 C+仅有二十几年的历史,它是C语言的扩展和完善。C语言是贝尔实验室的Dennis Ritchie在B语言的基础上开发出来的。1972年在一台DEC PDP-11计算机上实现了最初的C语言。到20世
5、纪70年代末,C已经演化为现在所说的“传统的C语言”。Kernighan和Ritchie在1978年出版的The C Programming Language一书中全面地介绍了传统的C语言,,1989年美国国家标准协会制定了C语言的标准(ANSI C)。Kernighan和Ritchie编著的第二版The C Programming Language(1988年版)介绍了ANSI C的全部内容。至此,C语言以其如下独有的特点风靡了全世界:(1)语言简洁、紧凑,使用方便、灵活。C语言只有32个关键字,程序书写形式自由。(2)丰富的运算符和数据类型。(3)C语言可以直接访问内存地址,能进行位操作,
6、能够胜任开发操作系统的工作。,(4)生成的目标代码质量高,程序运行效率高。(5)可移植性好。C语言盛行的同时,也暴露出了其局限性:(1)类型检查机制相对较弱,这使得程序中的一些错误不能在编译时发现;(2)C本身几乎没有支持代码重用的语言结构,因此一个程序员精心设计的程序很难为其他程序所用;,(3)当程序的规模达到一定的程度时,程序员很难控制程序的复杂性。为满足管理程序复杂性的需要和克服C语言的以上缺点,就必须对C语言进行完善或以一种新的语言来代替C语言,C+就是在这种环境下应运而生的。1980年,贝尔实验室的Bjarne Stroustrnp开始对C进行改进和扩充。最初的成果称为“带类的C”,
7、1983年正式取名为C+。在对C+进行了三次修订后,于1994年制定了ANSI C+标准的草案,以后又经过不断完善成为目前的C+。C+仍在不断发展中。,C+包含了整个C,C是建立C+的基础;添加了对面向对象程序设计(OOP)的完全支持。下面介绍在用C+来实现面向对象程序设计中,必须掌握的C+的关于支持面向对象方面等的语法基础。对C缺乏了解的读者,建议在本书之外,尽快浏览一下C语言的有关内容。,3.2.2 C+基础语法 1.关键字 关键字是预先定义好的标识符,这些标识符在C+编写程序的时候,有特殊的含义。在C+中共有61个关键字。在程序设计的过程中应注意,程序中用到的其他名字不能与这些关键字有相
8、同的拼法(包括大小写都不能相同)。表3-1给出了C+中定义的关键字。,表3-1 C+中定义的关键字,static,2.基本数据类型 在程序中要用到数据,数据常以变量或常数的形式来描述。每个变量或常数都有数据类型。变量是存储信息的存储单元,它对应于某个内存空间,用变量名代表其存储空间,程序能在变量中存储和取出值。数据类型用来告诉编译器应为变量分配多少内存空间、怎样组织已分配的内存空间,以及变量中要存储值的类型。数据类型分为基本数据类型和非基本数据类型。非基本数据类型包括数组、指针和结构等类型。基本数据类型有char、int、float、double、wchar_t和bool等。图3-1描述了C+
9、的数据类型的分类。,图3-1中的type表示非空的数据类型,是程序员可以自己定义的数据类型。在图3-1中只是给出了常用数据类型和部分数据类型修饰符,它们用来改变基本类型的意义,用于适应各种情况的需要。修饰符有long(长型符)、short(短型符)、signed(有符号)和unsigned(无符号)等。数据类型修饰符确定了该数据所占内存空间的大小和可表示的数值范围。表3-2是16位计算机中各数据类型所能表示的数值范围。,图3-1 C+的数据类型,表3-2 常用基本数据类型描述,3.变量定义1)变量名的命名C+中变量的命名应该遵守以下规则:(1)不能是C+关键字;(2)第一个字符必须是字母或下划
10、线;(3)不要太长,一般不超过31个字符;(4)不能以数字开头;(5)中间不能有空格;(6)变量名中不能包含“.;,+?之类的特殊符号。(7)变量名不要与C+中库函数名、类名、和对象名相同。,2)变量定义方式 在给变量命名时,通常用带有描述性的字符串,例如用area命名一个面积变量,用time命名时间变量。这些变量在应用时,程序员和读者对其意义一目了然。例如:int number;double sum;float length;,3)变量赋值与初始化 用赋值运算符“=”给变量赋值。变量初始化是指在定义变量时直接给变量赋值,也可以先定义变量,然后用赋值语句给其赋值。并不是所有的变量都需要初始化,
11、未初始化的变量在编译器编译时并不会出错。例如:unsigned short width;double area,radius=23;width=4;其中,变量width先定义后赋值;而变量radius在定义时初始化;变量area未初始化。这些变量在编译时均不会出现错误。,4)typedef 用typedef可以为一个已有的类型名提供一个同义词,该同义词可以代替该类型在程序中使用。用法是以typedef开始,随后是要表示的类型,最后是同义词和分号。typedef实际上没有定义一个新的数据类型,在建立一个typedef类型时没有分配内存。例如:typedef double profit;/定义do
12、uble的同义类型 typedef int INT,integer;/定义int的两个同义类型 INT a;/同int a;integer a;/同int a;profit d;/同double d;,3.2.3 常数 1.实数常数 实数常数的表示方法有两种:(1)十进制小数。它由数字和小数点组成,如0.123,0.234,0.0等都是十进制数。(2)指数形式。如:425e4或425E4表示425104。要注意E或e的前面必须是数字,且E或e后面的指数必须为整数。,实数型常数常分为单精度(float)、双精度(double)和长双精度(long double)3类。在16位计算机中,float
13、型数据在内存中占4个字节,double型数据在内存中占8个字节,long double数据类型在内存中占16个字节。float型提供7位有效数字,double型提供15位有效数字,long double提供19位有效数字。在C+中,一个实数如果没有说明,则其类型为默认类型double型。要表示float型数,则必须在实数后面加上F或f;要表示long double型数,则必须在实数后面加上L或l。,例如:3.2f/float型实数 3.2L/long double型实数 3.2/没有说明,故为默认类型double型 2.字符常数 字符常数是用单引号括起来的一个字符,它分为一般字符常数和特殊字符
14、常数。一般字符常数有a、x等字符,特殊字符常数是以“”开头的字符。表3-3列出了常用的特殊字符。,表3-3 常用的特殊字符,表中列出的字符又称为转义字符,即将反斜杠后面的字符转变成另外的意义。有些是控制字符,如“n”;有些字符是在该字符前加转义字符来表示的,如“”、“”、“”。在内存中,字符数据以ASCII码存储,即以整数表示,所以字符数据和整型数据在0255(一个字节范围内)之间可以相互赋值。只要注意其表示的范围合理即可。例如:int a=b;/正确,将整型变量赋一个字符值(b的ASCII值为98),char c=97;/正确,将一个字符变量赋一个整型值(97代表的ASCII字符是a)在下列
15、C+语句中,将自动根据变量定义时的数据类型,来确定输出的究竟是字符类型值还是整型类型值。例如:coutaendl;/输出字符b的ASCII值98 coutcendl;/输出ASCII值97的字符b 上面两行语句自动根据a或c被定义的数据类型确定其输出结果及类型。,3.字符串常数 字符串常数是由一对双引号括起来的字符序列,字符串常数和字符常数是不同的,字符串常数总是以“0”结束。如果一个字符串常数为“welcome”,那么它在内存中占用连续8个内存字节。在编程时应注意变量类型的匹配,不能将字符串常数赋给字符变量。4.枚举常数 枚举常数是通过关键字enum来定义的。定义的格式为以enum开始,后跟
16、类型名和花括号。花括号内是要定义的枚举常数(又称为助记常数,该助记常数往往代表一个整型常数值),各常数之间用逗号分隔,最后以分号结束。,例如:enum COLORRED=150,BULE=200,GREEN,WHITE=400;其中,有一个枚举常数BLUE,代表200;GREEN没有被显式写出,在编译时其值自动被确定为201。如果没有显式地为枚举常量确定值,C+会为其自动确定,即花括号后的第一个枚举常数会被确定为0,其后的每个枚举常数的值为前一个枚举常数值加1。在下面程序中,企图用赋值语句给枚举变量赋值为不是定义枚举类型时规定的值,是不正确的。COLOR paintBULE;/正确 piant
17、200;/错误,因为200不是规定的枚举类型常数,5.常量定义 C+中,常量是代表固定值的变量,即表示变量的值已被固定。程序中如果想让变量内容初始化后一直保持不变,则可以将其定义成一个常量。本书对常量与常数进行了区分(这与其他书有所不同),常数代表了书写时的字面含义。常量定义的格式是:在关键字const后接变量名,然后是常数值,最后以分号结束该语句。例如:const float pi=3.1415926;,在定义了常量pi之后,就可以在程序中用pi来代替3.1415926。常量不能放在赋值语句的左边,即常量不能被赋值。常量定义中初始化的值可以是一个由常数和操作符构成的表达式。在程序运行之前就已
18、经知道了常量值,因此编译时就能求值。注意:该表达式中不能含有函数,例如:const int size=20*sizeof(int);/ok sizeof是运算符 const int number=max(23,34);/错误,6.引用 引用是变量的别名,用&符号来声明。对别名的存取就是对变量的存取。别名没有存储空间,对引用声明的同时需对其进行初始化。,例3.1 引用实例。int x=10;int/x=30,使用引用比C语言中用指针来实现两数交换容易理解且语句简洁。例如:void swap(int,3.2.4 输入/输出 1.输入/输出(I/O)的书写格式 I/O流是输入或输出的一系列字节。当程
19、序需要在屏幕上显示输出时,使用操作符“”从cin输入流中输入字符。,例3.2 I/O书写格式实例。#includevoid main()char ch;coutch;coutchendl;,程序运行结果为:input the character you want to print:a a cout代表I/O的输出对象(默认为屏幕),在例3.2中它输出一行提示语句;cin代表I/O的输入对象,在例3.2中从键盘输入了一个字符a,最后我们有一行输出语句输出所输入的字符。头文件iostream.h包含涉及cout和cin的一些必要的定义内容。在输入和输出时还可以使用控制符来控制输入/输出的格式,以满
20、足输入/输出的需要,表3-4中列出了常用输入/输出控制符。,表3-4 常用输入/输出控制符,3.2.5 表达式和语句 程序是一些按次序执行的语句,而大部分的语句是由表达式构成的。表达式和语句是C+的重要内容。表达式由操作符、操作数构成,其目的是用来说明一个计算过程。在C+中操作符的优先级和结合性等规则与C语言是完全一致的,使用方法与C语言中表达式的使用方法也是相同的。,C+中所有的操作运算都是通过表达式来实现的。由表达式组成的语句称为表达式语句,由一个表达式和一个分号组成。大多数表达式语句是赋值语句和函数调用语句。语句用来规定程序执行的控制流。复合语句又被称为块,它是一对花括号内的语句序列。C
21、+中的语句和C语言中的语句是大致相同的,其使用方法也是一样的,在本书中不再赘述。下面对过程化语句进行介绍。,1.过程化语句 语句按功能可分为两大类:第一大类用于描述计算机执行的操作运算,即操作语句;第二大类用于控制操作运算的执行顺序的控制语句,即流程控制语句。流程控制语句也被称为过程化语句。,图3-2 while语句的流程结构,1)while语句 while语句由4个部分组成:循环变量初始化、继续条件、循环体、改变循环变量的算法。while用于判断一个条件表达式,当条件成立的时候进入循环体,不满足这个条件则不进入循环体。while语句的流程结构如图3-2所示。,例3.3 while语句应用实例
22、。void main()int j=1;int sum;while(j=50)sum=sum+j;j+;coutsum=sumendl;,2)do-while 语句do-while语句的格式如下:do循环体while(条件表达式);,当流程到达do后,立即执行循环体语句,然后对条件表达式进行测试,如满足条件,则重复循环,否则退出,该语句结构至少使循环体执行一次。do-while语句的流程结构如图3-3所示。,图3-3 do-while语句的流程结构,例3.4 do-while语句应用实例。#includevoid main()int j,sum=0;j=1;dosum=sum+j;j+;whi
23、le(j=50),coutsum=sumendl;例3.3和例3.4都是求sum1+2+50的和的程序,它们使用了不同的循环控制语句,但结果是相同的。,3)for语句for语句也可以用来控制循环,for语句的格式如下:for(表达式1;表达式2;表达式3)循环体for语句的执行过程如下:(1)求解表达式1;(2)求解表达式2,若为0则结束循环转到(5);(3)若表达式2为真,则执行循环体,然后求解表达式3;(4)转回(2);(5)执行for语句下面的语句。,图3-4 for语句的流程结构,for语句的流程结构如图3-4所示。在使用for语句时,并不是每个表达式都必须赋值,并且每个表达式都可以省
24、略,但在省略表达式时,应该注意一些问题:在省略表达式1时,控制变量应该在使用之前的程序中被初始化;省略表达式2,即不进行判断而使循环不停的进行下去,这样在循环体中需要有跳出循环的控制语句,否则就会出现死循环;在省略表达式3时,应该注意必须另外设法使循环控制变量变化,以保证循环能正常结束。不仅每个表达式可以单独省略,而且它们可以同时省略。在省略表达式时,应注意表达式后面的分号不能省略。,例3.5 for语句应用实例。i=0;for(;i=10;)/分号不能省略sum+=i+;/求值的同时改变循环变量/省略所有的表达式i=0;for(;)sum+=i+;/求值的同时改变循环控制变量,if(i10)
25、/控制结束条件break;/当i大于10时循环结束,跳出循环体在本例中省略了表达式1和表达式3。,4)switch语句当要实现多分支选择语句时,就要用到switch语句。switch的格式如下:switch(表达式)case常量表达式1:执行语句1case常量表达式2:执行语句2case 常量表达式n:执行语句ndefault:执行语句n1,switch后面括号中的表达式只能是整型、字符型或枚举类型。case后面的常量表达式必须与表达式匹配,如果不匹配,则在编译时会出现错误。当表达式的值与某一个case后面常量表达式的值相等时,就执行case后面的语句,若没有与之匹配的常量表达式,则执行def
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计语言 基础

链接地址:https://www.31ppt.com/p-6435974.html