《c++程序设计》课件第1章面向对象程序设计概述_第1页
《c++程序设计》课件第1章面向对象程序设计概述_第2页
《c++程序设计》课件第1章面向对象程序设计概述_第3页
《c++程序设计》课件第1章面向对象程序设计概述_第4页
《c++程序设计》课件第1章面向对象程序设计概述_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计C++面向对象程序设计C++C++C对C语言功能的增强增加了面对对象的机制程序设计方法面对对象程序设计面向过程程序设计目录§1§2§3§4面向对象程序设计概述§5C++基础知识类和对象继承与组合多态性与虚函数目录§6§7§8§9面向对象的妥协§10运算符重载模板输入输出流异常处理第1章面向对象程序设计概述6本章主要内容1.1面向过程程序设计1.2面向对象程序设计1.3面向对象的软件开发1.4学生信息管理系统的面向对象分析与设计面向过程的结构化程序设计方法设计思路自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。程序结构:按功能划分为若干个基本模块,形成一个树状结构。各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。其模块化实现的具体方法是使用子程序。第1章面向对象程序设计概述【例1-1】运用面向过程程序设计方法设计一个小型的学生信息管理系统。该系统要管理的学生信息包括:学号(Num)、姓名(Name)、性别(Sex)、出生日期(Birthday)、三门课成绩﹝英语(English)、数据结构(DataStructure)、C++程序设计(CPlusPlus)

﹞、总成绩(Sum)、平均成绩(Average),学生信息表如表1-1所示。1.1面向过程程序设计第1章面向对象程序设计概述学号姓名性别出生日期英语成绩数据结构成绩C++成绩总成绩平均成绩20070202001邓光辉男89-02-0587889026588.320070202002杜丽丽女90-09-2079807523478.020070202003姜志远男90-11-0868847022274.020070202004张大伟男88-08-0570678221973.0………………………表1-1学生信息表第1章面向对象程序设计概述该学生信息管理系统要具有如下功能:(1)显示学生信息:显示全部学生的信息。(2)查询学生信息:按学号或姓名查询学生信息,查询结果直接显示在屏幕上。(3)添加学生信息:对学生信息进行添加。(4)修改学生信息:按学号修改学生信息。1.1面向过程程序设计第1章面向对象程序设计概述该学生信息管理系统要具有如下功能:(5)删除学生信息:按学号删除学生信息。(6)统计学生成绩:统计每个学生的总成绩和平均成绩,或统计所有学生某一门课的总成绩和平均成绩。(7)学生信息排序:按学号、总成绩或某一门课成绩排序。(8)备份学生信息:把所有学生信息备份一份。1.1面向过程程序设计实现该系统的C程序框架/*学生信息管理系统C语言源代码student.c*/#include<stdio.h>/*包含输入/输出头文件*/#include<string.h>/*包含字符串处理头文件*/typedefstruct{/*用于存放生日信息的结构体*/intyear;intmonth;intday;}Date;实现该系统的C程序框架typedefstruct{/*用于存放学生信息的结构体*/charNum[15];charName[10];charSex;floatEnglish;

/*英语课成绩*/floatDataStructure;

/*数据结构课成绩*/

floatCPlusPlus;/*C++课成绩*/

floatSum,Average;

/*总成绩、平均成绩*/}Student;

实现该系统的C程序框架/*用于存放读入内存中的所有学生信息的全局数组*/Studentstud[100];intcount=0;/*存放实际学生人数的全局变量*/

