面向对象软件开发基础

上传人:tian****1990 文档编号:74763128 上传时间:2019-01-29 格式:PPT 页数:20 大小:227.96KB
返回 下载 相关 举报
面向对象软件开发基础_第1页
第1页 / 共20页
面向对象软件开发基础_第2页
第2页 / 共20页
面向对象软件开发基础_第3页
第3页 / 共20页
面向对象软件开发基础_第4页
第4页 / 共20页
面向对象软件开发基础_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《面向对象软件开发基础》由会员分享,可在线阅读,更多相关《面向对象软件开发基础(20页珍藏版)》请在金锄头文库上搜索。

1、1,第四章 面向对象软件开发基础,合肥学院计算机系 吴晓琴,2,本章内容,4.1 面向对象技术基础 4.2 Java语言的面向对象特性,3,4.1 面向对象技术基础,4,4.1.1 面向对象的基本概念,面向对象的基本思想 面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。其应用领域不仅仅是软件,还有计算机体系结构和人工智

2、能等。,5,4.1.1 面向对象的基本概念,1 对象的基本概念 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。 主动对象是一组属性和一组服务的封装体,其中至少有一个服务不需要接收消息就能主动执行(称作主动服务)。 2 类的基本概念 类是具有相同属性和服务的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。 3 消息 消息就是向对象发出的服务请求,它应该包含下述信息:提供服务的

3、对象标识、服务标识、输入信息和回答信息。服务通常被称为方法或函数。,6,4.1.2 面向对象的基本特征,1封装性 封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义: 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界或者说形成一道屏障,只保留有限的对外接口使之与外部发生联系。 封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的“交叉感染“,使软件错误能够局部化,大大减少查错和排错的难度。,7,4.1.2

4、面向对象的基本特征,2继承性 特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。 一个类可以是多个一般类的特殊类,它从多个一般类中继承了属性与服务,这称为多继承。 在java语言中,通常我们称一般类为父类(superclass,超类),特殊类为子类(subclass)。 3多态性 对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义。例如:“几何图形“的“绘图“方法,“椭圆“和“多边形“都是“几何图“的子类,其“绘图“方法功能不同。,8,4.1.3 面向对象程序设计方

5、法,OOAObject Oriented Analysis 面向对象的分析 OODObject Oriented Design 面向对象的设计 OOIObject Oriented Implementation 面向对象的实现,9,面向对象程序设计方法,面向对象(Object Oriented):它是一种解决问题的方法或者观点,它认为自然界是由一组彼此相关并能相互通信的实体(对象)所组成。 面向对象程序设计方法(OOP):它使用面向对象的观点来描述现实问题,然后用计算机语言来模仿并处理该问题的一种程序设计方法。 要求:描述或处理问题时应具有高度的概括、分类并对它抽象的能力,才能准确地描述某一实

6、体;将所要处理的问题抽象为对象(数据与代码的集合) 目的:实现软件设计的产业化,变手工作坊式编程为软件构件式工业化,达到快速高效编程。,10,4.2面向对象程序设计方法的编程语言, Smalltalk:由美国加州的Xeror公司于70年代初研制的纯OOP语言,适用于小型机; C+:是在面向过程程序设计方法基础上新增OOP成分,因而是一种混合型语言。其流行的原因归功于C语言的普及;但它具有与平台(CPU、OS类型)有关性。 Java:由Sun公司于1995年发布,适用于Internet网开发和应用的纯OOP语言。,11,4.3、面向对象程序设计过程:,分析用户需求,从问题中抽取对象模型; 将模型

7、细化,设计类,包括类的属性和类间相互关系,同时考察是否有可以直接引用的已有类或部件 选定面向对象的编程语言,具体编码实现上一阶段类的设计,并在开发过程中引入测试,完善整个解决方案。,12,4.4、面向对象程序设计方法的编程优点,可重用性 是面向对象软件开发的核心思路。抽象、封装、继承与派生、多态性围绕可重用性核心。 应用软件由模块组成。 可扩充性 面向对象软件开发:快速原形 传统软件开发:瀑布式 可管理性 面向过程的开发方法:以过程或函数为单位 面向对象的开发方法:以类为单位 例:面向过程:需3000函数,管理函数间复杂的关系需大量的工作 面向对象:100类,每个类有30个函数。,13,45、

8、OOP的四个基本机制(特征):抽象、封装、继承与派生、多态性,1OOP的抽象 对具体问题(对象)进行概括,抽出这一类对象的公共性质并且加以描述的过程。重载函数 应用要点: 、先注意问题的本质及描述,其次是实现过程或细节。它直接决定程序的优劣-类的定义及组成元素; 、所涉及到的主要内容: 数据抽象-描述某类对象的属性或状态(对象相互区别的物理量)。 代码抽象-描述某类对象的共有的行为特征或具有的功能。,14,、如何实现抽象:对问题进行分析,提取其属性和行为。 实例一:窗口这一类对象 数据抽象- int TopX,TopY, DownX,DownY, Color 代码抽象- OpenWindow(

9、)、CloseWindow()、MoveWindow()、ChangeWindow() 实例二:自行车这一类对象 数据抽象- int 型号, char *品牌, int 换挡数 代码抽象- Break()、SpeedUp()、ChangeShift()、Run()、Stop(),15,2OOP的封装:提供将所抽象出的问题的属性(数据成员)和行为(代码成员)相组合的一种机制,它能将这二类成员再组合在一起,形成对象或实体。 封装的基本要求: 有一个特定的边界:所有的内部变化都限制在此边界内(类定义的 ); 有外部接口:此对象利用它与其它对象发生关联(public成员); 有特定的访问权限:在对象外

10、部不能访问或修改受保护的内部实现细节(private成员)。外部接口 特定的边界 如何实现封装:采用类定义的 . 。,16,3 继承性 通过继承实现代码复用。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。 成员变量的隐藏和方法的重写 子类通过隐藏父类的成员变量和重写父类的方法,可以把父类的状态和行为改变为自身的状态和行为。,17,4 多态性 在ja

11、va语言中,多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。 1) 编译时多态 在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。 2) 运行时多态 由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。 重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法

12、(未重写),则运行时系统调用父类的方法。 在例3-6中,父类对象a引用的是子类的实例,所以,java运行时调用子类B的callme方法。,18,class Member static int classVar; int instanceVar; static void setClassVar(int i) classVar=i; / instanceVar=i; / 类方法不能访问实例变量 static int getClassVar() return classVar; void setInstanceVar(int i) classVar=i; /实例方法不但可以访问类变量,也可以实例变量

13、 instanceVar=i; int getInstanceVar( ) return instanceVar; public class MemberTest public static void main(String args) Member m1=new member(); Member m2=new member(); m1.setClassVar(1); m2.setClassVar(2); System.out.println(“m1.classVar=“+m1.getClassVar()+“ m2.ClassVar=“+m2.getClassVar(); m1.setInst

14、anceVar(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():用于多线程处理中的同步。,19,思考,1面向对象编程的特性有哪三个?它们各自又有哪些特性? 2 你知道java语言在面向对象编程方面有何独特的特点吗?,20,下课!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号