版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.3面向对象的基本概念1.3.1背景
50年代为了让计算机作些有用的事情,人们必须充分利用计算机硬件的性能,精确地计算并分配存贮字和指令的时钟周期,程序结构是整体式如同一块铁板,随着计算机硬件的发展,人们逐渐认识到如同铁板一块般的整体式程序虽然是解决问题的最有效的方案,但并不是最佳方案,越来越注重程序的可理解性,提出了模块化的程序结构。怎样划分模块:·(按)功能:每个模块做且仅做一件事;·数据结构:每个模块仅容纳一个数据结构·事件驱动:每个模块识别一个事件且对这个事件做出反应;·现实世界中的事物:每个模块对应现实世界中的唯一一件事物(称之为对象)。
面向对象(Object-Oriented)不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系以及如何进行系统构造的软件方法学。特点:(1)面向对象的技术建立的模型与客观世界一致,因而便于理解(图3.1);(2)适应变化的需要,修改局限在模块中;(3)可复用性1.3.2对象(Object)一般意义来讲,对象是现实世界中存在的一个事物,可以是有形的,如一个桌子,可以是无形的,如一个开发项目。对象是构成现实世界的一个独立的单位,具有自己的静态特征(用数据描述)和动态特征(行为或具有的功能)。举例:张三、李四。(2)信息隐藏:从对象外部看不知道对象的信息是怎样定义的,不知道操作是如何实现的,只知道有什么操作。
信息:如年龄、性别,又称对象的状态。什么类型?长度?
操作:用于存取信息,也可以与内部信息无关,如跳舞。(3)对象间的关系:例如,发票对象知道顾客对象,哪个顾客哪个单位要开发票。人可以知道另一个人,相互认识。两种关系:
静态关系:长期存在的关系,两个对象相互知道对方是否存在。例:组成关系是一种静态关系,Tom是由他的头、胳膊、腿和躯干组成。图3.4为什么将人划分成几个组成部分?—便于理解,实现,可复用。(两个胳膊复用)
动态关系:对象间互相进行通信。例:跳舞,一个人请另一个人一起跳舞,动态地建立关系。(4)如何定义信息和行为:图3.6从对象内部看。(5)消息:对象发出的服务请求称为消息(用来激发对象的一个行为)。1.3.3类和实例系统是由许多相互通信的对象组成的,对象有些共同的特征,根据特征可以将对象分组,称为类。如:Tom、Mary和John三个人有类似的行为和信息结构。因此可以定义Person类。(3)怎样划分类把类Person中共同的信息和操作提取出来,放在一个类中,实际上具有不同的属性。如由于性别不同,因此建立两个新类Male和Female。如图3.12,图3.13。
共同:这两个类有共同的信息和行为,Age,Friend,Address,Jump,Walk应该抽象出来,避免重复,这在以后讨论。不同:Dance,Husband,Wife(4)怎样建立一个实例:由类的行为建立实例。图3.10(相对于对象的行为)
总结:类定义了对象的操作和信息结构,实例是由类建立的,定义了对象的状态。1.3.4继承性(1)概念:类之间具有共性(信息结构和行为),抽取出来放在一个一般类中,如把Male和Female中共同的特性放在Person类中,不同的特性放在特殊类中分别描述,特殊类的对象拥有一般类的全部属性与服务,称作特殊类对一般类的继承。Male和Female类可以从Person类继承共性,这样避免了重复。见图3.14复用共同的描述,继承性往往被看作是软件复用的核心概念。(2)好处:易编程、易理解代码短,结构清晰易修改共同部分只要在一处修改即可易增加新类只须描述不同部分术语:
父类—子类,一般—特殊,祖先––后代,基类––派生类,直接父类,直接子类表示:带箭头的虚线父类不知道子类子类知道父类增加一个新类:OldMale与已有类的关系是什么样的?见图3.16有三种方案:(a)OldMale和Male中有共性(b)OldMale中修改Male中Dance的功能(c)新建一个类youngMale,oldMale与youngMale中有不同的特性到底选择哪一种方案,具体情况而定,第三种情况结构清楚,但要修改原有的类。第一种增加一个类oldMale重复太多,概念不清楚,不可取;(不修改原有的类)第二种增加新类继承关系中Dance具有不同的行为,第三种只增加不同的部分,共同部分放在Male中,是可取的。但如再增加一类小男孩,则还会涉及修改Male。(不修改原有的类)权衡选择第二、三种。继承层次中增加的新类的4种方法:①在继承类中,由下向上找一个合适的类作为父类;②完全独立的一个类,不能在已有的类中继承③重新构造继承层次,见图3.17。加ABF类,找不到一个合适的类作为直接父类,重新构造原来的层次。好处:层次结构清楚;问题:a.找出更好的层次结构b.修改工作量较大。(5)多继承如果一个类需要用到多个已有类的特征,可以从多个类中继承,称为多继承。这意味着一个类可以有多个直接的祖先。例如船屋是可以从房子和船这两个类继承得到一个类,从两个类中抽取共同的部分构成一个新的类,图3.19,重新构造类的结构。
问题:继承层次结构不好理解。如果祖先中具有相同名字但不同定义的操作时,产生问题;到底继承的是什么操作;
解决:用户必须选择某个祖先的定义或重新定义操作,图3.20,共同的祖先,重新定义过,名字冲突问题。1.3.5多态性对象互相通信,即一个对象发消息给另一个对象,执行某些行为或又发消息给另外的对象,从而执行系统的功能。
发送消息的对象可能不知道另一个对象的类。例如在上述例子中,一个人的朋友可以是男的,也可以是女的,例如Tom的朋友可能是John或Mary,因此对于Male类的对象不知道朋友实例将属于哪一类。
多态性意味着一个操作在不同类中可以有不同的实现方式。如Dance的实现Male和Female是不同的。1.3.6总结:(1)面向对象是一种建模的技术,由于它与人们认识世界的方法非常一致,所以建立的模型容易理解。(2)对象有类似性因而用类来描述;类描述了类似对象的行为和信息,①封装性使用者不需知道怎样实现,只要知道它的外部功能,因此修改可局限在类的内部,系统易维护。②多态性,使对象可以不必知道与它通信的对象的确切的类,因此容易增加新类,易扩充系统功能,不需修改其它类③使用继承性可以方便地复用已有代码,只需增加新代码,或修改已有功能时不必修改已有代码,只需定义新的行为;继承性必须正确使用,否则使系统的结构很难理解和不易维护,因为类的相同名字的行为功能可能不同。
《结束》HeadBodyArmArmLegLegFigure3.4Amodelofapersoncanbecomposedwiththeobjectshead,legs,armsandbody.ClasspersonInformationAgeFriendAddress...PartsmyLeftlegmyRightlegmyHeadmyBodymyRightArmmyLeftArmBehaviorStoreAgeAge?JumpWalk...Dance...Figure3.10Tom,JohnandMaryareallinstancesoftheclassPerson.CreateanInstanceCreatemyLeftLegcreatemyRightLegCreatemyHeadCreatemyBodyInstanceofTomMaryJohnInstanceofParts:myLegfromclassLegmyHeadfromclassHead...ClassBodyClassHeadClassLegFigure3.11Instancesofoneclasscanrecognizeinstancesofanother.Therelevantclassesaredefinedintheoriginalclass.Information:AgeWifeFrendAddress...PartsmyLeftLegmyRightLegmyHeadmyBodymyRightArmmyLeftArm...BehaviorStoreAgeAge?Walk...CreateanInstance...Figure3.14ClasswithinheritanceClassPersonBehaviorJumpDance...BehaviorJumpDance...ClassMaleClassFemaleinheritsinheritsStoreAgeAge?Walk...DanceJump
MaleDanceJumpOldMaleDanceJumpFemalePersoninsinsinsStoreAgeAge?Walk...DanceJumpDanceJumpDance(new)insinsPersonFemaleMaleOldMaleStoreAgeAge?Walk...DanceJumpPersoninsDanceJumpMaleinsDanceDanceinsins
OldMaleYoungMaleFigure3.16Female(a)(b)(c)A+BC=(ABC)+E=(ABCE)+D=(ABCD)ABFWeWantinheritsinheritsinheritsA+B=(AB)inherits+C=(ABC)+F=(ABF)+D=(ABCD)+E=(ABCE)inheritsinheritsinheritsinheritsbecomeswithrestructuringNewclassaddedWantedclassFigure3.17Existingclasses:ABCEFGAEWewant:restructuringAE+BC=(ABC)=(AE)+FG=(EFG)insinsinsinsNewclassesFigure3.19Multipleinheritance.Themiddleclassinheritsthedescriptionsfromtwootherclasses.A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44970-2024粮油机械气垫带式输送机
- 《解读学习金字塔》课件
- 【大学课件】危害公共安全罪
- 《计算机安全概述》课件
- 肤色暗黄的临床护理
- 孕期同房出血的健康宣教
- 《机械设计基础》课件-第11章
- 孕期胸痛的健康宣教
- 喉插管损伤的健康宣教
- 孕期痤疮的健康宣教
- 河北省邯郸市(2024年-2025年小学四年级语文)人教版期末考试((上下)学期)试卷及答案
- 2024-2030年中国嵌入式多媒体卡(eMMC)行业市场发展趋势与前景展望战略分析报告
- 车用LNG气瓶技术参数规格及配车选型技术资料
- 2023年海南高考卷生物试题(答案)
- 数字媒体艺术史全册完整教学课件
- 全册知识点梳理-2024-2025学年统编版道德与法治七年级上册
- 2024年高考英语读后续写15种情景高分句式仿写素材积累(讲义背诵版)
- 湖南省长沙市2024年中考化学真题【附真题答案】
- 五年级苏教版数学上册《解决问题的策略一一列举》说课稿
- 2024年驾驶证资格考试科目一必刷题库及答案(共520题)
- 2024-2030年中国空气消毒净化器行业市场发展趋势与前景展望战略分析报告
评论
0/150
提交评论