/*各自定义函数原型声明*/voidReadData();/*读取学生信息到全局数组stud中*/voidDisplay();/*显示学生信息*/voidSearch();/*查询学生信息*/voidSearchNum();/*按学号查询学生信息*/voidSearchName();/*按姓名查询学生信息*/…voidBackupData();/*备份学生信息*/实现该系统的C程序框架voidmain(){/*系统功能以菜单的形式提供给用户*/

charchoice;ReadData();for(;;){/*显示系统功能菜单*/

printf("**********学生信息管理系统***************\n");printf("***********************************************\n");printf(“**********1.显示学生信息***************\n");printf("**********2.查询学生信息***************\n");…实现该系统的C程序框架printf("**********8.备份学生信息***************\n");printf(“**********0.退出系统***************\n");printf("***********************************************\n");printf("请选择要执行的操作(0~8):_\n");scanf("%c",&choice);switch(choice){case'1':Display();break;case'2':Search();break;…case'0':return;default:printf("选择错误!请重新选择。\n");}/*switch结束*/实现该系统的C程序框架

}/*for结束*/}/*main函数结束*//*各自定义函数实现代码*/voidReadData(){…}voidDisplay(){…}voidSearch(){…}…图1-1面向过程程序设计的程序模型面向过程的结构化程序设计方法优点:有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。面向过程的结构化程序设计方法缺点:可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改。每一种相对于老问题的新方法都要带来额外的开销。图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。面向对象的方法客观世界中的事物都是对象(object),对象之间存在一定的关系。对同类型对象抽象出其共性,形成类。用对象的属性(attribute)描述事物的静态特征,用对象的操作(operation)描述事物的行为(动态特征)。第1章面向对象程序设计概述1.2.2面向对象的基本概念1.对象可以从两个角度来理解对象。一个角度是现实世界,另一个角度是我们所建立的软件系统。第1章面向对象程序设计概述1.2.2面向对象的基本概念1.对象现实世界中客观存在的任何一个事物都可以看成一个对象(object)。或者说,现实世界是由千千万万个对象组成的。对象可以是有形的,如汽车、房屋、张三等,也可以是无形的,如社会生活中的一种逻辑结构:学校、军队,甚至一篇文章、一个图形、一项计划等都可视作对象。第1章面向对象程序设计概述1.2.2面向对象的基本概念1.对象对象可大可小。例如学校是一个对象,一个班级也是一个对象,一个学生也是一个对象。同样,军队中的一个师,一个团,一个连,一个班都是对象。第1章面向对象程序设计概述1.2.2面向对象的基本概念1.对象任何一个对象都具有两个要素:属性和行为属性:用于描述客观事物的静态特征行为:用于描述事物的动态特征。例如,一个人是一个对象,他有姓名、性别、身高、体重等属性,有走路、讲话、打手势、学习和工作等行为。第1章面向对象程序设计概述1.2.2面向对象的基本概念1.对象在一个系统中的多个对象之间通过一定的渠道相互联系,如图1-2所示。图1-2现实世界中的对象模型第1章面向对象程序设计概述属性行为行为属性行为行为属性行为行为对象1对象2对象3消息消息消息图1-7面向对象程序设计的程序模型第1章面向对象程序设计概述要使某一个对象实现某一个行为,应当向它传递相应的消息。数据成员函数成员函数数据成员函数成员函数数据成员函数成员函数对象1对象2对象3消息消息消息属性行为行为对象第1章面向对象程序设计概述1.2.2面向对象的基本概念1.对象在面向对象的软件分析系统中,对象是用来描述客观事物的一个相对独立体,是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操纵的一组操作组成。属性是用来描述对象静态特征的一个数据项,操作是用来描述对象行为的一个动作序列。第1章面向对象程序设计概述1.2.2面向对象的基本概念1.对象在开发软件系统时,首先要对现实世界中的对象进行分析和归纳,以此为基础来定义软件系统中的对象。软件系统中的一部分对象是对现实世界中的对象的抽象,但其内容不是全盘照搬,这些对象只包含与所解决的现实问题有关的那些内容;系统中的另一部分对象是为了构建系统而设立的。第1章面向对象程序设计概述1.2.2面向对象的基本概念2.类类是对客观世界中具有相同属性和行为的一组对象的抽象,它为属于该类的全部对象提供了统一的抽象描述,其内容包括属性和操作。第1章面向对象程序设计概述1.2.2面向对象的基本概念2.类在寻找类时,要用到一个概念:抽象。所谓抽象,是指忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共性的事物划分为一类,得出一个抽象的概念。例如,人可以作为一个类,它是世界上所有实体人如张三、李四、王五等的抽象,而实体人张三、李四、王五等则是人这个类的具体实例。第1章面向对象程序设计概述1.2.2面向对象的基本概念2.类类和对象的关系可表述为:类是对象的抽象,而对象则是类的实例,或者说是类的具体表现形式。第1章面向对象程序设计概述1.2.2面向对象的基本概念3.封装在面向对象方法中,所谓“封装”,指两方面的含义:一是用对象把属性和操纵这些属性的操作包装起来,形成一个基本单位,各个对象之间相对独立,互不干扰。二是将对象中某些部分对外隐蔽,即隐藏其内部细节,只留下少量接口,以便与外界联系,接收外界的消息。这种对外界隐蔽的做法称为信息隐蔽(informationhiding)。面向对象的方法对象的属性和操作结合为一体,形成一个相对独立、不可分的实体。对象对外屏蔽其内部细节,只留下少量接口,以便与外界联系。通过抽象对对象进行分类,把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是其所属类的一个实例。35面向对象的方法复杂的对象可以用简单的对象作为其构成部分。通过在不同程度上运用抽象的原则,可以得到一般类和特殊类。特殊类继承一般类的属性与操作,从而简化系统的构造过程对象之间通过传递消息进行通信,以实现对象之间的动态联系。通过关联表达类之间的静态关系。36第1章面向对象程序设计概述1.2.2面向对象的基本概念4.继承所谓“继承”,是指特殊类自动地拥有或隐含地复制其一般类的全部属性与操作。继承具有“是一种”的含义。

汽车卡车轿车图1-3继承示例一般类(也称为基类、父类)特殊类(也称为派生类、子类)第1章面向对象程序设计概述图1-4继承的层次与抽象原则的运用汽车卡车轿车火车车辆轮船飞机运输工具

较多地忽略事物之间的差别,

得到较一般的类

较多地注意事物之间的差别,

