面向对象程序设计及C++ 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 朱立华 俞琼 第1章_面向对象的程序设计及C++概述new

上传人:E**** 文档编号:89494833 上传时间:2019-05-25 格式:PPT 页数:45 大小:696.50KB
返回 下载 相关 举报
面向对象程序设计及C++ 第2版  工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱立华 俞琼 第1章_面向对象的程序设计及C++概述new_第1页
第1页 / 共45页
面向对象程序设计及C++ 第2版  工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱立华 俞琼 第1章_面向对象的程序设计及C++概述new_第2页
第2页 / 共45页
面向对象程序设计及C++ 第2版  工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱立华 俞琼 第1章_面向对象的程序设计及C++概述new_第3页
第3页 / 共45页
面向对象程序设计及C++ 第2版  工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱立华 俞琼 第1章_面向对象的程序设计及C++概述new_第4页
第4页 / 共45页
面向对象程序设计及C++ 第2版  工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者  朱立华 俞琼 第1章_面向对象的程序设计及C++概述new_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《面向对象程序设计及C++ 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 朱立华 俞琼 第1章_面向对象的程序设计及C++概述new》由会员分享,可在线阅读,更多相关《面向对象程序设计及C++ 第2版 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 朱立华 俞琼 第1章_面向对象的程序设计及C++概述new(45页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计及C+,主讲:,第1章 面向对象程序设计及C+概述,面向对象程序设计及C+,本章作业,作业本:本章习题:一、二、三(1、2、5) 或: 网上自测,本章内容提要,面向过程与面向对象 面向对象的基本概念及特征 C+语言概述 C+程序及其开发 本章小结,1.1.1 面向过程的程序设计,核心思想:功能分解 实现方法:自顶向下、逐步求精 优点:直观有条理、结构清晰、模块化强。 缺点: 代码的可重用性差、模块之间依赖性强、不利于代码的维护和扩充。 数据结构对整个程序公开,数据安全性差,1.1.1 面向过程的程序设计,数据与对数据处理的过程相分离,其弊端表现在:一旦数据结构改变,与之相关的所

2、有操作都必须改动 ,代码修改量大 例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。 每个学生的信息包括学号、姓名、某门课的平时成绩、期末成绩、总评成绩和名次, 总评成绩=平时成绩*0.3+期末成绩*0.7。 主要操作:成绩的录入、计算、排名、输出。,1.1.1 面向过程的程序设计,数据结构定义一个结构体 typedef struct studentScore char number10; /学号 char name10; /姓名 int dailyScore ; /平时成绩 int finalScore; /期末成绩 float generalScore; /总评成绩 int pla

3、ce; /名次 SS; /结构体变量名 C,int experiScore; /后增项实验成绩,1.1.1 面向过程的程序设计,操作数据的几个函数: void readData(SS stu ,int n); /输入n个学生的学号、姓名、平时及期末成绩 void calcuScore(SS stu ,int n); /计算n个学生的总评成绩 void sortScore(SS stu ,int n); /根据总评成绩排名,得出每个学生的place值 void printOut(SS stu ,int n); /按一定的格式输出n个学生的完整信息,1.1.1 面向过程的程序设计,现在,需求改变了

4、: 在C语言课程中,需要增加实验成绩这一项,学生的总评成绩计算方法修改为: 总评成绩=平时成绩*0.2+实验成绩*0.2+期末成绩*0.6。 显然,类型SS中需要增加一个数据项 int experiScore; 表示实验成绩。G 同时,所有的函数代码都应该作相应地修改,1.1.1 面向过程的程序设计,面向过程的程序设计的范型是: 程序=算法+数据结构 数据与对数据操作的分离导致软件维护(包括软件的测试、调试和升级)的困难。 一种新型的程序设计方法面向对象的程序设计方法应运而生,它很好地解决了以上问题。,1.1.2 面向对象的程序设计,核心思想:以数据为核心,将数据以及对这些数据的操作封装为一个

5、整体 实现方法:以类封装,以类的对象作为程序的基本元素,通过向对象发送消息,进而由对象启动相关的方法完成各种功能 优点:数据安全、软件可靠、代码可重性可维护性强 缺点:代码的效率有时会低,类与对象是抽象与具体的关系 类包含: 对象必然属于某一个类,且各有一个名字(对象名),有不同的数据成员值,可以进行相同的行为。 类与对象的关系: 相当于类型和变量的关系,1.1.2 面向对象的程序设计,成员函数:,数据成员:,-类对象的静态特性,-类对象的动态特性,1.1.2 面向对象的程序设计,例如: 人类,静态特性:,动态特性:,姓名,性别,年龄,身高,体重,身份,吃,穿,住,行,学习,工作,Person

6、类,数据成员,成员函数,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,教师,前面成绩管理的例子,将结构体改造成一个类SS,其定义如下: class SS private: char number10; char name10; int dailyScore; int fin

7、alScore ; float generalScore; int place ;,1.1.2 面向对象的程序设计,public: /接口对外公开 void readData( ); void calcuScore( ); void printOut( ); ;,此时的主函数代码为: int main( ) SS s,t; /定义SS类型的两个学生对象,对象名为s和t s.readData( ); /向对象发送消息,对象接受消息后调成员函数 t.readData( ); /readData()实现读入每个学生的信息 s.calcuScore( ); /对象调用calcuScore()计算总评成

8、绩 t.calcuScore( ); s.printOut(); /对象调用printOut()输出各自的信息 t.printOut(); return 0; ,1.1.2 面向对象的程序设计,若在类SS中增加 int experiScore; 表示实验成绩,总评成绩计算方法改变,则类的成员函数代码需做相应地改造,但主函数的代码不需做任何变动。,几个结论: (1)面向对象的程序设计由类的定义和类的使用两部分组成,类的使用表现为类对象的定义与功能调用。 (2)程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应的操作。 (3)向对象发送消息的形式是:对象名.成员

9、函数名(实在参数表) 面向对象的程序设计范型为: 程序=对象/类+对象/类+,1.1.2 面向对象的程序设计,面向对象程序设计中最重要的两个概念:类和对象 面向对象程序设计中最突出的特征是:封装性、继承性和多态性 面向对象的程序设计围绕类的定义和类的使用展开的,1.1.2 面向对象的程序设计,返回,类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。 对象是对问题域中客观存在事物的抽象,是类的具体的个体,也称为类的一个实例。 类与对象是一对抽象与具体的关系 例1:教师是一个类,李老师则是教师类的一个对象。 例2:上面的SS类,主函数中定义了2个对象,对象名分别为

10、s和t。,1.2.1 类与对象,1.2.1 类与对象,类与对象的比较 设计类是为了使用类,使用类的方式是定义该类的变量对象,通过对象实现特定功能;对象一定属于类,它具有什么样的静态属性值、可以有哪些动态行为取决于类的设计。,每一个对象有以下几个特征: (1)必须属于某一个类,必须有一个区别于同类型其他对象的对象名。 (2)对象有自己的属性值,即每个对象的数据成员有特定的值来标识该对象的静态特性。 (3)对象有一组类所规定的操作,每一个操作决定对象的一种动态行为,通过对象名.成员函数名(实在参数表)的形式实施这种行为。,1.2.1 类与对象,封装性是面向对象程序设计的第一大特征,这一特性使得面向

11、对象程序设计具有安全性和可靠性。 生活中的封装例:MP4 对外接口:面板上的各种控制按钮如: 电源开关、菜单选择按钮、调节音量按钮等 封装起来的:各种元器件、按下某按钮时其内部的元器件状态如何改变、如何参与工作等细节,1.2.2 封装性,类中封装的成员: private属性的数据成员和成员函数 protected属性的数据成员和成员函数 public属性的成员函数具体实现代码 类中未被封装的成员: public属性的数据成员 public属性的成员函数原型 对于类中封装的成员不可以用形如对象名.成员的形式直接访问,这种形式只可以访问未被封装的成员。,1.2.2 封装性,例如前面讲过的学生类SS

12、中: 封装的信息有 (1)所有的private数据成员:number、name、dailyScore、finalScore、generalScore、 place 。 (3)所有的public成员函数的实现细节: void readData() void calcuScore() void printOut() 公开的接口有:以上3个成员函数的原型,1.2.2 封装性,因此在main()函数中通过类的对象可以直接访问类的接口成员: s. readData(); s. calcuScore(); s.printOut() ; 封装的单位实际上是属于某一个类的对象。因此,在封装之前需要仔细做好数据

13、抽象和功能抽象的工作,明确类中哪些成员需要信息隐藏,哪些成员应该对外公开。,1.2.2 封装性,继承性是面向对象程序设计的第二大特征,是面向对象的程序设计提高代码重用性的重要措施 。 继承表现了特殊类与一般类之间的上下分层关系,这种机制为程序员提供了一种组织、构造和重用类的手段。 继承使一个类(称为基类或父类)的数据成员和成员函数能被另一个类(称为派生类或子类)重用。,1.2.3 继承性,派生类中成员的构成: (1)从基类直接继承的数据成员和成员函数 (2)派生类中新增加的数据成员和成员函数 (3)对基类中某些成员的改造 继承的优点:可以避免公共代码的重复开发,减少代码和数据冗余。,1.2.3

14、 继承性,类继承关系举例:,1.2.3 继承性,以上为一个多层次的类继承关系,从继承源上分,可以有单一继承(如图中大学生类对学生类的继承)和多重继承(如图中在职大学生类是从大学生类和职工类多重继承)两种。,多态性是面向对象程序设计的第三大重要特征。面向对象程序设计的多态性指的是一种行为对应着多种不同的实现。 生活中的多态性举例: (1)发动汽车 (2)发动火车 (3)发动公民义务献血 多态性有两种:静态多态性(也称为编译时的多态性)和动态多态性(也称运行时的多态性)。,1.2.4 多态性,静态多态性 :在同一个类、无继承关系的平行类、不属于任何类的普通函数中,同一个函数名对应着不同的实现代码。

15、通过函数重载和运算符重载实现静态多态性。 动态多态性:在一般类和它的各个派生类中,同一个函数名可以对应着不同的实现代码 。需要通过继承、虚函数、基类的指针或引用实现动态多态性。这些知识在第5章中将会详细介绍。,1.2.4 多态性,多态性的意义:用同一个接口实现不同的操作,直接使用类来进行程序开发非常方便。 例如,为求面积,在三角形类、圆形类、正方形类、长方形类中都定义了函数getArea()。显然,为求相应图形的面积,实现的代码不一样。但用户在使用这些类的对象求面积时不必关心实现细节,直接调用该成员函数就可以了。,1.2.4 多态性,返回,C+语言的研发始于1980年,贝尔实验室的Bjarne

16、 Stroustrup对C语言进行改进和扩充,增加了对面向对象程序设计的支持。最初的成果称为“带类的C”,1983年正式取名为C+,在经历了3次修订后,于1994年制定了ANSI C+标准的草案,以后又经过不断完善,成为目前的C+,C+仍在不断地发展。C+是同时支持面向过程程序设计和面向对象程序设计的混合型语言,是目前应用最为广泛的高级程序设计语言。,1.3.1 C+语言支持面向对象的程序设计,面向对象的程序设计语言应该具有以下几个特点 : (1)支持对象的概念及对象所有的特点 (2)要求对象属于类 (3)提供类的继承机制,1.3.1 C+语言支持面向对象的程序设计,C+语言支持面向对象的编程表现在以下3个方面: 支持封装性:C+语言允许使用类和对象。类是支持封装的工具,对象是封装的实体 。通过public定义接口其余信

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号