面向对象程序设计及C++ 教学课件 ppt 作者 朱立华 朱建 俞琼 第1章_面向对象的程序设计及C++概述

上传人:E**** 文档编号:89494840 上传时间:2019-05-25 格式:PPT 页数:45 大小:484KB
返回 下载 相关 举报
面向对象程序设计及C++ 教学课件 ppt 作者  朱立华 朱建 俞琼 第1章_面向对象的程序设计及C++概述_第1页
第1页 / 共45页
面向对象程序设计及C++ 教学课件 ppt 作者  朱立华 朱建 俞琼 第1章_面向对象的程序设计及C++概述_第2页
第2页 / 共45页
面向对象程序设计及C++ 教学课件 ppt 作者  朱立华 朱建 俞琼 第1章_面向对象的程序设计及C++概述_第3页
第3页 / 共45页
面向对象程序设计及C++ 教学课件 ppt 作者  朱立华 朱建 俞琼 第1章_面向对象的程序设计及C++概述_第4页
第4页 / 共45页
面向对象程序设计及C++ 教学课件 ppt 作者  朱立华 朱建 俞琼 第1章_面向对象的程序设计及C++概述_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《面向对象程序设计及C++ 教学课件 ppt 作者 朱立华 朱建 俞琼 第1章_面向对象的程序设计及C++概述》由会员分享,可在线阅读,更多相关《面向对象程序设计及C++ 教学课件 ppt 作者 朱立华 朱建 俞琼 第1章_面向对象的程序设计及C++概述(45页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计及C+,主讲:,第1章 面向对象程序设计及C+概述,面向对象程序设计及C+,3,本章作业,作业本:P23页:一、二、三(1、2、5),4,本章内容提要,面向过程的程序设计方法 面向对象的程序设计方法 面向对象的几个重要概念:类、对象、封装、继承、多态 面向对象的程序设计语言 C+与C语言的关系 开发C+程序的过程及VC+6的使用,5,本章内容安排,1.1 面向过程与面向对象 1.2 面向对象的基本概念及特征 1.3 面向对象的程序设计语言及C+ 1.4 VC+6集成开发环境与C+程序 1.5 本章小结,结束本章,6,1.1.1 面向过程的程序设计,核心思想:以功能为核心,数据与

2、对数据处理的过程相分离。 实现方法:自顶向下、逐步细化、模块化 优点:直观有条理、结构清晰、模块化强。 缺点: 代码的可重用性差、模块之间依赖性强、不利于代码的维护和扩充。 数据结构对整个程序公开,数据安全性差,7,1.1.1 面向过程的程序设计,数据与对数据处理的过程相分离,其弊端表现在:一旦数据结构改变,与之相关的所有操作都必须改动 ,代码修改量大 例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。 每个学生的信息包括学号、姓名、某门课的平时成绩、期末成绩、总评成绩和名次, 总评成绩=平时成绩*0.3+期末成绩*0.7。 主要操作:成绩的录入、计算、排名、输出。,8,1.1.1 面

3、向过程的程序设计,数据结构定义一个结构体 typedef struct studentScore char number10; /学号 char name10; /姓名 int dailyScore ; /平时成绩 int finalScore; /期末成绩 float generalScore; /总评成绩 int place; /名次 SS; /结构体变量名 C,int experiScore; /后增项实验成绩,9,1.1.1 面向过程的程序设计,操作数据的几个函数: void readData(SS stu ,int n); /输入n个学生的学号、姓名、平时及期末成绩 void cal

4、cuScore(SS stu ,int n); /计算n个学生的总评成绩 void sortScore(SS stu ,int n); /根据总评成绩排名,得出每个学生的place值 void printOut(SS stu ,int n); /按一定的格式输出n个学生的完整信息,10,1.1.1 面向过程的程序设计,现在,需求改变了: 在C语言课程中,需要增加实验成绩这一项,学生的总评成绩计算方法修改为: 总评成绩=平时成绩*0.2+实验成绩*0.2+期末成绩*0.6。 显然,类型SS中需要增加一个数据项 int experiScore; 表示实验成绩。G 同时,所有的函数代码都应该作相应地

5、修改,11,1.1.1 面向过程的程序设计,面向过程的程序设计的范型是: 程序=算法+数据结构 数据与对数据操作的分离导致软件维护(包括软件的测试、调试和升级)的困难。 一种新型的程序设计方法面向对象的程序设计方法应运而生,它很好地解决了以上问题。,12,1.1.2 面向对象的程序设计,核心思想:以数据为核心,将数据以及对这些数据的操作封装为一个整体 实现方法:以类封装,以类的对象作为程序的基本元素,通过向对象发送消息,进而由对象启动相关的方法完成各种功能 优点:数据安全、软件可靠、代码可重性可维护性强 缺点:代码的效率有时会低,13,类与对象是抽象与具体的关系 类包含: 对象必然属于某一个类

6、,且各有一个名字,有不同的数据成员值,可以进行相同的行为。,1.1.2 面向对象的程序设计,成员函数:,数据成员:,一类对象的静态特性,一类对象的动态特性,14,1.1.2 面向对象的程序设计,例如: 人类,静态特性:,动态特性:,姓名,性别,年龄,身高,体重,身份,吃,穿,住,行,学习,工作,Person类,数据成员,成员函数,char name20,char sex8,int age,double height,double weight,char identity,void eat();,void dress();,void reside();,void walk();,void stu

7、dy();,void work();,类对象名:teacher1,张虹,女,25,1.70,55.0,教师,15,前面成绩管理的例子,将结构体改造成一个类SS,其定义如下: class SS private: char number10; char name10; int dailyScore; int finalScore ; float generalScore; int place ;,1.1.2 面向对象的程序设计,public: /接口对外公开 void readData( ); void calcuScore( ); void printOut( ); friend void so

8、rtScore(SS stu ,int n) ; ;,16,此时的主函数代码为: void main( ) SS stu30; /定义30个学生类的对象 int i, n=5; /对前5个学生执行下列操作 for (i=0;in; i+) stui.readData( ); for (i=0;in; i+) stui.calcuScore( ); sortScore( stu,5) ; for (i=0;in;i+) stui.printOut( ); 若在类SS中增加 int experiScore; 表示实验成绩,总评成绩计算方法改变,则类的成员函数代码需做相应地改造,但主函数的代码不需做

9、任何变动。,1.1.2 面向对象的程序设计,17,几个结论: (1)面向对象的程序设计由类的定义和类的使用两部分组成 (2)程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应的操作。 (3)向对象发送消息的形式是:对象名.成员函数名(实在参数表) 面向对象的程序设计范型为: 程序=对象+消息。,1.1.2 面向对象的程序设计,18,面向对象程序设计中最重要的两个概念:类和对象 面向对象程序设计中最突出的特征是:封装性、继承性和多态性 面向对象的程序设计围绕类的定义和类的使用展开的,1.1.2 面向对象的程序设计,返回,19,类是对一组具有相同属性特征和行为特

10、征的一类对象的高度抽象 对象是类的具体的个体,是类的实例 类与对象是一对抽象与具体的关系 例1:教师是一个类,李老师则是教师类的一个对象。 例2:上面的SS类,主函数中定义了5个对象,对象名分别为stu0、stu1、stu2、stu3、stu4。,1.2.1 类与对象,20,1.2.1 类与对象,类与对象的比较 设计类是为了使用类,使用类的方式是定义该类的变量对象,通过对象实现特定功能;对象一定属于类,它具有什么样的静态属性值、可以有哪些动态行为取决于类的设计。,21,每一个对象有以下几个特征: (1)必须属于某一个类,必须有一个区别于同类型其他对象的对象名。 (2)对象有自己的属性值,即每个

11、对象的数据成员有特定的值来标识该对象的静态特性。 (3)对象有一组类所规定的操作,每一个操作决定对象的一种动态行为,通过对象名.成员函数名(实在参数表)的形式实施这种行为。,1.2.1 类与对象,22,封装性是面向对象程序设计的第一大特征,这一特性使得面向对象程序设计具有安全性和可靠性。 生活中的封装例:MP4 对外接口:面板上的各种控制按钮如: 电源开关、菜单选择按钮、调节音量按钮等 封装起来的:各种元器件、按下某按钮时其内部的元器件状态如何改变、如何参与工作等细节,1.2.2 封装性,23,类中封装的成员: private属性的数据成员和成员函数 protected属性的数据成员和成员函数

12、 public属性的成员函数具体实现代码 类中未被封装的成员: public属性的数据成员 public属性的成员函数原型 对于类中封装的成员不可以用形如对象名.成员的形式直接访问,这种形式只可以访问未被封装的成员。,1.2.2 封装性,24,例如前面讲过的学生类SS中: 封装的信息有 (1)所有的private数据成员:number、name、dailyScore、finalScore、generalScore、 place 。 (3)所有的public成员函数的实现细节: void readData() void calcuScore() void printOut() 公开的接口有:以上

13、3个成员函数的原型,1.2.2 封装性,25,因此在main()函数中通过类的对象可以直接访问类的接口成员: ssi. readData(); ssi. calcuScore(); ssi. void printOut() ; 封装的单位实际上是属于某一个类的对象。因此,在封装之前需要仔细做好数据抽象和功能抽象的工作,明确类中哪些成员需要信息隐藏,哪些成员应该对外公开。,1.2.2 封装性,26,继承性是面向对象程序设计的第二大特征,是面向对象的程序设计提高代码重用性的重要措施 。 继承表现了特殊类与一般类之间的上下分层关系,这种机制为程序员提供了一种组织、构造和重用类的手段。 继承使一个类(

14、称为基类或父类)的数据成员和成员函数能被另一个类(称为派生类或子类)重用。,1.2.3 继承性,27,派生类中成员的构成: (1)从基类直接继承的数据成员和成员函数 (2)派生类中新增加的数据成员和成员函数 (3)对基类中某些成员的改造 继承的优点:可以避免公共代码的重复开发,减少代码和数据冗余。,1.2.3 继承性,28,类继承关系举例: 以上为一个多层次的类继承关系,从继承源上分,可以有单一继承(如图中大学生类对学生类的继承)和多重继承(如图中在职大学生类是从大学生类和职工类多重继承)两种。,1.2.3 继承性,29,多态性是面向对象程序设计的第三大重要特征。面向对象程序设计的多态性指的是

15、一种行为对应着多种不同的实现。 生活中的多态性举例: (1)发动汽车 (2)发动火车 (3)发动公民义务献血 多态性有两种:静态多态性(也称为编译时的多态性)和动态多态性(也称运行时的多态性)。,1.2.4 多态性,30,静态多态性 :在同一个类、无继承关系的平行类、不属于任何类的普通函数中,同一个函数名对应着不同的实现代码。通过函数重载和运算符重载实现现态多态性。 动态多态性:在一般类和它的各个派生类中,同一个函数名可以对应着不同的实现代码 。需要通过继承、虚函数、基类的指针或引用实现动态多态性。这些知识在第5章中将会详细介绍。,1.2.4 多态性,31,多态性的意义:用同一个接口实现不同的

16、操作,直接使用类来进行程序开发非常方便。 例如,为求面积,在三角形类、圆形类、正方形类、长方形类中都定义了函数getArea()。显然,为求相应图形的面积,实现的代码不一样。但用户在使用这些类的对象求面积时不必关心实现细节,直接调用该成员函数就可以了。,1.2.4 多态性,返回,32,面向对象的程序设计语言应该具有以下几个特点 : (1)支持对象的概念及对象所有的特点 (2)要求对象属于类 (3)提供类的继承机制 从20世纪60年代开始,先后出现了Simula、Smalltalk、Object-C、Eiffel、Ada、C+和Java等面向对象的程序设计语言,每种语言各有其优势和应用领域。,1.3.1面向对象的程序设计语言概述,33,各种面向对象的程序设计语言简介: Simula67语言: 20世纪6

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

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

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