张其文c++教程面向对象概述.ppt_第1页
张其文c++教程面向对象概述.ppt_第2页
张其文c++教程面向对象概述.ppt_第3页
张其文c++教程面向对象概述.ppt_第4页
张其文c++教程面向对象概述.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

,第1章面向对象程序设计概述,第2章C+概述,第3章类与对象,第4生类与继承,第5态性,第6章模板,第7章C+的I/O流类库,C+面向对象程序设计,程序的目的:用于数学计算主要工作:设计求解问题的过程缺点:对于庞大、复杂的程序难以开发和维护,面向过程程序设计的基本概念,设计思路自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。程序结构按功能划分为若干个基本模块,形成一个树状结构。各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。其模块化实现的具体方法是使用子程序。,面向过程程序设计的基本概念,优点有效地将一个较复杂的程序设计任务分解成许多易于控制和处理的子任务,便于开发和维护。,面向过程程序设计的基本概念,程序数据结构算法,缺点:可重用性差、数据安全性差、难以开发图形界面的应用把数据和处理数据的过程分离。当数据结构改变时,所有相关的处理过程都要进行相应的修改。图形用户界面的应用,很难用过程来描述和实现,开发和维护都很困难。,面向过程程序设计的基本概念,将数据及对数据的操作封装在一起,作为一个相互依存、不可分离的整体对象。对同类型对象抽象出其共性,形成类。类通过外部接口,与外界发生关系。对象与对象之间通过消息进行通讯。,面向对象程序设计的基本概念,优点程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。,程序对象消息,面向对象程序设计的基本概念,不同于面向过程的程序设计中以具体的解题过程为研究和实现的主体,面向对象的程序设计是以需解决的问题中所涉及到的各种对象为主要矛盾。更确切地,面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。,对象、类与实体,图1对象、实体与类,对象、类与实体,类是面向对象技术中一个非常重要的概念。简单地说,类是同种对象的集合与抽象。为了处理问题的方便,在面向对象的程序设计中定义了类的概念来表述同种对象的公共属性和特点。从这个意义上来说,类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。,类,“对象”是现实世界的实体或概念在计算机逻辑中的抽象表示。具体地,对象是具有唯一对象名和固定对外接口的一组属性和操作的集合。其中对象名是区别于其他对象的标志;对外接口是对象在约定好的运行框架和消息传递机制中与外界通信的通道;对象的静态属性表示了它所处的状态;而对象的操作则用来改变对象的状态以达到特定的功能。对象最主要的特点是以数据为中心,它是一个集成了数据和其上操作的独立、自恰的逻辑单位。,对象,状态和行为是对象的主要属性。对象的状态又称为对象的静态属性,主要指对象内部所包含的各种信息,也就是变量。每个对象个体都具有自己专有的内部变量,这些变量的值标明了对象所处的状态。当对象经过某种操作和行为而发生状态改变时,具体地就体现为它的属性变量的内容的改变。通过检查对象属性变量的内容,就可以了解这个对象当前所处于的状态。,对象的属性,图2对象的属性和行为,从图2中可以看出,对象的方法一方面把对象的内部变量包裹、封装、保护起来,使得只有对象自己的方法才能操作这些内部变量;另一方面,对象的方法还是对象与外部环境和其他对象交互、通信的接口,对象的环境和其他对象可以通过这个接口来调用对象的方法,操纵对象的行为和改变对象的状态。,对象的属性,事件:用户或系统中发生的任何活动。,消息:描述事件的一些特殊符号(信息)。,对象的交互,方法:作用在对象上的行为,对象的交互是通过对象的方法完成的。消息:一个对象向另一个对象发出的请求被成为消息。对象有两类消息:共有消息和私有消息。消息有三个性质:同一个对象可以接收多个不同的消息;相同形式的消息可以传递给不同的对象;对象对消息的响应不是必须的。,对象的交互,抽象:是指通过特定的实例或例子抽取共同性质形成概念的过程。封装:是把对象的属性和服务结合成一个独立的系统单位。包含两个含义:把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。,抽象与封装,封装的原则在软件上的反映是:使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的交叉感染,使软件错误能够局部化,大大减少查错和排错的难度。,抽象与封装,balanceinterestYTDowneraccount_numberMakeDepositWithDrawTransfer,MakeDepositWithDrawTransfer,用户不能存取的数据,实现细节(对用户不可见),用户,接口,特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。例如,轮船、客轮;人、大人。一个类可以是多个一般类的特殊类,它从多个一般类中继承了属性与服务,这称为多继承。例如,客轮是轮船和客运工具的特殊类。通常我们称一般类为父类(superclass,超类),特殊类为子类(subclass)。,继承性,具有继承关系的类之间具有以下特性:类间具有共享特征类间具有差别或新增部分类间具有层次结构继承对于软件复用有着重要意义,是面向对象技术能够提高软件开发效率的重要原因之一。,继承性,继承的分类1、单继承:子类只从一个父类继承;2、多继承:子类从一个以上父类继承。,继承性,对象的多态性是指在父类中定义的属性或服务被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或服务在父类及其各个子类中具有不同的语义。例如:几何图形的绘图方法,椭圆和多边形都是几何图的子类,其绘图方法功能不同。,多态性,1、编译时多态性编译时确定下来的多态性:重载2、运行时多态性动态运行时才可确定,主要通过继承结合动态绑定获得:重定义,多态的类型,结构化程序设计(面向过程的语言)设计思路:自顶向下、逐步求精程序结构:由模块形成的树形结构基本组成结构:顺序、选择、循环面向对象的方法设计思路:对客观事物的抽象程序特点:对类(对象的存在形式)进行结构化程序设计类提供对外接口,结构化程序与面向对象程序,问题:输入圆的半径,求圆的周长和面积,数据描述:半径,周长,面积均用实型数表示数据处理:输入半径r;计算周长=2*r;计算面积=*r*r;输出半径,周长,面积;,结构化程序与面向对象程序,方法一,用结构化方法编程,求圆的周长和面积,/countthegirthandareaofcircle#includevoidmain()doubler,girth,area;constdoublePI=3.1415;coutr;girth=2*PI*r;area=PI*r*r;coutradius=rendl;coutgirth=girthendl;coutarea=areaendl;,数据描述,数据处理,输入数据,输出计算结果,注释行,方法二,用面向对象方法编程,求圆的周长和面积,分析,“圆”是抽象的类类型,建立具体的圆(对象),半径?,圆的周长?面积?,实例化,方法二,用面向对象方法编程,求圆的周长和面积,分析,圆类数据成员半径成员函数置半径值求圆的半径求周长求面积,实例化,#includeclassCircledoubleradius;public:voidSet_Radius(doubler)radius=r;doubleGet_Radius()returnradius;doubleGet_Girth()return2*3.14f*radius;doubleGet_Area()return3.14f*radius*radius;voidmain()CircleA,B;A.Set_Radius(6.23);coutA.Radius=A.Get_Radius()endl;coutA.Girth=A.Get_Girth()endl;coutA.Area=A.Get_Area()endl;B.Set_Radius(10.5);coutB.radius=B.Get_Radius()endl;coutB.Girth=B.Get_Girth()endl;coutB.Area=B.Get_Area()endl;,Circle类定义,数据成员,成员函数,建立对象(类变量),通过对象调用类的成员函数,编辑程序,在VC集成开发环境选择新建文件命令,程序的编译执行,编辑程序,在弹出对话框选择文件类

温馨提示

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

评论

0/150

提交评论