面向对象的程序设计及c概述

上传人:tian****1990 文档编号:71612910 上传时间:2019-01-21 格式:PPT 页数:39 大小:747.50KB
返回 下载 相关 举报
面向对象的程序设计及c概述_第1页
第1页 / 共39页
面向对象的程序设计及c概述_第2页
第2页 / 共39页
面向对象的程序设计及c概述_第3页
第3页 / 共39页
面向对象的程序设计及c概述_第4页
第4页 / 共39页
面向对象的程序设计及c概述_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《面向对象的程序设计及c概述》由会员分享,可在线阅读,更多相关《面向对象的程序设计及c概述(39页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计及C+,主讲:曹晓梅,第1章 面向对象程序设计及C+概述,面向对象程序设计及C+,3,本章作业 P23,书上:一、二 作业本:三(1、2),C+融合了三种不同的编程思想,4,面向过程编程,面向对象编程,通用模板 编程,面向对象编程,5,授课线索及内容,为什么引入面向对象程序设计方法? 从面向过程程序设计方法及其弊端谈起,面向对象程序设计方法及其核心思想,C语言和C+语言的关系,C+程序的开发和VC+的使用,本章核心问题 面向对象程序设计方法 的由来和核心思想,6,1. 面向过程程序设计思想,1.1 核心思想 1.2 实例说明 1.3 优缺点,7,1.1 核心思想,核心思想:程序

2、=数据结构+算法,对数据进行处理的过程,待处理的数据,例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。 每个学生的信息包括学号、姓名、某门课的平时成绩、期末成绩、总评成绩和名次,总评成绩=平时成绩*0.4+期末成绩*0.6。主要操作:成绩的录入、计算、排名、输出。,面向过程程序设计思想,8,1.2 实例说明,typedef struct studentScore char number10; /学号 char name10; /姓名 int dailyScore ; /平时成绩 int finalScore; /期末成绩 float generalScore; /总评成绩 int r

3、ate; /名次 SS;,数据,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个学生的完整信息,过程,面向过程程序设计思想,9,数据需求的改变 在C语言课程中,需要增加实验成绩这一项,学生的总评成绩计算方法修改为: 总评成绩=平时成绩*0.2+实验成绩*0.2+

4、期末成绩*0.6。 显然,类型SS中需要增加一个数据项 int experiScore; 表示实验成绩。 同时,所有的函数代码都应该作相应地修改,1.2 实例说明,面向过程程序设计思想,10,1.3 面向过程程序设计的优缺点,采用自顶向下、逐步求精的方法: 直观有条理 结构清晰 模块化强,数据和过程的分离: 数据的安全性问题 代码的可维护性问题 代码的可重用性问题,面向对象程序 设计应运而生,面向过程程序设计思想,11,2. 面向对象程序设计思想,2.1 客观原型 2.2 核心思想 2.3 实例说明 2.4 两个概念和三个特性,12,2.1 客观原型,客观世界中的对象,是现实世界中一个实际存在

5、的事物 有形(一台洗衣机)、无形(一项计划) 是构成世界的一个独立单位,具有:,有一个特定的名字以区别其他对象 有一组属性,用来描述对象的静态特征 有一组行为,用来描述对象的动态特征,类和对象,类是同类对象的抽象 对象是类的实例,抽象与具体的关系,面向对象程序设计思想,13,2.2 核心思想,核心思想:以数据为核心,将数据以及对这些数据的操作封装为一个整体。 I. 声明抽象的类,以类封装两类成员,成员函数:,数据成员:,一类对象的静态特性,一类对象的动态特性,类,II. 定义类的实例对象,以对象作为程序的基本元素,通过向对象发送消息,进而由对象启动相关的成员函数完成各种功能,程序=对象+消息,

6、面向对象程序设计思想,14,2.3 实例说明,例如: 人类,静态特性:,动态特性:,姓名,性别,年龄,身高,体重,身份,吃,穿,住,行,学习,工作,Person类,数据成员,成员函数,char name20,char sex8,int age,double height,double weight,char career20,void eat();,void dress();,void reside();,void walk();,void study();,void work();,对象名: p1,张虹,女,25,1.70,55.0,教师,类和对象是抽象和具体的关系,面向对象程序设计思想,1

7、5,前面成绩管理的例子,将结构体改造成一个类SS,其定义如下: class SS private: char number10; char name10; int dailyScore; int finalScore ; float generalScore; int rate ;,public: /接口对外公开 void readData( ); void calcuScore( ); void printOut( ); friend void sortScore(SS stu ,int n) ; ;,2.3 实例说明,面向对象程序设计思想,16,此时的主函数代码为: void main(

8、) 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; 表示实验成绩,总评成绩计算方法改变,则类的成员函数代码需做相应地改造,但主函数的代码不需做任何变动。,2.3 实例说明,面向对象程序设计思想,17,几个结论: (1)面向对象的程序设计主要由类的

9、定义和类的使用两部分组成。 (2)程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关函数完成相应的操作。 (3)向对象发送消息的形式是: 对象名.成员函数名(实在参数表),2.3 实例说明,面向对象程序设计思想,18,面向对象程序设计中最重要的两个概念:类和对象 面向对象程序设计中最突出的特征是:封装性、继承性、多态性,2.4 两个概念和三个特征,面向对象程序设计思想,19,类是对一组具有相同属性特征和行为特征的对象的高度抽象 对象是类的具体的个体,是类的实例 例1:Person是一个类p1则是该类的一个对象张虹是p1姓名属性的值。 例2:上面的SS类,主函数中定义了5

10、个对象,对象名分别为stu0、stu1、stu2、stu3、stu4。,2.4.1 类与对象,面向对象程序设计思想,20,2.4.1 类与对象,类与对象的比较 设计类是为了使用类,使用类的方式是定义该类的变量对象,通过对象实现特定功能;对象一定属于类,它具有什么样的静态属性值、可以有哪些动态行为取决于类的设计。,面向对象程序设计思想,21,封装性是面向对象程序设计的第一大特征,这一特性使得面向对象程序设计具有安全性和可靠性。 生活中的封装 例:MP4 - 对外接口:面板上的各种控制按钮, 如:电源开关、菜单选择按钮、调节音量按钮等 - 隐藏起来的: 各种元器件 按下某按钮时其内部的元器件状态如

11、何改变、如何参与工作等细节,2.4.2 封装性,面向对象程序设计思想,22,类中隐藏的成员: private属性的数据成员和成员函数 protected属性的数据成员和成员函数 public属性的成员函数具体实现代码 类中未被隐藏的成员: public属性的数据成员 public属性的成员函数原型,2.4.2 封装性,面向对象程序设计思想,只能被类中的成员函数直接访问!,可以被程序的所有代码直接访问!,改善了数据的安全性,ssi. readData(); ssi. calcuScore(); ssi. printOut();,23,例如前面讲过的学生类SS中: - 隐藏的信息有 (1)所有的p

12、rivate数据成员:number、name、dailyScore、finalScore、generalScore、 place 。 (2)所有的public成员函数的实现细节: void readData() void calcuScore() void printOut() - 公开的接口有:以上3个成员函数的原型,2.4.2 封装性,面向对象程序设计思想,24,继承性是面向对象程序设计的第二大特征,表现了类之间的上下层关系,使一个类(称为基类或父类)的数据成员和成员函数能被另一个类(称为派生类或子类)重用。,2.4.3 继承性,面向对象程序设计思想,继承的优点:提高代码的可重用性,避免公

13、共代码的重复开发,减少代码和数据冗余。,25,类继承关系举例: 以上为一个多层次的类继承关系,从继承源上分,可以有单一继承和多重继承两种。 派生类中成员的构成: 1)从基类直接继承的数据成员和成员函数 2)派生类中新增加的数据成员和成员函数 3)对基类中某些成员的改造,2.4.3 继承性,面向对象程序设计思想,26,多态性是面向对象程序设计的第三大重要特征。面向对象程序设计的多态性指的是一种行为对应着多种不同的实现。,2.4.4 多态性,求面积,在三角形类、圆形类、正方形类、长方形类中都定义了函数getArea()。显然,为求相应图形的面积,实现的代码不一样。但用户在使用这些类的对象求面积时不

