




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计,使用教材和参考书目,使用教材:面向对象程序设计实用教程, 清华大学出版社,张海藩,牟永敏,2007.7。 参考书目: 1、面向对象程序设计实用教程习题与上机指导,清华大学出版社,牟永敏,张海藩,2008.2。 2、C+程序设计教程,清华大学出版社,钱能,2005.9。 3、C+程序设计教程实验指导,清华大学出版社,谭浩强等著,2007.8。 教学内容说明:按照教学大纲的教学内容编排,增加了基础知识、上机例题和实用编程技能的教学内容,目标是掌握面向对象程序设计的基本算发与编程能力。(学习方法介绍),第1章计算机与程序设计,首先要理解的问题:什么是面向对象程序设计? 1、基于过程的程序设计 我们已经学习了C语言程序设计,每一位同学都会编写C语言程序了,我们知道C语言程序设计是一系列操作命令(操作过程、C语句)的有序集合,这种设计方法,叫做基于过程的程序设计。 主要特点是: (1) 按照执行操作的时间顺序、按照操作过程编写程序。 (2) 所定义的数据结构本身不具有行为(函数)特性。 (3) 过程化程序设计方法主要采用:自顶向下,逐步求精的方法展开。 (4) 过程化程序设计方法主要体现在功能划分与过程内部的编写规则,形成结构化程序设计方法。,例1:基于过程的程序设计。,首先,定义一个结构体struct Point。,再定义一个main函数,在其内部定义一个该结构体的变量叫pt,并对它进行赋值,最后,将pt这个数据成员输出。,#include struct Point int x; int y; ;,void main() Point pt; pt.x=8; pt.y=8; coutpt.xendlpt.yendl; ,把这段代码编译、运行一下,可以看到输出:x为8,y为8。 可见,C + +与C语言中使用的结构体是完全一样的。,2、面向对象程序设计 随着程序设计方法的创新,把C语言中的结构类型(struct)可以看成一种特殊的类型,即:对象类型。 如:点对象类型。 struct Point int x; int y; ; 又如:学生对象类型。 struct student char name20; /*姓名*/ char sex; /*性别*/ int age; /*年龄*/ float height; /*身高*/ float weight; /*体重*/ char addr50; /*住址*/ ; 这样,经验丰富的程序员就可以对这个“对象”数据进行读写、查找等操作了。,#include struct Point int x; int y; void output() coutxendlyendl; ;,在结构体中增加一个函数,叫:output, 由它来代替输出的功能。,void main() Point pt; pt.x=8; pt.y=8; /coutpt.xendlpt.yendl; pt.output(); ,主程序中就不需要cout函数输出了,利用pt的内部成员函数output进行输出。编译、运行,结果是一样的。,例2:面向对象程序设计。,我们知道:在C语言的结构体中是不允许有函数的。,然而,通过这个例子可以看出:在C+的结构体中是可以包含函数的。,因此,利用 C+结构体中的内部函数就可以将一些操作封装到结构体内部,在使用时,只需去调用这个成员函数就可以了。,这是C+的封装性。,#include /struct Point class Point public: int x; int y; void output() coutxendlyendl; ; void main() Point pt; pt.x=8; pt.y=8; pt.output(); ,我们把struct注释起来,,然后,换成一个class,并加上一个public。,再编译、运行,结果是一样的。,例3:面向对象程序设计。,可见,结构体(类型)转变成了类(类型)。,也就是说,我们的改动并不大,我们仅仅是将struct换成了class,然后,增加了一个public标识符,那么,所有的运行结果和我们刚才用struct定义是一样的。,换句话说,在C+中,结构体和类是可以通用的,结构体也是一种特殊的类,他特殊,是因为,他是用struct定义的一种类。,综上所述,面向对象的程序设计:是把一些行为、方法、属性都归结到一个“对象类型”身上,只有有了这个具体的对象后,才会有这个对象的方法(成员、成员函数)产生,那么,我们把这些方法,按照合理性,都归到不同的“对象类型”上面,这就是面向对象的程序设计。 实现方法:采用结构类型(struct)的演化数据类型“对象类型(class)”来建立数据结构,在这个“对象”数据类型中增加了“成员函数”,也就增加了“对象”的行为、方法、属性。,3、结构体与类的区别,类的访问权限,当然,struct和class类还是有区别的,主要区别在访问控制方面,如果我们把class 的public注释起来,再编译一下,就可以看到出现一个错误:不能访问私有成员。在类中所声明的成员变量和函数,默认是私有成员private。只有加上public,变成公有变量,才与结构体的结果一样。,可见,在结构体中,所有的成员,缺省情况下都是public的,都可以在外部被访问。而对于一个类来说,缺省情况下,他的数据成员和函数都是私有的private,不能够被外部进行访问的。 这是结构体和类的一个区别。除此之外,在C+中,结构体和类是可以通用的。,4、什么是类?什么是对象?,抽象性是将有关事物的共性归纳、集中在一起,表示了同一类事物的本质。 C+中的数据类型就是对一批具体的数的抽象。 例如:“整数类型”是对所有整数的抽象,具体的整数就是属于同一“类”的“对象”。 类是对象的抽象, 对象是类的特例。,上面的例子中引入了类point,我们就要从面向对象的思想去考虑问题了。point中定义的pt,就不叫变量了,叫做用point这个类声明的一个对象,或者叫做实例化了一个对象,那么,什么是类?什么是对象? 类是抽象出一些事物的共有的属性。 对象是具有类的共有属性的具体属性值的一个事物。 有了类和对象的概念,我们就可以从面向过程的语言转化为面向对象的语言。,举例:设计一个“开车启动”的方法,可以把“开车启动”作为一种参数传进来,开这个车,这是面向过程的方法。 用面向对象的方法设计这个函数:把“开车启动”设置成汽车(类)本身的一个方法,而我们去调用汽车的“开”的方法就可以了。 这样,我们就把面向过程的方法变成了面向对象的方法。 这就是面向对象的设计思路。,5、面向对象的设计思路,把一些行为都归结到一个对象身上,只有有了这个具体的对象后,才会有这个对象的方法产生,那么,我们把这些方法,按照合理性,都归到不同的事物上面,这就是一个面向对象的程序设计。,1.1 计算机的基本结构,计算机的基本结构主要是由存储器、运算器、控制器、输入设备和输出设备等五个部件组成。 存储器:是用来存储数据,大致分为内部存储器(内存)和外部存储器(硬盘、软盘等); 运算器:是用来完成各种算术运算和逻辑运算; 控制器:用来控制计算机的各个部件协调工作; 输入设备和输出设备:是用来为数据的输入和输出服务的。,1.1.1 计算机硬件的基本组成,图1.1 计算机的基本结构,第一步:用输入设备把事先编制好的解题步骤(即程序)和原始数据输入到存储器指定编号的 地方(内存单元)存放起来。 第二步:命令计算机从第一条指令开始执行程序,则计算机在程序控制下自动完成解题的全过程。,1.1.2 计算机的工作过程(以汇编为例),60年代,冯诺依曼提出了程序存储原理,计算机走向了现代化。 目前,程序设计语言的发展已经经历了四代,第五代语言尚处于萌芽状态。,1.2 程序设计语言,第一代语言 第一代程序设计语言是机器语言,它是计算机所特有的,不同计算机有不同的机器语言。 第二代语言 汇编语言,也称为符号语言。用含义较鲜明的符号,代替机器语言中的二进制编码,因此看起来较直观,不易出错。,第三代语言 称为算法语言,算法语言的基本组成成分是各语句(如结构化程序设计),比用机器语言或汇编语言编写程序更加方便、简单和直观。 第四代语言 实质上是可以快速开发应用软件的各种高生产率的软件工具的统称。如VC+、Delphi等。 第五代语言 多数人认为,第五代语言将是智能化的语言。 PROLOG语言可能是第五代语言最著名的雏形。,使用过程性语言编写的程序,其功能是隐含在程序代码中的。当应用系统的功能比较复杂时,程序元素的相互关系就十分复杂。这样的应用系统不易开发,而且很难维护。 为此,人们在开发软件的长期实践过程中,总结出一些设计原理并研究出一些系统化的技术方法,用于面向过程程序设计,能够提高开发效率,增加系统的可理解性和可维护性。,1.3 面向过程程序设计,模块是: 数据说明、可执行的语句等程序元素的集合,它是单独命名的而且可以通过名字来访问,所谓模块化,是把一个程序划分成若干个模块,每个模块完成一个子功能,把这些模块组装成一个整体,可以完成指定的功能 ,如:函数。 请注意:在把程序划分成模块的时候,模块规模应该适当。,1.3.1 模块化,人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。 如:各式各样的人抽象为人类。抽象是对事物共性的高度概括。当我们考虑对任何问题的模块化解法时,可以提出许多抽象的层次。,1.3.2 抽象,信息隐藏原理指出,在设计和确定模块时,应该使得一个模块内包含的信息(数据和过程)对于不需要这些信息的模块来说,是不可访问的(又称不可见的)。 局部化,是指:把一些关系密切的程序元素物理地放得彼此靠近,处于同一局部区城内。,1.3.3 信息隐藏和局部化,模块独立是指在设计程序结构时,应尽量使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系尽可能简单。 耦合是用于衡量不同模块彼此间互相依赖(连接)的紧密程度。 内聚是用于衡量一个模块内部各个元素彼此结合的紧密程度。 高内聚和低耦合是进行模块化设计的重要标准,实践表明内聚更重要。,1.3.4 模块独立,结构程序设计是一种设计程序的技术, 适应于面向过程和面向对象的编程方法,是实现模块的具体技术。 采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。,1.3.5 结构程序设计技术,三种基本的控制结构,结构使用结构程序设计技术设计程序的主要好处: 自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高开发效率; 用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解; 仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致; 控制结构有确定的逻辑
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 14 圆明园的毁灭 公开课一等奖创新教案
- 化妆实训室安全培训课件
- 2025年秋部编版语文五上 21 古诗词三首(公开课一等奖创新教案++备课素材)
- 先从自己做起课件
- 勾股定理说课稿课件
- 勾股定理的逆定理课件
- 康复技术专业介绍
- 家庭教育学解读
- 灯箱制作技术分析
- 2025年轨道车司机(高级技师)职业技能鉴定考试题库(含答案)
- 2025至2030中国门诊外科中心行业项目调研及市场前景预测评估报告
- 2025年食药监局考试题库
- 2024年下半年黑龙江省嫩江铁路有限责任公司校招笔试题带答案
- 2025廉洁答题题库与答案
- 整本书阅读教学课件
- 企业法制讲座课件
- 【高朋律师事务所】RWA发展研究报告:法律、监管和前瞻(2025年)
- 汽车网销电话邀约话术培训
- 2025年福州房地产市场分析报告
- 《大学生心理健康教育》课程教案
- 音乐感知:从听觉到绘画
评论
0/150
提交评论