得到较特殊的类第1章面向对象程序设计概述有时一个类要同时继承两个或两个以上一般类中的属性和操作,把这种允许一个特殊类具有一个以上一般类的继承模式称作多继承。图1-5多重继承示例销售经理管理人员兼职技术人员销售人员雇员第1章面向对象程序设计概述第1章面向对象程序设计概述1.2.2面向对象的基本概念5.消息在面向对象方法中,把向对象发出的操作请求称为消息(message)。对象之间通过消息进行通信,实现了对象之间的动态联系。至于消息的具体用途,它们有很多种,例如,读取或设置对象本身的某个(些)属性的值,请求其他对象的操作。在C++中,消息其实就是函数调用。第1章面向对象程序设计概述1.2.2面向对象的基本概念6.关联关联(association)是两个或多个类之间的一种静态关系。教师指导毕业论文学生1*图1-6关联示例第1章面向对象程序设计概述1.2.2面向对象的基本概念7.组合组合描述的是类与类之间的整体与部分的关系。例如,汽车与发动机之间的关系,计算机与主板间的关系。组合是具有“整体——部分”关系语义的关联,也就是说,组合是关联的一种,只是它还具有明显的“整体——部分”含义。第1章面向对象程序设计概述1.2.2面向对象的基本概念8.多态性如果有几个相似而不完全相同的对象,有时人们要求在向它们发出同一个消息时,它们的反应各不相同,分别执行不同的操作,这种情况就是多态现象。在面向对象方法中,所谓多态性(polymorphism)是指由继承而产生的相关而不同的类,其对象对同一消息会作出不同的响应。多态性是面向对象程序设计的一个重要特征,使用它能增加程序的灵活性。第1章面向对象程序设计概述1.2.3面向对象程序设计的优点1.从认识论的角度看,面向对象程序设计改变了软件开发的方式面向对象程序设计强调从对象出发认识问题域,对象对应着问题域中的事物,其属性和操作分别刻画了事物的静态特征和动态行为,对象之间的继承、组合、关联和依赖关系如实地表达了问题域中事物实际存在的各种关系。第1章面向对象程序设计概述1.2.3面向对象程序设计的优点因此,无论是软件系统的构成成分,还是通过这些成分之间的关系而体现的软件系统结构,都可直接地映射到问题域。软件开发人员能够利用人类认识事物所采用的一般思维方式来进行软件开发。第1章面向对象程序设计概述在面向过程的结构化程序设计中,人们常使用这样的公式来表述程序:

程序=算法+数据结构而面向对象程序设计则把算法和数据结构封装在对象中。在面向对象程序设计,我们可以这样来表述程序:程序=(对象

+对象

+对象

+…)+消息

或程序=对象s+消息

对象

=算法+数据结构第1章面向对象程序设计概述1.2.3面向对象程序设计的优点2.面向对象程序中的数据的安全性高面向对象程序中的数据及对数据的操作捆绑在一起,被封装在不同的对象中。对象对外隐蔽其内部细节,只留下少量的接口,以便与外界联系。外界只能通过对象提供的对外接口操作对象中的数据,这可以有效保护数据的安全。第1章面向对象程序设计概述1.2.3面向对象程序设计的优点3.面向对象程序设计有助于软件的维护与复用某类对象数据结构的改变只会引起该类对象操作代码的改变,只要其对外提供的接口不发生变化,程序的其余部分就不需要做任何改动,从而把程序代码的修改维护局限在一个很小的范围内。这就对用户需求的变化有较强的适应性。第1章面向对象程序设计概述1.2.3面向对象程序设计的优点3.面向对象程序设计有助于软件的维护与复用面向对象程序设计中类的继承机制有效解决了代码复用的问题。在设计新类时,可通过继承引用已有类的属性和操作,并可在已有类的基础上增加新的数据结构和操作,延伸和扩充已有类的功能,这种延伸和扩充一点不影响原有类的使用。人们可以像使用集成电路(IC)构造计算机硬件那样,比较方便地重用对象类来构造软件系统。第1章面向对象程序设计概述面向对象的软件工程包括以下几个阶段:1.面向对象分析(objectorientedanalysis,OOA)2.面向对象设计(objectorienteddesign,OOD)3.面向对象编程(objectorientedprogramming,

OOP)4.面向对象测试(objectorientedtest,OOT)5.面向对象维护(objectorientedsoftmaintenance,OOSM)1.3面向对象的软件开发第1章面向对象程序设计概述1.面向对象分析

对系统进行面向对象分析,识别出系统中的对象,定义对象的属性和操作,并抽象出对象类。1.4学生信息管理系统的面向对象分析与设计第1章面向对象程序设计概述(1)学生对象与学生类考虑问题域,识别系统中的对象与类。该系统是一个学生信息管理系统,每一个被管理的学生都是该系统中的一个对象,所有学生对象都具有相同的属性:学号、姓名、性别、出生日期、英语成绩、数据结构成绩、C++程序设计成绩、总成绩、平均成绩,相同的操作:计算总成绩、计算平均成绩。对所有学生对象的抽象,形成一个学生类。第1章面向对象程序设计概述

+计算总成绩

+计算平均成绩

-学号

-姓名

-…-平均成绩学生类

+显示学生信息

+按学号查询学生信息

+按姓名查询学生信息

…+打开文件

+写文件

+新建文件“顺序表”容器类1*

-学生数组

-学生总人数图1-8学生信息管

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论