14、必关心实现细节,直接调用该成员函数就可以了。,生活中的多态性举例: (1)发动汽车 (2)发动火车 (3)发动公民义务献血,面向对象程序设计思想,27,静态多态性 :在同一个类、无继承关系的平行类、不属于任何类的普通函数中,同一个函数名对应着不同的实现代码。通过函数重载和运算符重载实现现态多态性。 动态多态性:在一般类和它的各个派生类中,同一个函数名可以对应着不同的实现代码 。需要通过继承、虚函数、基类的指针或引用实现动态多态性。这些知识在第5章中将会详细介绍。,2.4.4 多态性,多态性有两种:静态多态性(也称为编译时的多态性)和动态多态性(也称运行时的多态性)。,面向对象程序设计思想,28

15、,3. 面向程序设计语言及C+,3.1 面向对象程序设计语言概述 3.2 C+ 3.3 C+语言和C语言的关系,29,面向对象的程序设计语言应该具有以下几个特点 : (1)支持对象的概念及对象所有的特点 (2)要求对象属于类 (3)提供类的继承机制 从20世纪60年代开始,先后出现了Simula、Smalltalk、Object-C、Eiffel、Ada、C+和Java等面向对象的程序设计语言,每种语言各有其优势和应用领域。,3.1 面向对象的程序设计语言概述,面向对象程序设计语言及C+,30,C+语言的研发始于1980年,对C语言进行改进和扩充,增加了对面向对象程序设计的支持。最初的成果称为

16、“带类的C”,1983年正式取名为C+,在经历了3次修订后,于1994年制定了ANSI C+标准的草案,以后又经过不断完善,成为目前的C+。 C+是同时支持面向过程程序设计和面向对象程序设计的混合型语言,是目前应用最为广泛的高级程序设计语言。,3.2 C+语言,面向对象程序设计语言及C+,31,C+语言支持面向对象的编程表现在以下3个方面: 支持封装性:C+语言允许使用类和对象。类是支持封装的工具,对象是被封装的实体 。通过public定义接口,其余信息封装。 支持继承性 :C+语言同时支持单一继承和多重继承 ,实现了抽象和共享机制。 支持多态性 :C+语言同时支持静态多态性和动态多态性 。,3.2 C+语言,面向对象程序设计语言及C+,32,C+语言由C语言发展而来,兼容

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

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

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