《1.面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《1.面向对象程序设计.ppt(26页珍藏版)》请在课桌文档上搜索。
1、面向对象程序设计,C+语言发展历史,自从1946年第一台电子数字计算机ENIAC问世以来,随着计算机应用领域的不断扩大,促进了计算机技术的高速发展,尤其是近年来计算机的硬件和软件都是日新月异。作为应用计算机的一种工具程序设计语言,得到不断的充实和完善。每年都有新的程序设计语言问世,老的程序设计语言不断地更新换代。,20世纪60年代,Martin Richards为计算机软件人员在开发系统软件时,作为记述语言使用而开发了BCPL语言(Basic Combined Programming Language)。1970年,Ken Thompson在继承BCPL语言的许多优点的基础上发明了实用的B语言
2、。到了1972年,贝尔实验室的Dennis Ritchie和Brian kernighan在B语言的基础上,作了进一步的充实和完善,设计出了C语言。当时,设计C语言是为了编写UNIX操作系统的。以后,C语言经过多次改进,并开始流行。C+是在C语言的基础上发展和完善的,而C是吸收了其它语言的优点逐步成为实用性很强的语言。,C语言的主要特点是:1、C语言是一种结构化的程序设计语言,语言本身简洁、使用灵活方便。既适用于设计和编写大的系统程序,又适用于编写小的控制程序,也适用科学计算。,2、它既有高级语言的特点,又具有汇编语言的特点。运算符丰富,除了提供对数据的算术逻辑运算外,还提供了二进制的位运算。
3、并且也提供了灵活的数据结构。用C语言编写的程序表述灵活方便,功能强大。用C语言开发的程序,其结构性好,目标程序质量高,程序执行效率高。,3、程序的可移植性好。用C语言在某一种型号的计算机上开发的程序,基本上可以不作修改,而直接移植到其它型号和不同档次的计算机上运行。,4、程序的语法结构不够严密,程序设计的自由度大。这对于比较精通C语言的程序设计者来说,可以设计出高质量的非常通用的程序。但对于初学者来说,要能比较熟练运用C语言来编写程序,并不是一件容易的事情。与其它高级语言相比而言,调试程序比较困难。往往是编好程序输入计算机后,编译时容易通过,而在执行时还会出错。但只要对C语言的语法规则真正领会
4、,编写程序及调试程序还是比较容易掌握的。,随着C语言应用的推广,C语言存在的一些缺陷或不足也开始流露出来,并受到大家的关注。如:C语言对数据类型检查的机制比较弱;缺少支持代码重用的结构;随着软件工程规模的扩大,难以适应开发特大型的程度等等。,为了克服C语言本身存在的缺点,并保持C语言简洁、高效,与汇编语言接近的特点,1980年,贝尔实验室的Bjarne Stroustrup博士及其同事对C语言进行了改进和扩充,并把Simula 67中类的概念引入到C中。并在1983年由Rick Maseitti提议正式命名为C+(C Plus Plus)。后来,又把运算符的重载、引用、虚函数等功能加入到C+中
5、,使C+的功能日趋完善。当前用得较为广泛的C+有:VC+(Visual C Plus Plus)、BC+(Borland C Plus Plus)、AT&T C+等。,简单的C+程序介绍,高级语言编译过程,源程序(文本文件)*.CPP,目标文件(二进制文件)*.OBJ,可执行文件(二进制文件)*.EXE,库文件(各种函数),在Vitual C+系统中,可直接从源程序编译连接至可执行程序,但依然要生成*.OBJ及*.EXE这两个文件。,F7,compile,link,一个简单的C+程序,#includevoid main(void)cout“I am a student.n”;/输出字符串,主函
6、数,函数体开始,函数体结束,输出流,在屏幕上打印引号内的字符串,分号,一条完整语句的结束符,本程序编译执行后,在DOS屏幕上打印出 I am a student.,包含文件,注释或说明,1.C+的基本数据类型 bool char int float double 五种基本数据类型VC+6.0中规定了:bool(1个字节)char(1个字节)int(4个字节)float(4个字节)double(8个字节),限定词unsigned unsigned(无符号)signed(有符号)整数类型int和char的首位通常是一个符号位,如果首位为0,数值是正数,否则数值为负。例如:char为一个字节8位,它
7、的数值范围为-128127,有一半被负数占用。unsigned char为一个字节8位,数值范围为0255。其他的int float double 类似。,2.C+的基本控制结构If(表达式)语句1 else 语句2 switch(表达式)case 常量表达式1:语句1 case 常量表达式n:语句n default:语句n+1,例如:/test.cpp#include using namespace std;int main()int day;cinday;switch(day)case 1:cout“Monday”endl;break;case 7:cout“Sunday”endl;bre
8、ak;default:cout“input error”endl;break;return 0;如输入为2 显示结果为 2 Tuesday,循环结构有三种:1)while(表达式)语句 2)do 语句 while(表达式)3)for(表达式1;表达式2;表达式3;)语句其他控制语句:break continue goto 注:goto语句的使用会破坏程序的 整体结构,注释:C+同样具有多行注释和单行注释能力/单行注释/*.*/多行注释,new和delete,运算符new和delete提供了动态存储分配和释放内存的功能。new type(分配变量)new typen(分配数组)并且new返回的是
9、一个指针 例如:int*p=new int int*p=new int10 释放内存空间 delete p(释放变量空间)或 delete p(释放数组空间),#includeusing namespace std;int main()int*p;p=new int;p=new int(10)*p=10;cout*p;delete p;return 0;,使用标准命名空间,问题:为什么在C语言中定义指针必须要 指定数据类型?,内联函数,在函数说明前冠以“inline”表示一个内联函数例如:inline int max(int a,int b)return(ab?a:b);C+编码有时需要定义许
10、多简单的小函数,对于这些小函数,函数调用的开销与花费在被调用函数上的时间相比变的很大。使用内联函数,例如在编译时,在调用max函数的地方用函数体代替,能够加快代码执行,减少调用开销。(注意:只有当内联函数包含很少语句的代 码时,才能执行展开),只读变量和只读参数,1.const表示变量和参数的只读。const int num=5;const char ch=“hello”;/只读字符串 num=6/非法 ch3=w/非法2.const与指针一起使用:1)指向常量的指针 const char*p=“bcdefg”;p3=a;/非法 p=ch;/合法,const char*step3=“left”
11、,”right”,midle”;step2=“skip”;/?step21=w/?2)常指针 char*const p=“hello”;/常指针 p3=a/合法 p=“ddddd”/非法char*const step3=“left”,”right”,midle”;step2=“skip”;/?step21=w/?,3)指向常量的常指针 即二者都要申明const const char*const p=“hello”;p3=a/非法 p=“ddddd”/非法,函数重载,传统的编程思想中,一个函数执行为其编写的特定的任务。C+支持函数重载:两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同
12、,编译器根据实参和形参的类型及个数自动确定调用哪个函数。,形参类型不同:int add(int x,int y)float add(float x,float y)形参个数不同:int add(int x,int y)int add(int x,int y,int z)注意:编译器不能以返回值来区分函数 int add(int x,float y)float add(int x,float y)/非法,问题:int add(int x,int y)void add(int x,int y)/是否冲突?void function_1(char*p)void function_1(char x)实际上每个重载函数在内部通过编译器编译时,都带有一个反映函数特征标记的名字。因此,在一个已经编译的程序中,没有同名的函数。,考虑函数重载的实际应用意义(联系多态性:以银行帐户对象为例),