




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2011.9面向对象程序设计ObjectOrientedProgramming2011.9面向对象程序设计ObjectOrientedPr面向对象程序设计概论1从C到C++2类与对象3继承机制4多态性和虚函数5运算符重载6模板7I/O流8异常处理9目录面向对象程序设计概论1从C到C++2类与对象3继承机制4多态第1章面向对象程序设计概论1.1程序设计方法1.2面向对象程序设计的基本概念1.3面向对象程序设计语言1.4C++对面向对象程序设计方法的支持1.5C++程序的实现
第1章面向对象程序设计概论1.1程序设计方法1.1程序设计方法1.1.1
结构化程序设计方法1.1.2
面向对象的程序设计方法1.1程序设计方法1.1.1结构化程序设计方法结构化程序设计方法:强调程序结构的规范性,强调程序设计的自顶向下,逐步求精的演化过程。在这种方法中,待解问题和程序设计语言中的过程紧密相联。1.1.1结构化程序设计方法结构化程序设计方法:1.1.1结构化程序设计方法1.1.1结构化程序设计方法例如要开发一个成绩管理系统,由于问题较复杂,我们将待解的问题分解成若干子问题:输入成绩处理成绩打印成绩待解问题将对应到main()函数,每个子问题对应到main()的调用函数1.1.1结构化程序设计方法例如要开发一个成绩管理系统随着程序规模与复杂性的增长,面向过程的结构化程序设计方法存在明显的不足之处:数据安全性问题可维护性及可重用性差图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。1.1.1结构化程序设计方法随着程序规模与复杂性的增长,面向过程的结构化程在结构化程序设计方法中,程序可表示为:程序=数据结构+算法即程序的要素是数据结构和算法,数据结构是指利用计算机的离散逻辑来量化表达需要解决的问题,而算法则研究如何高效而快捷地组织解决问题的具体过程。1.1.2面向对象程序设计方法在结构化程序设计方法中,程序可表示为:1.1.2面向对象【例1.1】用C++语言描述,用结构化程序设计方法计算矩形的面积。1.1.2面向对象程序设计方法【例1.1】用C++语言描述,用结构化程序设计方法计算矩形的在面向对象的程序设计方法中,对象是数据结构和算法的封装体。根据这个定义,对象是计算机内存中的一块区域。在对象中,不但存有数据,而且存有代码,使得每个对象在功能上相互之间保持相对独立。当然,对象之间存在各种联系,但它们之间只能通过消息进行通信。程序可表示为:
程序=对象+消息1.1.2面向对象程序设计方法面向对象程序设计(Object-OrientedProgramming)在面向对象的程序设计方法中,对象是数据结构和算法的封 从计算机软件设计的角度,引入类和对象的概念,将客观世界和主观世界中的实体和问题直接映射到计算机世界的程序空间。这就是面向对象方法的基本出发点。计算机世界(程序空间)主观世界(问题空间)客观世界(真实空间) 从计算机软件设计的角度,引入类和对象的概念,将客观世界和主现实问题空间面向对象解空间物质:一辆红色的小车,车牌“888”意识:小汽车具体事物:一个对象——小汽车的实例抽象概念:小汽车类现实问题空间面向对象解空间物质:具体事物:汽车类汽车对象1汽车对象2汽车对象3汽车对象4汽车类汽车对象1汽车对象2汽车对象3汽车对象4可以将现实世界中的对象经过抽象,映射为软件中的对象。对象在软件中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class)可以将现实世界中的对象经过抽象,映射为软件中的对【例1.2】用C++语言描述,用面向对象程序设计方法计算矩形的面积。1.1.2面向对象程序设计方法【例1.2】用C++语言描述,用面向对象程序设计方法计算矩形通过这个程序可以知道面向对象程序程序的基本结构。一般情况下,面向对象程序都是由三个部分来构成:类的声明、类的成员的实现和主函数。可见,在面向对象程序设计中,它着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计,来完成实体的建模任务。1.1.2面向对象程序设计方法通过这个程序可以知道面向对象程序程序的基本结构。一般程序例1_2比程序例1_1看起来要烦琐一些。但是,如果以RectangleArea类为基础,通过继承,可以很方便地派生出长方体等新的几何体,实现代码重用。面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。1.1.2面向对象程序设计方法程序例1_2比程序例1_1看起来要烦琐一些。但是,如1.2面向对象程序设计的基本概念1.2.1抽象1.2.2封装1.2.3消息1.2.4继承1.2.5多态1.2面向对象程序设计的基本概念1.2.1抽象抽象就是忽略事物中与当前目标无关的非本质特征,而强调与当前目标有关的本质特征,从而找出事物的共性,并把具有共性的事物划为一类,得到一个抽象的概念。1.2.1抽象抽象就是忽略事物中与当前目标无关的非本质特征,而强调
面向对象方法中的抽象:指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。
1.2.1抽象描述某类对象共有的属性或状态描述某类对象的共有的行为或功能特征。对象数据抽象行为抽象抽象有机结合类进一步抽象面向对象方法中的抽象:指对具体问题(对象)进行概括,抽自行车对象数据抽象自行车类属性:架子尺寸车轮尺寸颜色原材料功能:转弯移动修理1.2.1抽象行为抽象自行车对象数据抽象自行车类属性:架子尺寸1.2.1抽象行数据抽象:floatlength,width,Area;行为抽象:SetData(floatL,floatW);CompueteArea();OutputArea();分析程序清单Li1_2:如果不是计算矩形的面积,关注的特征可能是颜色、大小等。由此可见,对于同一个研究对象,由于所研究问题的侧重点不同,就可能产生不同的抽象结果。1.2.1抽象数据抽象:分析程序清单Li1_2:如果不是计算矩形的面积,关在日常生活中,我们往往只想知道某件物品的功能,而不关心它是怎么工作的。对于程序设计亦是如此,当人们面对某段程序时,只关心它的执行结果,而不关心实现过程以及过程中所用到的数据。封装恰好满足了这一需求。1.2.2封装在日常生活中,我们往往只想知道某件物品的功能,而不关1.2.2封装
面向对象方法中的封装:就是将抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。封装有两个含义:(1)把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位。对象的私有属性只能由这个对象的行为来读取和修改;(2)尽可能隐蔽对象的内部细节,对外形成一道屏障,通过公有行为充当外部接口。1.2.2封装面向对象方法中的封装:就是将抽象出内外机械零件动作调节旋钮读表盘1.2.2封装内外机械零件调节旋钮1.2.2封装例如程序段Li1_2中的类RectangleArea就是在抽象的基础上,将矩形的数据和功能结合起来而构成的封装体。声明的私有成员length、width和Area外部无法直接访问,外界可通过公有行为SetData()、CompueteArea()和OutputArea()与类RectangleArea发生联系。1.2.2封装例如程序段Li1_2中的类RectangleArea
消息:是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。前面所提到的“接口”规定了能向某一对象发出什么请求。也就是说,类对每个可能的请求都定义了一个相关的函数,当向对象发出请求时,就调用这个函数。这个过程通常概括为向对象“发送消息”(提出请求),对象根据这个消息决定做什么(执行函数代码)。1.2.3消息消息:是面向对象程序设计用来描述对象之间通信的机制。发送消息接收并响应消息转向1.2.3消息发送消息接收并响应消息转向1.2.3消息发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。例:老板对下属说:“明天早上八点以前把有关饮料的市场调查报告放到我的办公桌上”。接受消息的对象名发送给该对象的消息名(对象名、方法名、参数)1.2.3消息发送一条消息至少要包括说明接受消息的对象名、发送1.2.4继承在客观世界中,存在着一般和特殊的关系,特殊具有一般的特性,同时又有自己的新特性。运用抽象的原则就是舍弃对象的特殊性,提取其一般性,从而得到适合一个对象集的类。如果在这个类的基础上,再考虑抽象过程中被舍弃的一部分对象的特性,则可形成一个新的类,这个类具有前一个类的全部特征,又有自己的新特征,形成一种层次结构,即继承结构。1.2.4继承在客观世界中,存在着一般和特殊的关1.2.4继承面向对象程序设计中利用继承机制将这种关系模型化。继承就是指特殊类的对象拥有其一般类的属性和行为。
汽车客车货车小轿车大客车载货载人小,速度快大,速度慢1.2.4继承面向对象程序设计中利用继承机制将这1.2.4继承在软件开发过程中,继承进一步实现了软件模块的可重用性。继承意味着“自动地拥有”,即特殊类中不必重新定义已在一般类中定义过的属性和行为,而是自动地、隐含地拥有其一般类的属性与行为。当这个特殊类又被它更下层的特殊类继承时,它继承来的和自己定义的属性和行为又被下一层的特殊类继承下去。不仅如此,如果将开发好的类作为构件放到构件库中,在开发新系统时便可直接使用或继承使用。1.2.4继承在软件开发过程中,继承进一步实现了1.2.5多态
面向对象的通信机制是消息,一个消息可以产生不同的响应效果,这种现象叫做多态。即一个名字,多种语义;或相同界面,多种实现。1.2.5多态面向对象的通信机制是消息,一个消息1.2.5多态
例如,如果发送消息“双击”,不同的对象就会有不同的响应。“文件夹”对象收到双击消息后,会打开该文件夹,“音乐文件”对象收到双击消息后,会播放该音乐。
显然,打开文件夹和播放音乐需要不同的函数体。但是,它们可以被同一条消息“双击”所引发。这就是多态。1.2.5多态例如,如果发送消息“双击”,不同的例1:一个经理第二天要到某地参加某个会议,他会把这同一个消息告诉给不同的人:他的夫人、秘书、下属,这些人听到这个消息后,会有不同的反应:夫人为他准备行装,秘书为他安排机票和住宿,下属为他准备相应的材料。语文、数学、英语、政治、物理、化学、生物高中生计算平均成绩大学生高数、英语、计算机、线性代数例2:例1:一个经理第二天要到某地参加某个会议,他会把这同一1.3.1混合型的OOP语言C++1.3.2纯OOP语言Java1.3面向对象程序设计语言1.3.1混合型的OOP语言C++1.3面向对象程序1.3.1混合型的OOP语言C++
混合型程序设计语言兼有同时支持面向过程的程序设计和支持面向对象的程序设计的特点,C++语言是这类语言的典型代表。1.3.1混合型的OOP语言C++混合型程序设计语1.3.1混合型的OOP语言C++C++语言具有4个方面的优点:降低程序开发和维护的成本。与C兼容,但比用C语言编写的程序更有效率。允许程序员更自由地使用各种库。C++的异常处理机制能够保证在运行期间检查到错误,并转至相应的处理程序,减少了代码的长度和复杂度。1.3.1混合型的OOP语言C++C++语言具有4个方面的1.3.2纯OOP语言Java
Java是一种具有“简单、面向对象的、分布式、解释型、健壮、安全、与体系结构无关、可移植、高性能、多线程和动态执行”等特性的语言。其次,它最大限度地利用了网络,Java的应用程序(Applet)可在网络上传输,可以说是网络世界的通用语言;另外,Java还提供了丰富的类库,使程序设计者可以方便地建立自己的系统。因此Java具有强大的图形、图像、动画、音频、视频、多线程及网络交互能力,使其在设计交互式、多媒体网页和网络应用程序方面大显身手。Java是C++的简化和改进,因而C++程序员可以很快掌握Java编程技术。1.3.2纯OOP语言JavaJava是一种具有1.4C++对OOP方法的支持
C++把问题域中的事物抽象成对象(Object),用数据成员描述该对象的静态特征(属性),用成员函数来刻画该对象的动态特征(行为)。
抽象性继承性封装性多态性C++抽象性1.4C++对OOP方法的支持C++把问题
C++语言允许单继承和多继承。被继承的类称为基类或父类,派生的新类称为派生类或子类。
抽象性继承性封装性多态性C++继承性1.4C++对OOP方法的支持C++语言允许单继承和多继承。被继承的类称为1.4C++对OOP方法的支持在C++语言中,类是支持数据封装的工具,对象是数据封装的实现。C++将数据和相关操作封装在类中,同时通过访问权限来控制对内部数据的访问。抽象性继承性封装性多态性C++封装性1.4C++对OOP方法的支持在C++语言中1.4C++对OOP方法的支持
C++多态分为编译时多态和运行时多态。对编译时多态的支持是通过函数重载和运算符重载实现的;对运行时多态的支持是通过继承和虚函数来实现的。抽象性继承性封装性多态性C++多态性1.4C++对OOP方法的支持C++多态分为1.5C++程序的实现1.5.1编辑C++源程序1.5.2编译和连接源程序1.5.3运行源程序
1.5C++程序的实现1.5.1编辑C++源程序从C++源程序到可执行程序的步骤:
编辑、预处理、编译、连接、调试1.5C++程序的实现从C++源程序到可执行程序的步骤:编辑、预处理、编译、连接、
编辑是将源程序输入计算机,生成后缀为.cpp的文件。
编译(compile)是将程序的源代码转换成机器语言代码。编译后,会生成一个.obj的目标文件。目标代码需要相互衔接成为一个适应一定操作系统环境的程序整体,即连接(link)。C++程序通常是通过同时连接一个或多个目标文件以及一个或几个库而创建的。1.5C++程序的实现编辑是将源程序输入计算机,生成后缀为.cpp的文件。1.5C++源程序C++预处理后的C++源程序目标程序可执行程序运行程序员调试出错信息编辑器预处理器C++编译器链接器1.5C++程序的实现C++C++预处理后目标程序可执行程序运行程序员调试出错信息 在VisualC++6.0运行环境中建立C++应用程序的过程演示1.5C++程序的实现 在VisualC++6.0运行环境中建立C++应用程(1)启动VisualC++6.0,打开File菜单,执行New菜单命令,出现New对话框。在Project页面窗口中选择Win32ConsoleApplication选项,创建一个Win32控制台应用程序。在Projectname编辑框中输入项目名称tc1,在Location编辑框中输入保存项目的路径。(2)在Win32ConsoleApplication-Step1of1对话框中设置控制台应用程序的类型。这里我们要创建一个空项目程序,因此选择第一项Anemptyproject,单击Finish按钮,出现NewProjectInformation对话框,单击OK按钮,将生成一个空项目。(1)启动VisualC++6.0,打开File菜(3)向项目tc1中添加源程序文件。打开Project菜单,选择AddtoProject|New,出现如图1-3所示的添加项目文件对话框。在的Files页面窗口中选择C++SourceFile,在右边的File编辑框中输入C++源程序文件名称cp1,在Location编辑框中输入保存该文件的路径。单击OK按钮,在主窗口DeveloperStudio左边的项目工作区窗口的SouceFiles文件夹目录下出现cp1.cpp文件,双击该文件,在右边的编辑窗口中输入源程序代码。(3)向项目tc1中添加源程序文件。打开Project菜(4)编译运行源程序cp1.cpp。打开Build菜单,选择Buildcp1.exe命令项或按快捷键F7,系统开始对项目cp1进行编译、连接,同时在输出窗口中显示出编译的内容,当出现Hello.exe–0error(s),0warning(s)字样时,表示cp1.exe可执行文件已经正确无误地生成了。在Build菜单中选取Executecp1.exe命令项或按快捷键Ctrl+F5,就可以运行刚刚生成的cp1.exe。(4)编译运行源程序cp1.cpp。打开Build菜单第1章面向对象程序设计概论课件建立新工程(Project)建立新工程(Project)第1章面向对象程序设计概论课件第1章面向对象程序设计概论课件第1章面向对象程序设计概论课件第1章面向对象程序设计概论课件第1章面向对象程序设计概论课件第1章面向对象程序设计概论课件建立新文件(File)建立新文件(File)第1章面向对象程序设计概论课件第1章面向对象程序设计概论课件第1章面向对象程序设计概论课件第1章面向对象程序设计概论课件第1章面向对象程序设计概论课件编辑、编译及运行程序编辑、编译及运行程序实例程序:/*从键盘接收两个整数,输出显示其中的较大数。*/#include<iostream.h>voidmain(){inta,b,max;//声明三个整型变量cout<<"Pleaseentertwointegers:";//提示用户输入cin>>a>>b;//从键盘接收两个整数赋给a、bif(a>=b)max=a;//若a>b则将a赋给maxelsemax=b;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 畜牧养殖废弃物处理与利用技术研究与开发进展考核试卷
- 电气设备备用配件批发考核试卷
- 江西鹰潭市第一中学2025届第五高考测评活动高三元月调考生物试题含解析
- 江西省萍乡市栗县2024-2025学年小学六年级数学毕业检测指导卷含解析
- 肇庆市实验中学高中物理:示波器的奥秘高效课堂教学设计
- 晋中学院《幼儿舞蹈创编与技法》2023-2024学年第一学期期末试卷
- 洛阳理工学院《建设工程招投标与合同管理》2023-2024学年第一学期期末试卷
- 江西医学高等专科学校《人工智能基础与应用B》2023-2024学年第二学期期末试卷
- 上饶县2025届五年级数学第二学期期末经典试题含答案
- 天水师范学院《字体设计、版式设计、InDesign版式设计项目实训》2023-2024学年第一学期期末试卷
- 研究思路图模板
- BowTie模型简介与应用
- 中国风武术太极拳主题PPT模板
- 项目积分制绩效管理办法优秀资料
- 大商业结构拆改加固专项施工方案(44页)
- 苏州园林的艺术特色之拙政园讲解
- 给排水专业ppt课件
- 四年级数学家长会ppt
- Y-Y2系列电机绕组标准数据汇总
- 陡岭河四级水电站安全生产管理目标管理规定
- 工程机械租赁服务方案及保障措施 (1)
评论
0/150
提交评论