第一次课面向对象引论_第1页
第一次课面向对象引论_第2页
第一次课面向对象引论_第3页
第一次课面向对象引论_第4页
第一次课面向对象引论_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、从从C到到C+C+起源主要过渡特性面向过程与面向对象n C+发展历史简介发展历史简介 随着面向对象程序设计思想的日益普及,很多支持面向对象程序设计方法语言也相继出现了,C+就是这样一种语言。C+是Bjarne Stroustrup于1980年在AT&T的贝尔实验室开发的一种语言,它是C语言的超集和扩展,是在C语言的基础上扩充了面向对象的语言成分而形成的。最初这种扩展后的语言称为带类(class)的C语言,1983年才被正式称为C+语言。n Bjarne Stroustrup在设计和实现C+语言时,既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有

2、强大的编程功能,编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。n C+语言由C语言扩展而来,同时它又对C语言的发展产生了一定的影响,ANSI C语言在标准化过程中吸收了C+语言中某些语言成分。C+与与C语言语言C+语言是C语言的超集,与C语言具有良好的兼容性,使用C语言编写的程序几乎可以不加修改直接在C+语言编译环境下进行编译。 C+与与C语言语言nC+语言对C语言在结构化方面做了一定程度的扩展:C+与与C语言语言(1)头文件与流(2)函数重载)函数重载C+语言可实现函数重载,即多个函数在同一作用域可以用相同的函数名,编译器在编译时可以根据实参的类型来选

3、择应该调用的函数。在C+中,对相同功能但参数类型不同的函数可以使用相同的函数名,在调用时无需记忆多个函数名,而由编译器根据参数类型选择。#includeusing namespace std;int compare(int x,int y);int compare(float x,float y);void main()int x=5,y=6;double a=1,b=2;float c=1,d=2;coutcompare(x,y)compare(a,b)y) return 1; else return 0;int compare(float x,float y) if(xy) return

4、0; else return 1; C+与与C语言语言(3 3) 缺省参数缺省参数 在C+语言中,函数参数允许使用缺省值。当函数调用时,若给出的参数个数少于函数表中参数的总数时,则所缺参数自动取函数参数表中设置的缺省值。 下面是一个参数缺省的例子:void f(int x, int y=10)/此处省略函数体内容 该程序定义了一个函数f( ),它有两个整形参数,第二个参数缺省值为10。如调用语句:f(2);就相当于f(2,10)。函数可以有多个缺省参数,但应注意只能从右往左缺省,例如: int f1(int x, int y=0, int z=0);/正确 int f2(int x, int

5、y=0, int z); /错误C+与与C语言语言(4 4) 注释注释 在C+语言中的注释有两种:n行注释:/n块注释:/* */C+与与C语言语言 (5 5)枚举名与结构名)枚举名与结构名 C+中枚举可以命名,一个枚举名就是一个类型名字,因此不必在枚举类型名前加标识符enum;同样,定义的结构就是一个用户定义的数据类型,在结构名前也不必加标识符struct。例如下面定义一个结构类型:struct studentchar name10;int number;int page;则在定义该结构类型变量时可以使用如下方式:student s1, s2;C+与与C语言语言(6 6)作用域标识符)作用域

6、标识符在C+语言中增加了作用域标识符(或称为名字解析运算符):,用以解决局部变量名与全局变量的同名重复问题。在局部变量的作用域内可用作用域标识符:对被其隐藏的同名全局变量进行访问。下面是一个简单的例子:int x=0;void test(int x)x=5; /此处引用局部变量:x=9;/此处引用全局变量C+与与C语言语言(7)程序块中的变量声明 将几个语句用大括号 组合起来就构成了一个程序块。在C语言中,变量的声明只允许出现在程序块的开始,而在C+语言中变量声明可以出现在任何位置。如下面的程序片断:for(int i=0; i10; i+) sum+=i; 在for语句的第一个表达式中定义变

7、量i作循环变量。C+与与C语言语言 (8)常量 C+语言中增加了常量类型用标识符const声明,其值在作用域内保持不变,ANSI C标准现在已引进了const修饰符。如: const int maxSize=128; const int intArray =1,2,3,4,5,6; 也可以声明常量指针,此时该指针不能指向其它对象,例如: char * const str=Hello, world! ; 作了以上声明后,下面的赋值是非法的: str=Hi, there! ; 另外,还可以声明一个指向常量,例如: const char *str2=Hello, world; 此时指针str2所指向

