您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第1章_面向对象的程序设计及C++概述
面向对象程序设计及C++主讲:吴敏第1章面向对象程序设计及C++概述面向对象程序设计及C++计算机软件基础教学中心3本章内容提要C语言-面向过程的程序设计C++语言-面向对象的程序设计方法,同时向后兼容C语言C++与C语言的关系开发C++程序的过程及VC++6的使用计算机软件基础教学中心4本章内容安排1.1面向过程与面向对象1.2面向对象的基本概念及特征1.3面向对象的程序设计语言及C++1.4VC++6集成开发环境与C++程序1.5本章小结结束本章计算机软件基础教学中心51.1.1面向过程的程序设计例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。每个学生的信息包括学号、姓名、某门课的平时成绩、期末成绩、总评成绩和名次,总评成绩=平时成绩*0.3+期末成绩*0.7。主要操作:成绩的录入、计算、排名、输出。计算机软件基础教学中心61.1.1面向过程的程序设计数据结构——定义一个结构体typedefstructstudentScore{charnumber[10];//学号charname[10];//姓名intdailyScore;//平时成绩intfinalScore;//期末成绩floatgeneralScore;//总评成绩intplace;//名次}SS;//结构体变量名CintexperiScore;//后增项实验成绩计算机软件基础教学中心71.1.1面向过程的程序设计操作数据的几个函数:voidreadData(SSstu[],intn);//输入n个学生的学号、姓名、平时及期末成绩voidcalcuScore(SSstu[],intn);//计算n个学生的总评成绩voidsortScore(SSstu[],intn);//根据总评成绩排名,得出每个学生的place值voidprintOut(SSstu[],intn);//按一定的格式输出n个学生的完整信息计算机软件基础教学中心81.1.1面向过程的程序设计现在,需求改变了:在C语言课程中,需要增加实验成绩这一项,学生的总评成绩计算方法修改为:总评成绩=平时成绩*0.2+实验成绩*0.2+期末成绩*0.6。显然,类型SS中需要增加一个数据项intexperiScore;表示实验成绩。G同时,所有的函数代码都应该作相应地修改计算机软件基础教学中心91.1.1面向过程的程序设计面向过程的程序设计的范型是:程序=算法+数据结构数据与对数据操作的分离导致软件维护(包括软件的测试、调试和升级)的困难。一种新型的程序设计方法——面向对象的程序设计方法应运而生,它很好地解决了以上问题。计算机软件基础教学中心101.1.2面向对象的程序设计核心思想:以数据为核心,将数据以及对这些数据的操作封装为一个整体实现方法:以类封装,以类的对象作为程序的基本元素,通过向对象发送消息,进而由对象启动相关的方法完成各种功能优点:数据安全、软件可靠、代码可重性可维护性强计算机软件基础教学中心11前面成绩管理的例子,将结构体改造成一个类SS,其定义如下:classSS{private:charnumber[10];charname[10];intdailyScore;intfinalScore;floatgeneralScore;intplace;1.1.2面向对象的程序设计public://接口对外公开voidreadData();voidcalcuScore();voidprintOut();friendvoidsortScore(SSstu[],intn);};计算机软件基础教学中心12此时的主函数代码为:voidmain(){SSstu[30];//定义30个学生类的对象inti,n=5;//对前5个学生执行下列操作for(i=0;in;i++)stu[i].readData();for(i=0;in;i++)stu[i].calcuScore();sortScore(stu,5);for(i=0;in;i++)stu[i].printOut();}若在类SS中增加intexperiScore;表示实验成绩,总评成绩计算方法改变,则类的成员函数代码需做相应地改造,但主函数的代码不需做任何变动。1.1.2面向对象的程序设计计算机软件基础教学中心13类是对一组具有相同属性特征和行为特征的一类对象的高度抽象对象是类的具体的个体,是类的实例类与对象是一对抽象与具体的关系上面的SS类,主函数中定义了5个对象,对象名分别为stu[0]、stu[1]、stu[2]、stu[3]、stu[4]。1.2.1类与对象计算机软件基础教学中心14类与对象是抽象与具体的关系类包含:对象必然属于某一个类,且各有一个名字,有不同的数据成员值,可以进行相同的行为。1.1.2面向对象的程序设计成员函数:数据成员:一类对象的静态特性一类对象的动态特性计算机软件基础教学中心151.1.2面向对象的程序设计例如:人类静态特性:动态特性:姓名性别年龄身高体重身份吃穿住行学习工作Person类数据成员成员函数charname[20]charsex[8]intagedoubleheightdoubleweightcharidentityvoideat();voiddress();voidreside();voidwalk();voidstudy();voidwork();类对象名:teacher1张虹女251.7055.0教师计算机软件基础教学中心16几个结论:(1)面向对象的程序设计由类的定义和类的使用两部分组成(2)程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应的操作。(3)向对象发送消息的形式是:对象名.成员函数名(实在参数表)面向对象的程序设计范型为:程序=对象+消息。例子:P65,例3.61.1.2面向对象的程序设计计算机软件基础教学中心17面向对象程序设计中最重要的两个概念:类和对象面向对象程序设计中最突出的特征是:抽象性,封装性、继承性和多态性(第三章开始)C++语言支持面向对象的编程,支持四大特性。1.1.2面向对象的程序设计返回计算机软件基础教学中心18C语言是C++语言的一个子集。C语言的词法、语法和其他规则都可以用到C++语言中。在利用C++进行面向过程的程序设计时,可以有多种方案,可以完全使用C语言风格,但是建议使用C++语言风格更为方便1.3.3C++语言继承了C语言:计算机软件基础教学中心19封装性是面向对象程序设计的第一大特征,这一特性使得面向对象程序设计具有安全性和可靠性。生活中的封装例:MP4对外接口:面板上的各种控制按钮如:电源开关、菜单选择按钮、调节音量按钮等封装起来的:各种元器件、按下某按钮时其内部的元器件状态如何改变、如何参与工作等细节1.2.2封装性计算机软件基础教学中心20类中封装的成员:private属性的数据成员和成员函数protected属性的数据成员和成员函数public属性的成员函数具体实现代码类中未被封装的成员:public属性的数据成员public属性的成员函数原型对于类中封装的成员不可以用形如对象名.成员的形式直接访问,这种形式只可以访问未被封装的成员。1.2.2封装性计算机软件基础教学中心21例如前面讲过的学生类SS中:封装的信息有(1)所有的private数据成员:number、name、dailyScore、finalScore、generalScore、place。(3)所有的public成员函数的实现细节:voidreadData()voidcalcuScore()voidprintOut()公开的接口有:以上3个成员函数的原型1.2.2封装性计算机软件基础教学中心22因此在main()函数中通过类的对象可以直接访问类的接口成员:ss[i].readData();ss[i].calcuScore();ss[i].voidprintOut();封装的单位实际上是属于某一个类的对象。因此,在封装之前需要仔细做好数据抽象和功能抽象的工作,明确类中哪些成员需要信息隐藏,哪些成员应该对外公开。1.2.2封装性计算机软件基础教学中心23继承性是面向对象程序设计的第二大特征,是面向对象的程序设计提高代码重用性的重要措施。继承表现了特殊类与一般类之间的上下分层关系,这种机制为程序员提供了一种组织、构造和重用类的手段。继承使一个类(称为基类或父类)的数据成员和成员函数能被另一个类(称为派生类或子类)重用。1.2.3继承性计算机软件基础教学中心24派生类中成员的构成:(1)从基类直接继承的数据成员和成员函数(2)派生类中新增加的数据成员和成员函数(3)对基类中某些成员的改造继承的优点:可以避免公共代码的重复开发,减少代码和数据冗余。1.2.3继承性计算机软件基础教学中心25类继承关系举例:以上为一个多层次的类继承关系,从继承源上分,可以有单一继承(如图中大学生类对学生类的继承)和多重继承(如图中在职大学生类是从大学生类和职工类多重继承)两种。1.2.3继承性学生类大学生类职工类在职大学生类计算机软件基础教学中心26多态性是面向对象程序设计的第三大重要特征。面向对象程序设计的多态性指的是一种行为对应着多种不同的实现。生活中的多态性举例:(1)发动汽车(2)发动火车(3)发动公民义务献血多态性有两种:静态多态性(也称为编译时的多态性)和动态多态性(也称运行时的多态性)。1.2.4多态性计算机软件基础教学中心27静态多态性:在同一个类、无继承关系的平行类、不属于任何类的普通函数中,同一个函数名对应着不同的实现代码。通过函数重载和运算符重载实现静态多态性。动态多态性:在一般类和它的各个派生类中,同一个函数名可以对应着不同的实现代码。需要通过继承、虚函数、基类的指针或引用实现动态多态性。这些知识在第5章中将会详细介绍。1.2.4多态性计算机软件基础教学中心28向后兼容,对C语言进行了改进和扩充:例如:提供了更方便的输入/输出方法、灵活的const关键字的应用、新增引用的灵活应用、内联函数、函数重载、更方便的动态内存空间空间的管理等等。第2章将具体介绍C++在面向过程的程序设计方面对C语言的改进和扩充。1.3.3C++语言与C语言关系:返回计算机软件基础教学中心29与开发其他高级语言的程序一样,开发一个C++程序包括编辑、编译、链接和运行几个步骤。当然,在编辑源程序之前,还需要有一些准备工作要做:分析:解决“做什么”的问题设计:解决“怎么做”的问题编码:根据设计编写代码,为编辑做准备1.4.1C++程序的开发过程计算机软件基础教学中心30分析(Analysis)设计(Design)编码(Write)编辑(Edit)•编译(Compile)链接(Link)•运行(Run)调试(Debug)1.4.1C++程序的开发过程做什么编写代码怎么做扩展名为.cpp的源文件扩展名为.h的头文件扩展名为.obj的目标文件扩展名为.exe的可执行文件计算机软件基础教学中心31设计多种windows软件设计控制台应用程序可以编出计算量较大的,用于科学计算的小程序;用MFC类库可以设计中小型企业的内部管理程序;用一些图形的API可以编出大型的3D游戏利用C++能够接触系统底层的特点,可以编出优化软件让内存运作的性能大大提高;用C++编手机游戏来。VC++6集成开发环境能做什么?返回计算机软件基础教学中心32面向过程与面向对象是两种不同的程序设计方法的核心思想与主要区别1.5本章小结返回计算机软件基础教学中心33课堂作业用c语言编写程序:从键盘输入两个整数,求其最大值并将其输出至屏幕上,函数原型为Max(int,int)
本文标题:第1章_面向对象的程序设计及C++概述
链接地址:https://www.777doc.com/doc-3332499 .html