面向对象基础知识课件

上传人:仙*** 文档编号:242013324 上传时间:2024-08-09 格式:PPT 页数:49 大小:292.07KB
返回 下载 相关 举报
面向对象基础知识课件_第1页
第1页 / 共49页
面向对象基础知识课件_第2页
第2页 / 共49页
面向对象基础知识课件_第3页
第3页 / 共49页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计引论,C+是以C语言为基础,增加了面向对象程序设计的功能,适合编制复杂的大型软件系统。,重点:,理解,面向对象,的思想、对象、类、继承、多态性等概念,为什么要面向对象?,面向对象程序设计引论 C+是以C语言为基础,,1,程序设计高级语言可分为四代:,第一代,对数学表达式有很强的运算处理能力,,如FORTRAN;,第二代,如何有效表达,算法,,如PASCAL,C;,第三代,引入了抽象数据类型,,如Ada;,第四代,面向对象程序设计,,如Simula、Smalltalk、Object-C、C+,Java;,程序设计高级语言可分为四代:第一代对数学表达式有很强的运算处,2,1 面向过程程序设计,面向过程:,采用模块化、按照,解决问题的步骤分,步设计程序。,面向过程设计思想的核心,功能分解,面向过程设计将数据结构和过程作为,两个实体,对待,,重点在过程,。,在面向对象程序设计方法出现之前,占主流的是结构化程序设计方法,即面向过程的程序设计语言。,1 面向过程程序设计面向过程:采用模块化、按照解决问题的步,3,举例说明:银行系统,该系统允许顾客开设不同的银行账户,其中包括现金账户、支票账户和贷款账户,同时允许顾客存款、取款和转账。,根据面向过程的程序设计方法,step 1:,将银行系统分解成三个模块:,存款,MakeDeposit,取款,WithDraw,转账,Transfer,举例说明:银行系统该系统允许顾客开设不同的银行账户,其中包,4,step 2:,接着建立一个简单的数据结构,:,struct account,char name;/*,姓名,*/,unsigned long accountId;/*,账号,*/,float balance;/*,余额,*/,float interestYTD /*,年利息,*/,Step 3:,按照一定的操作顺序编写程序。,step 2:接着建立一个简单的数据结构:,5,面向对象思想的引入,面向过程的设计存在以下缺点:,1,、可重用性差,2,、可维护性差,3,、安全性差,产生主要原因:,数据和过程的分离,解决途径:,引入面向对象程序设计思想,面向对象思想的引入面向过程的设计存在以下缺点:,6,对象与类是面向对象程序设计中最重要的概念。,本节要求:,理解并掌握对象、类的概念,以及它们之间的关系,对象与类是面向对象程序设计中最重要的概念。,7,2 面向对象,对象与类是面向对象程序设计中最重要的概念。,本节要求:,理解并掌握对象、类的概念,以及它们之间的关系,2 面向对象对象与类是面向对象程序设计中最重要的概念。,8,对象是客观存在的实体。,eg:one person,a pen,a cat,a bird.,什么是对象?,对象有两方面的特征,其一,状态特征。笔的大小,颜色等,,其二,行为特征。鸟会飞,会跳跃等。,对象是客观存在的实体。什么是对象?对象有两方面的特征,9,现实世界由形形色色的“对象”构成。对象由静态属性和动态行为构成。,对象=属性+行为,对象应具有的特性:,必须有一个区别于其它对象的名字,用,属性,(或叫状态)来描述它的某些特征,有一组,操作,,每一个操作决定对象的一种行为,面向对象程序设计中:,对象=数据+操作,现实世界由形形色色的“对象”构成。对象由静态属性和动态行为构,10,注意:对象的状态不仅仅是初等的数据类型,许多对象可以将另一个对象作为他们状态的一部分。,一辆车 发动机,发动机,座位,车轮,车轮,车轮,座位,座位,气缸,注意:对象的状态不仅仅是初等的数据类型,许多对象可以将另,11,类(class),什么是类?,类是具有共同特征,的对象的抽象。,eg:Person,Car,Cat,Bird.,类(class)什么是类?类是具有共同特征,12,类:,对一组具有共同的属性特征和行为特征的对象的抽象。,类是多个对象的抽象,对象是类的一个实例,如各种鸟具有羽毛,翅膀,嘴,会飞。把这些鸟的对象归为一类,即鸟类,鸟类具有多个对象共有的状态和行为。,在面向对象程序设计中,正是采用类的概念定义一组具有共同特征的对象。,类:对一组具有共同的属性特征和行为特征的对象的抽象。如,13,类的概念以及与对象的关系,类和对象是,抽象与具体,的关系。,类只在编译时存在;对象是运行时存在的实体。,类的概念以及与对象的关系,14,例如:教师王明是一个对象,对象名:王明,对象的属性:,年龄:,30,学历:,博士,职称:教授,专业:计算机软件,对象的操作;,吃饭,授课,一个个象王明一样的具体的老师构成了世界上没有的抽象的“教师”类。,例如:教师王明是一个对象,15,对象的交互,在面向对象程序设计中,对象之间也需要联系,我们称为对象的交互。,消息传递,面向对象程序设计技术提供的一种机制,允许一个对象与另一个对象的交互。,消息,一个对象向另一个对象发出的请求。,eg:,顾客对象可以请求银行账户对象的服务,如,“,存入,300,元,”,、,“,取出,200,元,”,等,当银行账户对象接到请求后,执行相应操作,对象的交互在面向对象程序设计中,对象之间也需要联系,我们称为,16,方法,也称为操作,类似于面向过程设计中所说的函数。方法定义了一系列计算步骤。,消息具有三个性质:,1,、同一个对象可以接收不同形式的多个消息,做出不同的响应,2,、相同形式的消息可以传递给不同的对象,所做出的响应可不同。,3,、消息的发送可以不考虑具体的接受者,对象之间的消息传递机制实际上对应于面向过程设计的过程调用,其实质是方法,(,函数)的调用,方法也称为操作,类似于面向过程设计中所说的函数。方法定义,17,消息的分类,公有消息,由其他对象直接发送给它的消息。被调用的方法,在所属的类中由,public,说明,私有消息,自己向自己发送的消息,由,private,说明,消息的分类,18,类的确定与划分,面向对象设计是将系统分解成若干对象,对象之间的作用构成了整个系统。,如何把实际问题的事物汇聚成一个个的,“,类,”,,是面向对象程序设计的一个难点。类划分得当,既有利于对程序扩充,又可以提高代码的可重用性。,如何确定和划分类?,基本原则:寻求一个大系统中事物的共性,将具有共性的系统成为一个确定的类。(类不是函数的集合),类的确定与划分面向对象设计是将系统分解成若干对象,对象之间的,19,3 面向对象程序设计,面向对象是一种,主体动作模式,面向对象程序设计方法:,把问题看成由许多彼此相互联系的对象组成。,面向对象方法的出发点:,从认识系统的方法角度,来分析、设计和实现一个系统,符合人们的日常自然的思维习惯。,3 面向对象程序设计 面向对象是一种主体,20,面向对象程序是如何设计的?,在面向对象的程序设计中,,重点,在于,数据,,而不是过程。数据构成了软件分解的基础,而不是功能。,以银行系统为例:,解决银行账户的问题重点应该放在银行账户上,Step1:,确定银行账户的基本数据;,Step2:,根据顾客在账户(数据)中要做什么,提出相应的操作;,面向对象程序是如何设计的?在面向对象的程序设计中,重点,21,注意:,不能将数据和相应操作看成两个分离的实体,而是作为一个完整的实体对待。把银行账户的操作定义在数据上,,在面向对象程序设计方法中,,银行账户就是一个类,称为银行账户类,而每个具体的银行账户就是银行账户类的一个对象。,Class BankAccout,public:,void MakeDeposit(float amount);,float WithDraw(float amount);,bool Transfer(BankAccount,private:,float balance;,float interestYTD;,char*owner;,int account_number;,;,注意:不能将数据和相应操作看成两个分离的实体,而是,22,面向对象程序设计的定义,定义:,面向对象程序设计是一种新的程序设计范型。,主要特征:程序=对象+消息,主要特点是:,1,、程序由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。,2,、程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应操作。,3、类有继承关系产生相互间的关系。,面向对象程序设计的定义定义:,23,面向对象最突出的三个特性:,封装性,将数据抽象的外部接口与内部实现的细节清楚地分开,继承性,子类可以从其父类继承属性和操作,提高了编程效率,多态性,不同的对象收到相同的消息时产生多种不同的行为方式,4 面向对象程序的特性,面向对象最突出的三个特性:4 面向对象程序的特性,24,封装,封装(Encapsulation):封装隐藏了对象的实现细节。,Cat,封装封装(Encapsulation):封装隐藏了对象的实现,25,封装,类名1,属性,操作(服务),类名2,属性,操作(服务),封装类名1类名2,26,封装?,目的:实现数据隐藏,可以实现模块化。,以录音机为例,录音机上有若干键,这些键安装在表面,通过这些键与录音机交互,录音机的内部是隐蔽的,不可见的。这就是,封装的原理,。那么如何知道放音按哪个键,停止按哪个键呢?,封装?,27,是录音机的,操作说明书,告诉我们如何操作录音机的,但操作说明书并不告诉我们录音机的内部如何去做这些事。,操作说明书在录音机做什么(,what to do,)与怎样做(,how to do),之间做了明确的区分。这就是,所谓抽象,的原理。抽象出来的是做什么,而不关心如何实现这些操作。,是录音机的操作说明书告诉我们如何操作录音机的,但操作说明书并,28,在oop中数据的封装:,是指将数据结构和作用于数据结构上的一组操作放在一起组成一个实体-对象。数据的表示方式和对数据的操作细节被隐藏起来,用户通过操作接口对数据进行操作。对用户来说,只要知道如何通过操作接口操作数据,而并不知道是如何做的,也不知道数据是如何表示的。,在oop中数据的封装:是指将数据结构和作用于数据结构上的一组,29,数据的抽象,则是通过对数据实例的分析,抽取其共同性质的结果。,抽象和封装是互补的,好的抽象有利于封装,封装的实体则帮助维护抽象的完整性。,下面以银行账户类为例:,实现细节,MakeDeposit,Withdraw,Transfer,balance;,interestYTD,owner,account_number,MakeDeposit,Withdraw,Transfer,数据的抽象则是通过对数据实例的分析,抽取其共同性质的结果。,30,类的封装:,封装是把类对象的状态方法封闭起来,形成一个能动的实体,并提供访问,它们的接口机制。,面向对象程序设计语言,是把数据和处理数据的操作结合在一起而构成的一个实体,封装在一个模块即一个类内。对象的封装性减少了程序各部分之间的依赖,使程序复杂性降低,可靠性提高。,类的封装:封装是把类对象的状态方法封闭起来,面向对象,31,理解对象的封装,-,对象要具有封装性,应该具备的条件:,(1).对象具有一个清楚的边界,对象的私有数据、成员函数的细节被封装在该边界内;,(2).具有一个描述对象与其它对象如何相互作用的接口,该接口必须说明消息传递的使用方法;,(3).对象内部的代码和数据应该受到保护,其它对象不能直接修改;,对象的封装机制,可以将对象的使用者和设计者分开,使用者只需要知道对象的接口。,封装的结果实际上隐藏了复杂性,提供了代码重用性。,理解对象的封装-对象要具有封装性,应该具备,32,继承,继承的概念来源现实生活,例如:子女从父母身上继承了一些特性,血型、种族等,下图说明了两个对象的继承关系:,两个对象的继承关系,我的父母,我,继承继承的概念来源现实生活我的父母我,33,我们再以动物学中的动物继承性的研究为例。在图,1.4,的继承链中,每个类继承了它前一个类的所有特性。,图,1.4,动物链,哺乳动物,热血、有毛发、用奶哺乳幼子,狗,有犬牙、食肉、特定的骨骼结构、群居,柯利狗,尖鼻子、身体颜色红白相间、适合放牧,我们再以动物学中的动物继承性的研究为例。在图1.4的继承链中,34,对象从类中创建出来,在面向对象的程序设计中,类具有层次化结构,一个类的上一层为父类,下一层为子类,子类可以继承父类的变量方法,且这种继承具有传递性,即一个类可以继承上一层和其再上一层的变量、方法。这种可传递的继承性使得下层多个相似的对象可以共享上层和其上一层的数据和程序代码。这种代码共享和代码可增添的继承性的特性是C+灵活方便,提高效率,。,类的继承:,是指新类继承原有类的全部数据、函,数和访问机制,对象从类中创建出来,在面向对象的程序设计中,类具有层次,35,继承性是指通过继承关系利用已有的类构造新类。,广义上说,指能够直接获得已有的性质和特征,而不必重复定义它们。面向对象把类组成一个层次结构系统(类等级):一个类的上层可以有父类,下层可以有子类,父类,属性,操作,子类,继承来的特性,子类的属性,子类的操作,类层次继承 Inheritance,继承性是指通过继承关系利用已有的类构造新类,36,类层次继承 Inheritance,Material object,Animal,Mammal,Human,Shopkeeper,Florist,Flo,类层次继承 InheritanceMaterial ob,37,Material Objects,Animal,Plant,Mammal,Dog,Human,Flower,Shopkeeper,Doctor,Florist,Flo,Dentist,Kent,Grandmas flower,Goophy,Material ObjectsAnimalPlantMam,38,若类间具有继承关系,则它们具有几个特性:,类间具有共享特征(包括数据和程序代码的共享),类间具有差别或新增部分(包括非共享的数据和程序代码),类间具有层次结构,若类,B,继承类,A,,则属于类,B,的对象具有类,A,的一切特征(包括数据属性和操作),称被继承类,A,为基类或父类或超类;称,B,为类,A,的派生类或子类。也可说,类,B,从类,A,派生而来。,如果类,B,从类,A,派生,类,C,又从类,B,派生,就构成了类的层次。其中,类,A,是类,B,的直接基类,是类,C,的间接基类。类,C,具有类,A,和类,B,的所有特性,若类间具有继承关系,则它们具有几个特性:类间具有共享特征,39,继承机制允许派生类继承基类的数据和操作(即数据成员和成员函数),允许派生类使用基类的数据操作。同时,派生类还可,增加新,的操作和数据。,例如,子女类可从父母类继承房子和汽车,也可使用房子和汽车,还可对房子进行再装修。,继承机制允许派生类继承基类的数据和操作(即数据成员和成员,40,为什么要提供继承机制?,继承的作用:,1.,避免代码重复开发,减少代码和数据冗余,2.,通过增强一致性来减少模块间的接口和界面,为什么要提供继承机制?继承的作用:,41,继承的分类,从继承源上分:,单继承:只直接继承了一个基类的特征,多继承:指多个基类派生出一个派生类,图,1.5,单继承,图,1.6,多继承,窗口,文本窗口,视图窗口,电动车,车,玩具,继承的分类从继承源上分:窗口文本窗口视图窗口电动车车玩具,42,多态性,多态性是面向对象的重要特性。是指不同的对象收到相同的消息是产生多种不同的行为方式。,例如,我们有一个窗口(,window),类对象,还有一个棋子(,chessPiece,)类对象,对它们发出,“,移动,”,的消息,,“,移动操作,”,在,window,类对象和,chessPiece,类对象上可以有不同的行为。,多态性 多态性是面向对象的重要特性。是指不同的对象收到,43,C+,语言支持的两种多态性,C+,支持,编译时的多态性,和,运行时的多态性,。编译时的多态性通过,重载,来实现;运行时的多态性通过,虚函数,来实现,程序运行的程序版本需要在运行时通过对象发送的消息来确定。,C+语言支持的两种多态性 C+支持编译时,44,重载的概念,重载包括,函数重载,和,运算符重载,函数重载,指一个标识符可同时用于为多个函数命名,运算符重载,指一个运算符可同时用于多种运算。,也就是说,相同名字的函数或运算符在不同的场合可表现出不同的行为。,重载的概念重载包括函数重载和运算符重载,45,举例,函数重载,class A,Public:,void Print(int i),语句段,1,void Print(float f),语句段,2,void Print(const char*c),语句段,3,/,其它语句,;,在类的定义中重载了,3,个函数,名字都是,print,它们有各自的功能。当有使用,Print,函数的消息发送时,跟参数的不同来调用不同的同名函数。如:,Print(20),执行语句段,1,,,Print,(,“welcome”),将自动匹配语句段,3,并执行,举例函数重载class A,46,为什么使用重载?,使用重载的,目的,:更好表达行为共享,减少了程序员记忆操作名的负担。,例如:打印整数和实数,不需要,PrintInteger,和,PrintFloat,两个操作名,只需一个名字,Print,编译时确定具体调用哪一个方法。,为什么使用重载?使用重载的目的:更好表达行为共享,减少了程序,47,5 面向对象程序的优点,可重用性,可扩充性,可靠性高。,5 面向对象程序的优点可重用性,可扩充性,可靠性高。,48,小结,主要讲述了,面向对象的概念,面向对象程序的特点,面向对象程序的优点。,要求重点掌握,面向对象的概念,和,面向对象程序的特点,。,小结 主要讲述了面向对象的概念,面向对象程序的特点,面向,49,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!