




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+程序设计程序设计 计算机科学与技术系计算机科学与技术系 王欣王欣联系方式联系方式手机:手机王欣王欣) 邮箱:邮箱:预祝大家学习愉快、成绩优良!预祝大家学习愉快、成绩优良!教学安排教学安排课程课程: 周学时周学时: 4 周数周数:14特点特点: 理论理论36+实践实践20成绩评定成绩评定: 出勤出勤+上机上机+作业作业+测验测验教材及参考资料教材及参考资料 教材:朱立华教材:朱立华. 面向对象程序设计及面向对象程序设计及C+(第第2版版).人民邮电出版社人民邮电出版社参考教材:参考教材:1谭浩强谭浩强C+程序设计清华大学出版社程序设计清华大学出版社2钱能钱能C+程序
2、设计教程清华大学出版社程序设计教程清华大学出版社3吴文虎程序设计基础清华大学出版社吴文虎程序设计基础清华大学出版社4郑莉郑莉C+语言程序设计清华大学出版社语言程序设计清华大学出版社5罗建军罗建军C+程序设计教程高教出版社程序设计教程高教出版社主要内容主要内容第第1章章 面向对象程序设计概述面向对象程序设计概述第第2章章 C+对对C的改进及扩展的改进及扩展第第3章章 类与对象类与对象第第4章章 类中数据的共享与保护类中数据的共享与保护第第5章章 类与类之间的关系类与类之间的关系第第6章章 多态性多态性第第7章章 模板模板第第8章章 C+语言的流类库与输入输出控制语言的流类库与输入输出控制第第9章
3、章 面向对象编程初步面向对象编程初步第第1章章 面向对象程序设计及面向对象程序设计及C+概述概述 第第1章章 面向对象程序设计概述面向对象程序设计概述1.1 面向过程与面向对象面向过程与面向对象1.2 面向对象的基本概念及特征面向对象的基本概念及特征1.3 C+语言概述语言概述1.4 C+程序及其开发程序及其开发1.1.1 面向过程的程序设计面向过程的程序设计核心思想:核心思想:功能分解功能分解实现方法:实现方法:自顶向下、逐步求精自顶向下、逐步求精优点:优点:直观有条理、结构清晰、模块化强直观有条理、结构清晰、模块化强。缺点:缺点:代码的可重用性差、模块之间依赖性强、不利代码的可重用性差、模
4、块之间依赖性强、不利于代码的维护和扩充。于代码的维护和扩充。数据结构对整个程序公开,数据安全性差数据结构对整个程序公开,数据安全性差 1.1.1 面向过程的程序设计面向过程的程序设计数据数据与对数据与对数据处理处理的过程相分离,其弊端的过程相分离,其弊端表现在:表现在:一旦一旦数据结构数据结构改变,与之相关的改变,与之相关的所所有操作有操作都必须改动都必须改动 ,代码修改量大,代码修改量大例如:一个简单的学生成绩管理系统用来例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。管理若干个学生的信息。每个学生的信息包括学号、姓名、某门课的平时成每个学生的信息包括学号、姓名、某门课的平时成绩、
5、期末成绩、总评成绩和名次,绩、期末成绩、总评成绩和名次,总评成绩总评成绩= =平时成绩平时成绩* *0.3+0.3+期末成绩期末成绩* *0.70.7。主要操作:成绩的录入、计算、排名、输出。主要操作:成绩的录入、计算、排名、输出。 1.1.1 面向过程的程序设计面向过程的程序设计数据结构数据结构定义一个结构体定义一个结构体 typedef struct studentScore char number10; /学号学号 char name10; /姓名姓名 int dailyScore ; /平时成绩平时成绩 int finalScore; /期末成绩期末成绩 float generalSc
6、ore; /总评成绩总评成绩 int place; /名次名次 SS; /结构体变量名结构体变量名 C Cint experiScore; /后增项实验成绩后增项实验成绩1.1.1 面向过程的程序设计面向过程的程序设计操作数据的几个函数:操作数据的几个函数:void readData(SS stu ,int n); /输入输入n n个学生的学号、姓名、平时及期末成绩个学生的学号、姓名、平时及期末成绩void calcuScore(SS stu ,int n); /计算计算n n个学生的总评成绩个学生的总评成绩void sortScore(SS stu ,int n);/根据总评成绩排名,得出每
7、个学生的根据总评成绩排名,得出每个学生的placeplace值值void printOut(SS stu ,int n); /按一定的格式输出按一定的格式输出n n个学生的完整信息个学生的完整信息1.1.1 面向过程的程序设计面向过程的程序设计现在,需求改变了:现在,需求改变了:在在C C语言课程中,需要增加语言课程中,需要增加实验成绩实验成绩这一项,学生这一项,学生的的总评成绩总评成绩计算方法修改为:计算方法修改为:总评成绩总评成绩=平时成绩平时成绩*0.2+实验成绩实验成绩*0.2+期末成绩期末成绩*0.6。显然,类型显然,类型SSSS中需要增加一个数据项中需要增加一个数据项 int ex
8、periScore; 表示实验成绩。表示实验成绩。G G这时,一些函数的代码要作相应地修改。这时,一些函数的代码要作相应地修改。1.1.1 面向过程的程序设计面向过程的程序设计面向过程的程序设计的范型是:面向过程的程序设计的范型是:程序程序= =算法算法+ +数据结构数据结构数据与对数据操作的分离数据与对数据操作的分离导致软件维护导致软件维护( (包括软包括软件的测试、调试和升级件的测试、调试和升级) )的困难。的困难。一种新型的程序设计方法一种新型的程序设计方法面向对象的程面向对象的程序设计方法序设计方法应运而生,它很好地解决了以上应运而生,它很好地解决了以上问题。问题。 1.1.2 面向对
9、象的程序设计面向对象的程序设计核心思想:以核心思想:以数据数据为核心,将为核心,将数据数据以及对以及对这些数据的这些数据的操作操作封装为一个整体封装为一个整体 实现方法:以实现方法:以类封装类封装,以类的,以类的对象对象作为程作为程序的序的基本元素基本元素,通过向对象,通过向对象发送消息发送消息,进而,进而由对象启动相关的由对象启动相关的方法方法完成各种功能完成各种功能优点:优点:数据安全数据安全、软件可靠软件可靠、代码可重性代码可重性可维护性强可维护性强缺点:缺点:代码的效率有时会降低代码的效率有时会降低1.1.2 面向对象的程序设计面向对象的程序设计类与对象是抽象与具体的关系类与对象是抽象
10、与具体的关系 类包含:类包含:对象必然对象必然属于属于某一个类,且各有一个某一个类,且各有一个名字名字(对对象名象名),有不同的数据成员值,可以进行相同,有不同的数据成员值,可以进行相同的行为。的行为。类与对象的关系类与对象的关系: 相当于相当于类型和变量的关系类型和变量的关系成员函数:成员函数: 数据成员:数据成员: -类对象的静态特性类对象的静态特性 -类对象的动态特性类对象的动态特性 1.1.2 面向对象的程序设计面向对象的程序设计例如:例如:人类人类静态特性:静态特性: 动态特性:动态特性: 姓名姓名 性别性别 年龄年龄 身高身高体重体重身份身份吃吃穿穿住住行行学习学习工作工作Pers
11、on类类 数据成员数据成员 成员函数成员函数char name20 char sex8 int age double height double weight char identity void eat(); void dress(); void reside(); void walk(); void study(); void work(); 类对象名类对象名: :teacher1 张虹张虹 女女 25 1.70 55.0 教师教师 1.1.2 面向对象的程序设计面向对象的程序设计前面成绩管理的例子,将结构体改造成一个类前面成绩管理的例子,将结构体改造成一个类SSSS,其定义如下:其定义如
12、下:class SS private: char number10; char name10; int dailyScore; int finalScore ; float generalScore; int place ; public: /接口对外公开接口对外公开void readData( );void calcuScore( );void printOut( ); ; ; 1.1.2 面向对象的程序设计面向对象的程序设计 此时的主函数代码为:此时的主函数代码为:int main( ) SS s,t; s.readData( ); t.readData( ); s.calcuScore(
13、 ); t.calcuScore( ); s.printOut(); t.printOut(); return 0;若在类若在类SS中增加中增加 int experiScore; 表示实验表示实验成绩,总评成绩计算方法改变,则类的成成绩,总评成绩计算方法改变,则类的成员函数代码需做相应地改造,但主函数的员函数代码需做相应地改造,但主函数的代码代码不需做任何变动。不需做任何变动。 /定义定义SS类型的两个学生对象,对象名为类型的两个学生对象,对象名为s和和t/向对象发送消息,对象接收消息后调用成员向对象发送消息,对象接收消息后调用成员函数函数1.1.2 面向对象的程序设计面向对象的程序设计几个结
14、论:几个结论:(1)面向对象的程序设计由类的定义和类的使用两面向对象的程序设计由类的定义和类的使用两部分组成部分组成,类的使用表现为类对象的定义与功能类的使用表现为类对象的定义与功能调用。调用。(2)程序中的一切操作都是通过向对象发送消息来程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法完实现的,对象接收到消息后,启动有关方法完成相应的操作。成相应的操作。 (3)向对象发送消息的形式是:向对象发送消息的形式是:对象名对象名.成员函数名成员函数名(实参表实参表) 面向对象的程序设计范型为:面向对象的程序设计范型为: 程序程序=对象对象/类类+对象对象/类类+ 对象对
15、象/类类 =数据数据+操作操作1.1.2 面向对象的程序设计面向对象的程序设计面向对象程序设计中最重要的两个概念:面向对象程序设计中最重要的两个概念:类类和对象和对象面向对象程序设计中最突出的特征是:面向对象程序设计中最突出的特征是:封装封装性、继承性和多态性性、继承性和多态性面向对象的程序设计围绕面向对象的程序设计围绕类的定义类的定义和和类的使类的使用用展开的展开的 第第1章章 面向对象程序设计概述面向对象程序设计概述1.1 面向过程与面向对象面向过程与面向对象1.2 面向对象的基本概念及特征面向对象的基本概念及特征1.3 C+语言概述语言概述1.4 C+程序及其开发程序及其开发1.2.1
16、类与对象类与对象类类是具有相同属性和操作的一组对象的集合,是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象它为属于该类的全部对象提供了统一的抽象描述。描述。 对象对象是对问题域中客观存在事物的抽象,是是对问题域中客观存在事物的抽象,是类的具体的个体,也称为类的一个实例。类的具体的个体,也称为类的一个实例。 类与对象类与对象是一对抽象与具体的关系是一对抽象与具体的关系例例1:教师是一个类,李老师则是教师类的:教师是一个类,李老师则是教师类的一个对象。一个对象。例例2:上面的:上面的SS类,主函数中定义了类,主函数中定义了2个对象,个对象,对象名分别为对象名分别为s和和
17、t。 1.2.1 类与对象类与对象实质实质存在期存在期占内存?占内存?数据成员数据成员类类一种类型一种类型编译时编译时否否静态属性静态属性对象对象一个变量一个变量运行时运行时是是有属性值有属性值类与对象的比较类与对象的比较设计类是为了使用类,使用类的方式是定义该类的变设计类是为了使用类,使用类的方式是定义该类的变量量对象,通过对象实现特定功能;对象一定属于对象,通过对象实现特定功能;对象一定属于类,它具有什么样的静态属性值、可以有哪些动态行类,它具有什么样的静态属性值、可以有哪些动态行为取决于类的设计。为取决于类的设计。1.2.1 类与对象类与对象对象有以下几个特征:对象有以下几个特征:(1)
18、必须属于某一个类,必须有一个区别于同类必须属于某一个类,必须有一个区别于同类型其他对象的对象名。型其他对象的对象名。 (2)对象有自己的属性值,即每个对象的数据成对象有自己的属性值,即每个对象的数据成员有特定的值来标识该对象的静态特性。员有特定的值来标识该对象的静态特性。 (3)对象有一组类所规定的操作,每一个操作决对象有一组类所规定的操作,每一个操作决定对象的一种动态行为,通过定对象的一种动态行为,通过对象名对象名. .成员成员函数名函数名( (实际参数表实际参数表) )的形式实施这种行为。的形式实施这种行为。1.2.2 封装性封装性封装性是面向对象程序设计的第一大特征,封装性是面向对象程序
19、设计的第一大特征,这一特性使得面向对象程序设计具有安全性这一特性使得面向对象程序设计具有安全性和可靠性。和可靠性。 生活中的封装例:电子表生活中的封装例:电子表对外接口:面板上的各种控制按钮对外接口:面板上的各种控制按钮封装起来的:各种元器件、按下某按钮时其封装起来的:各种元器件、按下某按钮时其内部的元器件状态如何改变、如何参与工作内部的元器件状态如何改变、如何参与工作等细节等细节 1.2.2 封装性封装性类中封装的成员类中封装的成员:private属性的数据成员和成员函数属性的数据成员和成员函数protected属性的数据成员和成员函数属性的数据成员和成员函数public属性的成员函数具体实
20、现代码属性的成员函数具体实现代码类中未被封装的成员类中未被封装的成员:public属性的数据成员属性的数据成员public属性的成员函数原型属性的成员函数原型对于类中封装的成员不可以用形如对于类中封装的成员不可以用形如对象名对象名.成成员员的形式直接访问,这种形式只可以访问未的形式直接访问,这种形式只可以访问未被封装的成员。被封装的成员。 1.2.2 封装性封装性例如前面讲过的学生类例如前面讲过的学生类SS中:中:封装的信息有封装的信息有(1)所有的)所有的private数据成员:数据成员:number、name、dailyScore、finalScore、generalScore、 plac
21、e 。 (3)所有的)所有的public成员函数的实现细节:成员函数的实现细节: void readData()() void calcuScore()() void printOut()() 公开的接口有:以上公开的接口有:以上3个成员函数的原型个成员函数的原型1.2.2 封装性封装性因此在因此在main()函数中通过类的对象可以直接函数中通过类的对象可以直接访问类的接口成员:访问类的接口成员:s. readData();();s. calcuScore();();s.printOut()() ;封装的封装的单位单位实际上是属于某一个类的实际上是属于某一个类的对象对象。因此,在封装之前需要仔
22、细做好因此,在封装之前需要仔细做好数据抽象和数据抽象和功能抽象功能抽象的工作,明确类中哪些成员需要信的工作,明确类中哪些成员需要信息隐藏,哪些成员应该对外公开。息隐藏,哪些成员应该对外公开。 1.2.3 继承性继承性继承性继承性是面向对象程序设计的是面向对象程序设计的第二大第二大特征,特征,是面向对象的程序设计提高是面向对象的程序设计提高代码重用代码重用性的重性的重要措施要措施 。继承表现了继承表现了特殊类特殊类与与一般类一般类之间的之间的上下分层上下分层关系,这种机制为程序员提供了一种组织、关系,这种机制为程序员提供了一种组织、构造和重用类的手段。构造和重用类的手段。 继承使一个类继承使一个
23、类(称为称为基类或父类基类或父类)的数据成员的数据成员和成员函数能被另一个类和成员函数能被另一个类(称为称为派生类或子类派生类或子类)重用。重用。 1.2.3 继承性继承性派生类中成员的构成:派生类中成员的构成:(1)从基类直接继承的数据成员和成员函数)从基类直接继承的数据成员和成员函数(2)派生类中新增加的数据成员和成员函数)派生类中新增加的数据成员和成员函数(3)对基类中某些成员的改造)对基类中某些成员的改造 继承的优点:可以避免公共代码的重复开发,继承的优点:可以避免公共代码的重复开发,减少代码和数据冗余。减少代码和数据冗余。 1.2.3 继承性继承性类继承关系举例:类继承关系举例:学生
24、类学生类大学生类大学生类职工类职工类在职大学生类在职大学生类以上为一个多层次的类继承关系,从继承源以上为一个多层次的类继承关系,从继承源上分,可以有上分,可以有单一继承单一继承(如图中如图中大学生类大学生类对对学生类学生类的继承的继承)和多重继承和多重继承(如图中如图中在职大学在职大学生类生类)两种。两种。1.2.4 多态性多态性 多态性多态性是面向对象程序设计的是面向对象程序设计的第三大第三大重要特重要特征。面向对象程序设计的多态性指的是征。面向对象程序设计的多态性指的是一种一种行为行为对应着对应着多种不同的实现多种不同的实现。生活中的多态性举例:生活中的多态性举例: “意思意思的意思是什么
25、意思意思意思的意思是什么意思”?多态性有两种:多态性有两种:静态多态性静态多态性(也称编译时的多也称编译时的多态性态性)和和动态多态性动态多态性(也称运行时的多态性也称运行时的多态性)。1.2.4 多态性多态性多态性的意义:用同一个接口实现不同的操多态性的意义:用同一个接口实现不同的操作,直接使用类来进行程序开发非常方便。作,直接使用类来进行程序开发非常方便。例如,为例如,为求面积求面积,在三角形类、圆形类、正,在三角形类、圆形类、正方形类、长方形类中都定义了函数方形类、长方形类中都定义了函数getArea()。()。显然,为求相应图形的面积,实现的显然,为求相应图形的面积,实现的代码不一样代
26、码不一样。但用户在使用这些类的对象求。但用户在使用这些类的对象求面积时不必关心实现细节,直接调用该成员面积时不必关心实现细节,直接调用该成员函数就可以了。函数就可以了。 第第1章章 面向对象程序设计概述面向对象程序设计概述1.1 面向过程与面向对象面向过程与面向对象1.2 面向对象的基本概念及特征面向对象的基本概念及特征1.3 C+语言概述语言概述1.4 C+程序及其开发程序及其开发 Bjarne Stroustrup,C+语言的设计者和第语言的设计者和第一位实现者,被称之为一位实现者,被称之为“C+之父之父”,1950年年出生于丹麦奥尔胡斯市,出生于丹麦奥尔胡斯市,在奥尔胡斯大学获得硕在奥尔
27、胡斯大学获得硕士学位,在英国剑桥大士学位,在英国剑桥大学获得博士学位。学获得博士学位。1.3.1 C+语言支持面向对象的程序设计语言支持面向对象的程序设计 C+语言语言的研发始于的研发始于1980年,最初的成果称年,最初的成果称为为“带类的带类的C”,1983年正式取名为年正式取名为C+,在,在经历了经历了3次修订后,于次修订后,于1994年制定了年制定了ANSI C+标准的草案,以后又经过不断完善,成标准的草案,以后又经过不断完善,成为目前的为目前的C+,C+仍在不断地发展。仍在不断地发展。C+是同时支持面向过程程序设计和面向对是同时支持面向过程程序设计和面向对象程序设计的象程序设计的混合型
28、语言混合型语言,是目前应用,是目前应用最为最为广泛广泛的高级程序设计语言之一。的高级程序设计语言之一。 1.3.1 C+语言支持面向对象的程序设计语言支持面向对象的程序设计 面向对象的程序设计语言应该具有以下几个面向对象的程序设计语言应该具有以下几个特点特点 :(1)支持对象的概念及对象所有的特点)支持对象的概念及对象所有的特点 (2)要求对象属于类)要求对象属于类 (3)提供类的继承机制)提供类的继承机制 1.3.1 C+语言支持面向对象的程序设计语言支持面向对象的程序设计 C+语言支持面向对象的编程表现在以下语言支持面向对象的编程表现在以下3个方面:个方面:支持封装性:支持封装性:C+语言
29、允许使用类和对象。类是语言允许使用类和对象。类是支持封装的工具,对象是封装的实体支持封装的工具,对象是封装的实体 。支持继承性支持继承性 :C+语言同时支持单一继承和多语言同时支持单一继承和多重继承重继承 ,实现了抽象和共享机制。,实现了抽象和共享机制。 支持多态性支持多态性 :C+语言同时支持静态多态性和语言同时支持静态多态性和动态多态性动态多态性 1.3.2 C+语言与语言与C语言的关系语言的关系C+语言继承了语言继承了C语言语言 :C语言是语言是C+语言的一个子集。语言的一个子集。C语言的词法、语言的词法、语法和其他规则都可以用到语法和其他规则都可以用到C+语言中。语言中。 C+语言保持
30、了语言保持了C语言简练明了的风格,也保留语言简练明了的风格,也保留了了C语言面向过程的特性。语言面向过程的特性。在利用在利用C+进行面向过程的程序设计时,可以有进行面向过程的程序设计时,可以有多种方案,可以完全使用多种方案,可以完全使用C语言风格,但是建议语言风格,但是建议使用使用C+语言风格更为方便语言风格更为方便1.3.2 C+语言与语言与C语言的关系语言的关系C+语言改进了语言改进了C语言语言 :C+语言虽然保留了语言虽然保留了C语言的风格和特点,但又语言的风格和特点,但又针对针对C语言的某些不足做了改进语言的某些不足做了改进 例如:提供了更方便的输入例如:提供了更方便的输入/输出方法、灵活的输出方法、灵活的const关键字的应用、新增引用的灵活应用、内关键字的应用、新增引用的灵活应用、内联函数、函数重载、更方便的动态内存空间空联函数、函数重载、更方便的动态内存空间空间的管理等等。间的管理等等。第第2章将具体介绍章将具体介绍C+在面向过程的程序设计方在面向过程的程序设计方面对面对C语言的改进和扩充。语言的改进和扩充。1.3.3 其他面向对象的程序设计语言其他面向对象的程序设计语言 从从20世纪世纪60年代开始,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小企业劳动用工合同
- 夏令营代理商合作协议新
- 买卖合作协议合同
- 产品销售数据类表格
- 美甲店装修施工方案模板
- TCSG 13-2024 高纯工业品氟化锂
- 《大数据技术导论》-课程标准
- 布帘施工方案
- 水利水电施工方案
- 预制桩钢平台基础施工方案
- 数学家华罗庚课件
- 彩票风险评估与控制
- 片上互连优化与总线接口设计
- 2024年中国包子行业发展前景及投资前景预测报告(智研咨询)
- 西方经济学考试题库(含参考答案)
- 2024年全国职业院校技能大赛高职组(婴幼儿健康养育照护赛项)考试题库(含答案)
- 学校食堂餐饮服务投标方案(技术方案)
- 国企集团公司各岗位廉洁风险点防控表格(廉政)范本
- 中医师承跟师笔记50篇
- 四年级语文《乡下人家》作业设计
- 儿童健康产业行业研究报告
评论
0/150
提交评论