面向对象软件开发基础

面向对象软件开发基础

ID:42805103

大小:228.01 KB

页数:20页

时间:2019-09-23

上传者:U-145848
面向对象软件开发基础_第1页
面向对象软件开发基础_第2页
面向对象软件开发基础_第3页
面向对象软件开发基础_第4页
面向对象软件开发基础_第5页
资源描述:

《面向对象软件开发基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

第四章面向对象软件开发基础合肥学院计算机系吴晓琴1 本章内容4.1面向对象技术基础4.2Java语言的面向对象特性2 4.1面向对象技术基础3 4.1.1面向对象的基本概念面向对象的基本思想面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。其应用领域不仅仅是软件,还有计算机体系结构和人工智能等。4 4.1.1面向对象的基本概念1.对象的基本概念   对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。主动对象是一组属性和一组服务的封装体,其中至少有一个服务不需要接收消息就能主动执行(称作主动服务)。2.类的基本概念    类是具有相同属性和服务的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。3.消息消息就是向对象发出的服务请求,它应该包含下述信息:提供服务的对象标识、服务标识、输入信息和回答信息。服务通常被称为方法或函数。5 4.1.2面向对象的基本特征1.封装性封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义:   ◇把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。   ◇信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。   封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的"交叉感染",使软件错误能够局部化,大大减少查错和排错的难度。6 4.1.2面向对象的基本特征2.继承性特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。一个类可以是多个一般类的特殊类,它从多个一般类中继承了属性与服务,这称为多继承。在java语言中,通常我们称一般类为父类(superclass,超类),特殊类为子类(subclass)。3.多态性对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义。例如:"几何图形"的"绘图"方法,"椭圆"和"多边形"都是"几何图"的子类,其"绘图"方法功能不同。7 4.1.3面向对象程序设计方法OOA-ObjectOrientedAnalysis面向对象的分析OOD-ObjectOrientedDesign面向对象的设计OOI-ObjectOrientedImplementation面向对象的实现8 面向对象程序设计方法①面向对象(ObjectOriented):它是一种解决问题的方法或者观点,它认为自然界是由一组彼此相关并能相互通信的实体(对象)所组成。②面向对象程序设计方法(OOP):它使用面向对象的观点来描述现实问题,然后用计算机语言来模仿并处理该问题的一种程序设计方法。③要求:描述或处理问题时应具有高度的概括、分类并对它抽象的能力,才能准确地描述某一实体;将所要处理的问题抽象为对象(数据与代码的集合)④目的:实现软件设计的产业化,变手工作坊式编程为软件构件式工业化,达到快速高效编程。9 4.2面向对象程序设计方法的编程语言①Smalltalk:由美国加州的Xeror公司于70年代初研制的纯OOP语言,适用于小型机;②C++:是在面向过程程序设计方法基础上新增OOP成分,因而是一种混合型语言。其流行的原因归功于C语言的普及;但它具有与平台(CPU、OS类型)有关性。③Java:由Sun公司于1995年发布,适用于Internet网开发和应用的纯OOP语言。10 4.3、面向对象程序设计过程:分析用户需求,从问题中抽取对象模型;将模型细化,设计类,包括类的属性和类间相互关系,同时考察是否有可以直接引用的已有类或部件选定面向对象的编程语言,具体编码实现上一阶段类的设计,并在开发过程中引入测试,完善整个解决方案。11 4.4、面向对象程序设计方法的编程优点可重用性是面向对象软件开发的核心思路。抽象、封装、继承与派生、多态性围绕可重用性核心。应用软件由模块组成。可扩充性面向对象软件开发:快速原形传统软件开发:瀑布式可管理性面向过程的开发方法:以过程或函数为单位面向对象的开发方法:以类为单位例:面向过程:需3000函数,管理函数间复杂的关系需大量的工作面向对象:100类,每个类有30个函数。12 4.5、OOP的四个基本机制(特征):抽象、封装、继承与派生、多态性1.OOP的抽象对具体问题(对象)进行概括,抽出这一类对象的公共性质并且加以描述的过程。重载函数应用要点:①、先注意问题的本质及描述,其次是实现过程或细节。它直接决定程序的优劣----类的定义及组成元素;②、所涉及到的主要内容:数据抽象---描述某类对象的属性或状态(对象相互区别的物理量)。代码抽象---描述某类对象的共有的行为特征或具有的功能。13 ③、如何实现抽象:对问题进行分析,提取其属性和行为。实例一:窗口这一类对象数据抽象------intTopX,TopY,DownX,DownY,Color代码抽象------OpenWindow()、CloseWindow()、MoveWindow()、ChangeWindow()实例二:自行车这一类对象数据抽象------int型号,char*品牌,int换挡数代码抽象------Break()、SpeedUp()、ChangeShift()、Run()、Stop()14 2.OOP的封装:提供将所抽象出的问题的属性(数据成员)和行为(代码成员)相组合的一种机制,它能将这二类成员再组合在一起,形成对象或实体。①封装的基本要求:有一个特定的边界:所有的内部变化都限制在此边界内(类定义的{});有外部接口:此对象利用它与其它对象发生关联(public成员);有特定的访问权限:在对象外部不能访问或修改受保护的内部实现细节(private成员)。外部接口②特定的边界如何实现封装:采用类定义的{...}。15 3.继承性   通过继承实现代码复用。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。 ◇成员变量的隐藏和方法的重写   子类通过隐藏父类的成员变量和重写父类的方法,可以把父类的状态和行为改变为自身的状态和行为。16 4.多态性在java语言中,多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。1)编译时多态   在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。2)运行时多态   由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。   ◇重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。 在例3-6中,父类对象a引用的是子类的实例,所以,java运行时调用子类B的callme方法。17 classMember{staticintclassVar;intinstanceVar;staticvoidsetClassVar(inti){classVar=i;//instanceVar=i;//类方法不能访问实例变量}staticintgetClassVar(){returnclassVar;}voidsetInstanceVar(inti){classVar=i;//实例方法不但可以访问类变量,也可以实例变量instanceVar=i;}intgetInstanceVar(){returninstanceVar;}}publicclassMemberTest{publicstaticvoidmain(Stringargs[]){Memberm1=newmember();Memberm2=newmember();m1.setClassVar(1);m2.setClassVar(2);System.out.println("m1.classVar="+m1.getClassVar()+"m2.ClassVar="+m2.getClassVar());m1.setInstanceVar(11);m2.setInstanceVar(22);System.out.println("m1.InstanceVar="+m1.getInstanceVar()+"m2.InstanceVar="+m2.getInstanceVar());}}◇类java.lang.Object类java.lang.Object处于java开发环境的类层次的根部,其它所有的类都是直接或间接地继承了此类。该类定义了一些最基本的状态和行为。下面,我们介绍一些常用的方法。equals():比较两个对象(引用)是否相同。getClass():返回对象运行时所对应的类的表示,从而可得到相应的信息。toString():用来返回对象的字符串表示。finalize():用于在垃圾收集前清除对象。notify(),notifyAll(),wait():用于多线程处理中的同步。18 思考1.面向对象编程的特性有哪三个?它们各自又有哪些特性?2.你知道java语言在面向对象编程方面有何独特的特点吗?19 下课!20

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