版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+程序设计目录1234面向对象程序设计概述5C+基础知识类和对象继承与组合多态性与虚函数目录6789面向对象的妥协10运算符重载模板输入输出流异常处理第1章 面向对象程序设计概述本章从一个小型的学生信息管理系统的面向过程程序设计出发,讨论了传统的面向过程程序设计方法的不足,进而引出面向对象程序设计方法,介绍面向对象程序设计的编程思想,面向对象程序设计的基本概念,面向对象程序设计的优点。最后简单介绍面向对象的软件开发。本章内容简介第1章 面向对象程序设计本章学习目标1. 了解传统的面向过程程序设计方法的不足2. 掌握面向对象程序设计的编程思想3. 理解并掌握面向对象程序设计的基本概念4. 领会
2、面向对象程序设计的优点5. 了解面向对象的软件开发工程第1章 面向对象程序设计面向过程程序设计的基本思想: 功能分解、逐步求精、模块化、结构化。 1.1 面向过程程序设计第1章 面向对象程序设计【例1-1】运用面向过程程序设计方法设计一个小型的学生信息管理系统。该系统要管理的学生信息包括:学号(Num)、姓名(Name) 、性别(Sex) 、出生日期(Birthday) 、三门课成绩英语(English) 、数据结构(DataStructure) 、C+程序设计(CPlusPlus) 、总成绩(Sum) 、平均成绩(Average) ,学生信息表如表1-1所示。1.1 面向过程程序设计第1章
3、面向对象程序设计学号姓名性别出生日期英语成绩数据结构成绩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、(4)修改学生信息:按学号修改学生信息。1.1 面向过程程序设计(续)第1章 面向对象程序设计该学生信息管理系统要具有如下功能: (续)(5)删除学生信息:按学号删除学生信息。(6)统计学生成绩:统计每个学生的总成绩和平均成绩,或统计所有学生某一门课的总成绩和平均成绩。(7)学生信息排序:按学号、总成绩或某一门课成绩排序。(8)备份学生信息:把所有学生信息备份一份。1.1 面向过程程序设计(续)实现该系统的C程序框架/*学生信息管理系统C语言源代码student.c*/#include /*包含输入/输出头文件*/#include /*包含字符串处理头文件*/typedef struct /*
5、用于存放生日信息的结构体*/ int year; int month; int day;Date;实现该系统的C程序框架(续)typedef struct /*用于存放学生信息的结构体*/char Num15; char Name10; char Sex; float English; /*英语课成绩*/ float DataStructure; /*数据结构课成绩*/ float CPlusPlus; /*C+课成绩*/ float Sum, Average; /*总成绩、平均成绩*/Student; 实现该系统的C程序框架(续)/*用于存放读入内存中的所有学生信息的全局数组*/Studen
6、t stud100; int count=0; /*存放实际学生人数的全局变量*/ /*各自定义函数原型声明*/void ReadData(); /*读取学生信息到全局数组stud中*/void Display(); /*显示学生信息*/void Search(); /*查询学生信息*/void SearchNum(); /*按学号查询学生信息*/void SearchName(); /*按姓名查询学生信息*/void BackupData(); /*备份学生信息*/实现该系统的C程序框架(续)void main() /*系统功能以菜单的形式提供给用户*/ char choice; ReadD
7、ata(); for( ; ; ) /*显示系统功能菜单*/ printf(* 学生信息管理系统 *n); printf(*n); printf(“* 1显示学生信息 *n); printf(* 2查询学生信息 *n); 实现该系统的C程序框架(续)printf(* 8备份学生信息 *n);printf(“* 0退出系统 *n);printf(*n);printf( 请选择要执行的操作(08):_ n);scanf(%c, &choice);switch(choice) case 1: Display();break; case 2: Search();break; case 0: retur
8、n; default: printf(选择错误!请重新选择。n); /*switch结束*/实现该系统的C程序框架(续) /*for结束*/*main函数结束*/*各自定义函数实现代码*/void ReadData()void Display()void Search() 第1章 面向对象程序设计从上述学生信息管理系统的C程序框架可以看出,运用面向过程程序设计方法所设计出来的程序,数据和操作数据的函数是分离的。所有数据都是公用的,一个函数可以使用任何一组数据,而一组数据又能被多个函数所使用。用面向过程程序设计方法所设计出来的程序模型如图1-1所示。1.1 面向过程程序设计(续)图1-1 面向过
9、程程序设计的程序模型第1章 面向对象程序设计面向过程的结构化程序设计在20世纪60年代末、70年代初从一定程度上缓解了当时的“软件危机”,它在处理较小规模的程序时比较有效。但是,随着人们对大规模软件需求的增长,面向过程的结构化程序设计逐渐显示出它的不足,具体表现在:1.1 面向过程程序设计(续)第1章 面向对象程序设计面向过程的结构化程序设计的不足:1程序设计困难,生产率低下2数据不安全3程序修改困难4代码重用程度低1.1 面向过程程序设计(续)第1章 面向对象程序设计1.2.1 面向对象的编程思想 具体地讲,面向对象编程的基本思想如下: 1. 客观世界中的事物都是对象(object),对象之
10、间存在一定的关系。 2用对象的属性(attribute)描述事物的静态特征,用对象的操作(operation)描述事物的行为(动态特征)。1.2 面向对象程序设计第1章 面向对象程序设计1.2.1 面向对象的编程思想 (续) 3对象的属性和操作结合为一体,形成一个相对独立、不可分的实体。对象对外屏蔽其内部细节,只留下少量接口,以便与外界联系。4通过抽象对对象进行分类,把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是其所属类的一个实例。第1章 面向对象程序设计1.2.1 面向对象的编程思想 (续) 5复杂的对象可以用简单的对象作为其构成部分。6通过在不同程度上运用抽象的
11、原则,可以得到一般类和特殊类。特殊类继承一般类的属性与操作,从而简化系统的构造过程。7对象之间通过传递消息进行通信,以实现对象之间的动态联系。8通过关联表达类之间的静态关系。第1章 面向对象程序设计1.2.2 面向对象的基本概念 (续) 1对象 可以从两个角度来理解对象。一个角度是现实世界,另一个角度是我们所建立的软件系统。第1章 面向对象程序设计1.2.2 面向对象的基本概念 (续) 1对象现实世界中客观存在的任何一个事物都可以看成一个对象(object)。或者说,现实世界是由千千万万个对象组成的。对象可以是有形的,如汽车、房屋、张三等,也可以是无形的,如社会生活中的一种逻辑结构:学校、军队
12、,甚至一篇文章、一个图形、一项计划等都可视作对象。第1章 面向对象程序设计1.2.2 面向对象的基本概念 (续) 1对象对象可大可小。例如学校是一个对象,一个班级也是一个对象,一个学生也是一个对象。同样,军队中的一个师,一个团,一个连,一个班都是对象。第1章 面向对象程序设计1.2.2 面向对象的基本概念 (续) 1对象任何一个对象都具有两个要素:属性和行为属性用于描述客观事物的静态特征行为用于描述事物的动态特征。例如,一个人是一个对象,他有姓名、性别、身高、体重等属性,有走路、讲话、打手势、学习和工作等行为。第1章 面向对象程序设计1.2.2 面向对象的基本概念 (续) 1对象在一个系统中的
13、多个对象之间通过一定的渠道相互联系,如图1-2所示。图1-2 现实世界系统对象模型 属性行为对象1 属性行为对象2 属性行为对象3消息 消息 消息 要使某一个对象实现某一个行为,应当向它传递相应的消息。第1章 面向对象程序设计1.2.2 面向对象的基本概念 (续) 1对象在面向对象的软件系统中,对象是用来描述客观事物的一个相对独立体,是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操纵的一组操作组成。属性是用来描述对象静态特征的一个数据项,操作是用来描述对象行为的一个动作序列。第1章 面向对象程序设计1.2.2 面向对象的基本概念(续) 1对象在开发软件系统时,首先要对现实世界中的
14、对象进行分析和归纳,以此为基础来定义软件系统中的对象。软件系统中的一部分对象是对现实世界中的对象的抽象,但其内容不是全盘照搬,这些对象只包含与所解决的现实问题有关的那些内容;系统中的另一部分对象是为了构建系统而设立的。第1章 面向对象程序设计1.2.2 面向对象的基本概念(续) 2类类是对客观世界中具有相同属性和行为的一组对象的抽象,它为属于该类的全部对象提供了统一的抽象描述,其内容包括属性和操作。第1章 面向对象程序设计1.2.2 面向对象的基本概念 (续) 2类在寻找类时,要用到一个概念:抽象。所谓抽象,是指忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具
15、有共性的事物划分为一类,得出一个抽象的概念。例如,人可以作为一个类,它是世界上所有实体人如张三、李四、王五等的抽象,而实体人张三、李四、王五等则是人这个类的具体实例。第1章 面向对象程序设计1.2.2 面向对象的基本概念(续) 2类类和对象的关系可表述为: 类是对象的抽象,而对象则是类的实例,或者说是类的具体表现形式。第1章 面向对象程序设计1.2.2 面向对象的基本概念(续) 3封装在面向对象方法中,所谓“封装”,指两方面的含义:一是用对象把属性和操纵这些属性的操作包装起来,形成一个基本单位,各个对象之间相对独立,互不干扰。二是将对象中某些部分对外隐蔽,即隐藏其内部细节,只留下少量接口,以便
16、与外界联系,接收外界的消息。这种对外界隐蔽的做法称为信息隐蔽(information hiding)。第1章 面向对象程序设计1.2.2 面向对象的基本概念(续) 4继承所谓“继承”,是指特殊类自动地拥有或隐含地复制其一般类的全部属性与操作。继承具有“是一种”的含义。 汽车卡车轿车图1-3 继承示例 一般类(也称为基类、父类)特殊类(也称为派生类、子类)图1-4 继承的层次与抽象原则的运用汽车卡车轿车火车车辆轮船飞机运输工具 较多地忽 略事物之 间的差别, 得到较一 般的类 较多地注 意事物之 间的差别, 得到较特 殊的类有时一个类要同时继承两个或两个以上一般类中的属性和操作,把这种允许一个特
17、殊类具有一个以上一般类的继承模式称作多继承。图1-5 多重继承示例 销售经理管理人员兼职技术人员销售人员雇员第1章 面向对象程序设计1.2.2 面向对象的基本概念(续) 5消息在面向对象方法中,把向对象发出的操作请求称为消息(message)。对象之间通过消息进行通信,实现了对象之间的动态联系。至于消息的具体用途,它们有很多种,例如,读取或设置对象本身的某个(些)属性的值,请求其他对象的操作。在C+中,消息其实就是函数调用。第1章 面向对象程序设计1.2.2 面向对象的基本概念(续) 6关联关联(association)是两个或多个类之间的一种静态关系。教师指导毕业论文学生1图1-6 关联示例
18、 第1章 面向对象程序设计1.2.2 面向对象的基本概念(续) 7组合组合描述的是类与类之间的整体与部分的关系。例如,汽车与发动机之间的关系,计算机与主板间的关系。组合是具有“整体部分”关系语义的关联,也就是说,组合是关联的一种,只是它还具有明显的“整体部分”含义。第1章 面向对象程序设计1.2.2 面向对象的基本概念(续) 8多态性如果有几个相似而不完全相同的对象,有时人们要求在向它们发出同一个消息时,它们的反应各不相同,分别执行不同的操作,这种情况就是多态现象。在面向对象方法中,所谓多态性(polymorphism)是指由继承而产生的相关而不同的类,其对象对同一消息会作出不同的响应。多态性
19、是面向对象程序设计的一个重要特征,使用它能增加程序的灵活性。第1章 面向对象程序设计1.2.3 面向对象程序设计的优点1从认识论的角度看,面向对象程序设计改变了软件开发的方式 面向对象程序设计强调从对象出发认识问题域 ,对象对应着问题域中的事物,其属性和操作分别刻画了事物的静态特征和动态行为,对象之间的继承、组合、关联和依赖关系如实地表达了问题域中事物实际存在的各种关系。第1章 面向对象程序设计1.2.3 面向对象程序设计的优点(续) 因此,无论是软件系统的构成成分,还是通过这些成分之间的关系而体现的软件系统结构,都可直接地映射到问题域。软件开发人员能够利用人类认识事物所采用的一般思维方式来进
20、行软件开发。数据成员成员函数对象1 对象2 对象3 消息 消息 消息 数据成员成员函数数据成员成员函数图1-7 面向对象的软件系统分析模型 1.2.3 面向对象程序设计 的优点(续)第1章 面向对象程序设计1.2.3 面向对象程序设计的优点(续) 在面向过程的结构化程序设计中,人们常使用这样的公式来表述程序: 程序 = 算法 + 数据结构 而面向对象程序设计则把算法和数据结构封装在对象中。在面向对象程序设计,我们可以这样来表述程序: 对象 = 算法 + 数据结构 程序 =(对象 + 对象 + 对象 + )+ 消息 或 程序 = 对象s + 消息第1章 面向对象程序设计1.2.3 面向对象程序设
21、计的优点(续)2面向对象程序中的数据的安全性高 面向对象程序中的数据及对数据的操作捆绑在一起,被封装在不同的对象中。对象对外隐蔽其内部细节,只留下少量的接口,以便与外界联系。外界只能通过对象提供的对外接口操作对象中的数据,这可以有效保护数据的安全。第1章 面向对象程序设计1.2.3 面向对象程序设计的优点(续)3面向对象程序设计有助于软件的维护与复用 某类对象数据结构的改变只会引起该类对象操作代码的改变,只要其对外提供的接口不发生变化,程序的其余部分就不需要做任何改动,从而把程序代码的修改维护局限在一个很小的范围内。这就对用户需求的变化有较强的适应性。第1章 面向对象程序设计1.2.3 面向对
22、象程序设计的优点(续)3面向对象程序设计有助于软件的维护与复用 面向对象程序设计中类的继承机制有效解决了代码复用的问题。在设计新类时,可通过继承引用已有类的属性和操作,并可在已有类的基础上增加新的数据结构和操作,延伸和扩充已有类的功能,这种延伸和扩充一点不影响原有类的使用。人们可以像使用集成电路(IC)构造计算机硬件那样,比较方便地重用对象类来构造软件系统。第1章 面向对象程序设计面向对象的软件工程包括以下几个阶段:1面向对象分析(object oriented analysis, OOA)2面向对象设计(object oriented design, OOD)3面向对象编程(object o
23、riented programming, OOP)4面向对象测试(object oriented test,OOT)5面向对象维护(object oriented soft maintenance,OOSM)1.3 面向对象的软件开发第1章 面向对象程序设计1面向对象分析 对系统进行面向对象分析,识别出系统中的对象,定义对象的属性和操作,并抽象出对象类。1.4 学生信息管理系统的面向对象分析与设计第1章 面向对象程序设计(1)学生对象与学生类 考虑问题域,识别系统中的对象与类。 该系统是一个学生信息管理系统,每一个被管理的学生都是该系统中的一个对象,所有学生对象都具有相同的属性:学号、姓名、性
24、别、出生日期、英语成绩、数据结构成绩、C+程序设计成绩、总成绩、平均成绩,相同的操作:计算总成绩、计算平均成绩。对所有学生对象的抽象,形成一个学生类。第1章 面向对象程序设计 + 计算总成绩 + 计算平均成绩 - 学号 - 姓名 - - 平均成绩 学生类 + 显示学生信息 + 按学号查询学生信息 + 按姓名查询学生信息 + 打开文件 + 写文件 + 新建文件“顺序表”容器类1 - 学生数组 - 学生总人数图1-8 学生信息管理系统的类图第1章 面向对象程序设计(2)顺序表对象与顺序表类 考虑系统责任,把系统责任所要求的每一项功能都落实到某个或某些对象上。该系统要实现对所有需要管理的学生对象信息的输入(从键盘输入)、输出(输出到屏幕)、存储(存储到外存)、读取(从外存读取)、增加、删除、修改、查询、排序、统计等操作。假定学生对象信息在外存中以文件的形式存放,在内存中以顺序表的形式存放。我们把顺序表看作系统中的一个对象,并形象地称它为“容器”。第1章 面向对象程序设计(2)顺序表对象与顺序表类 顺序表对象作为用来存储学生对象的容器,其数据结构可以选择最简单的数组,因此,顺序表对象应该具有的属性:以学生对象为元素的对象数组、学生总人数。第1章 面向对象程序设计(2)顺序表对象与顺序表类 要对学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026河南信阳市潢川县社会保险中心招聘全日制公益性岗位3人建设考试参考试题及答案解析
- 2026贵港市夏荷学校招聘建设笔试备考试题及答案解析
- 2026重庆市南岸区统计局公益性岗位招聘1人建设笔试模拟试题及答案解析
- 2026福建漳州市万昌电梯安装有限公司招聘9人建设考试参考试题及答案解析
- 2026年宁波市鄞州区区属国企招聘财务会计工作人员10名建设笔试备考试题及答案解析
- 2026浙江嘉兴市中医医院膳食中心招聘5人建设考试备考题库及答案解析
- 2026东方电气集团(成都)共享服务有限公司校园招聘宣传干事1人建设笔试参考题库及答案解析
- 2026年国开电大信托与租赁形考强化训练高能带答案详解(培优B卷)
- 2026年医学检验士题库检测试题含答案详解(完整版)
- 2026年蔬菜种植技术能力检测(有一套)附答案详解
- 大学生国家安全教育的意义
- 第4章 商品发布:创建精致商品页面提高商品转化率
- 盾构通用环管片选型技术课件
- 沈阳天峰生物制药有限公司替代进口高端磷脂产业化项目环境影响报告书
- Unit+4+Extended+reading+课件【高效备课精研+知识精讲提升】 牛津译林版(2020)高中英语必修第三册
- GB/T 2411-2008塑料和硬橡胶使用硬度计测定压痕硬度(邵氏硬度)
- GB/T 23827-2021道路交通标志板及支撑件
- GB/T 11763-2008棉籽
- 小型构件预制厂管理制度
- 过程能力指数cp与cpk及cmk培训教材课件
- 能力素质模型管理手册(埃森哲)
评论
0/150
提交评论