8、的对象不能被改变,但str2本身可以被改变。C+与与C语言语言(9)引用n引用必须初始化。引用总是指向在初始化时被指定的对象,以后不能改变。n不存在指向空值的引用。所以在使用引用之前不需要测试它的合法性。int a;int &b=a;C+与与C语言语言C+与与C语言语言nC+语言与C语言最显著的区别是它的面向对象的特征,引进了类与对象的概念。属性:属性: 姓名;姓名; 性别;性别;动作:动作: 跑;跑; 跳;跳; 说话;说话;人人属性:属性: 姓名姓名:Sandy 性别性别:F动作:动作: 跑;跑; 跳;跳; 说话;说话;Sandy属性:属性: 姓名姓名: Jack 性别性别:M动作:

9、动作: 跑;跑; 跳;跳; 说话;说话;Jack结构体怎么实现?属性:属性: 姓名;姓名; 性别;性别; 身高身高; 动作:动作: 说话;说话; 吃饭;吃饭; 。person属性:属性: 姓名姓名 性别性别 身高身高 职务职务动作:动作: 说话;说话; 吃饭;吃饭; 教课;教课; Teacher属性:属性: 姓名姓名 性别性别 身高身高 学号学号动作:动作: 说话;说话; 吃饭;吃饭; 上课;上课; Student属性:属性: 姓名:小王;姓名:小王; 性别:性别:M 身高:身高:20; 学号:学号:0001;动作:动作: 说话;说话; 吃饭;吃饭; 上课;上课;小王小王属性:属性: 姓名姓名

10、 性别性别 身高身高 学号学号动作:动作: 说话;说话; 吃饭;吃饭; 上课;上课; Student属性:属性: 姓名姓名 性别性别 身高身高 职务职务动作:动作: 说话;说话; 吃饭;吃饭; 教课;教课; Teacher属性:属性: 姓名姓名:大王;大王; 性别:性别:M; 身高:身高:178; 职务:教师职务:教师动作:动作: 说话;说话; 吃饭;吃饭; 教课;教课; 大王大王人人学生学生教师教师小王小王大王大王对象对象 = 算法算法 数据结构数据结构程序程序 = (对象对象+对象对象+对象对象+) + 消息消息 类与类与对象对象问题:问题:输入圆的半径,求圆的周长和面积输入圆的半径,求圆

11、的周长和面积 数据描述:数据描述:半径,周长,面积均用实型数表示半径,周长,面积均用实型数表示数据处理数据处理:输入半径输入半径 r;计算周长计算周长 = 2*r ;计算面积计算面积 = pi * r2 ;输出半径,周长,面积;输出半径,周长,面积;面向过程编程的方法面向过程编程的方法#include void f(double r)coutthe radius is: rendl;coutthe area is: r*r*3.14endl;coutthe girth is: 2*r*3.14endl;return ;int main( )double r;coutinput the radi

12、usr;f(r);return 0; 一个简单的一个简单的C+C+程序程序用面向对象方法编程用面向对象方法编程 分析分析“圆圆” ”是抽象的类类型是抽象的类类型建立具体的圆(对象)建立具体的圆(对象)半径?半径?圆的周长圆的周长 ?圆的圆的面积面积 ? 问题:问题:输入圆的半径,求圆的周长和面积输入圆的半径,求圆的周长和面积 实例化实例化用面向对象方法编程用面向对象方法编程,求圆的周长和面积,求圆的周长和面积 分析分析圆类圆类 数据成员数据成员 半径半径 成员函数成员函数 置半径值置半径值 求圆的半径求圆的半径 求周长求周长 求面积求面积实例化实例化#include class Circled

13、ouble radius;public:void setradius(double r)radius=r;void getradius()coutthe radius is: radiusendl;void getgirth()coutthe girth is: radius*2*3.14endl;void getarea()coutthe area is: 3.14*radius*radiusendl;int main( )Circle c;c.setradius(1);c.getradius();c.getgirth();c.getarea();return 0;面向对象面向对象 vs 面向过程设计面向过程设计 面向过程面向过程面向对象面向对象程序执行程序执行步骤步骤通常按顺序执行通常按顺序执行在对象内执行在对象内执行独立其他对象独立其他对象数据项数据项变量变量;独立独立;位于程序中位于程序中属性属性;属于一个对象属于一个对象;随对象而变随对象而变,具有某种行为具有某种行为激活方式激活方式调用函数调用函数发消息给对象发消息给对象数据与函数数据与函数保持分离保持分离结合成对象结合成对象事件发生事件发生函数执行时函数执行时方法执行时方法执行时活动涉及活动涉及函数和参数函数和参数对象对象,消息和参数消息和参数C+中的数据类型就是对一批具体

温馨提示

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

评论

0/150

提交评论