java培训第5章

上传人:aa****6 文档编号:56887423 上传时间:2018-10-16 格式:PPT 页数:73 大小:653KB
返回 下载 相关 举报
java培训第5章_第1页
第1页 / 共73页
java培训第5章_第2页
第2页 / 共73页
java培训第5章_第3页
第3页 / 共73页
java培训第5章_第4页
第4页 / 共73页
java培训第5章_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《java培训第5章》由会员分享,可在线阅读,更多相关《java培训第5章(73页珍藏版)》请在金锄头文库上搜索。

1、第5章 面向对象程序设计,本章主要介绍Java语言面向对象的基本概念、面向对象程序设计方法、接口和包的概念,以及域和方法的定义与实现。 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组 5.4 类的继承和多态 5.5 包和访问控制符 5.6 接口 思考与练习5,5.1 面向对象程序设计概述,5.1.1 什么是面向对象 术语“面向对象”是由英文Object Oriented翻译而来的,简称为OO。面向对象的程序设计是目前软件工业的主流,绝大多数的系统程序、应用程序都是采用面向对象的思想来设计开发的。 在面向对象概念中,整个世界是由各种各

2、样的对象(Object)组成的。世界上存在着许多类型相同的对象,也存在着许多类型不相同的对象。例如:一辆自行车和一根铅笔是类型不同的两个对象,而李明的自行车和李芳的自行车可以看作是类型相同的两个对象。 早期的计算机程序设计语言经历了面向机器(Machine-Oriented)、面向过程(Procedure-Oriented)等阶段。随着计算机技术的发展,以及要解决的问题越来越复杂,早期的程序设计语言已经不能适应实际的需求。从上个世纪60年代末,陆续开发出了多个面向对象的程序设计语言,例如:C+、Java等。面向对象程序设计语言的出现带动了面向对象的程序设计方法。,5.1 面向对象程序设计概述,

3、5.1.1 什么是面向对象 面向对象的程序设计是以要解决的问题中所涉及的各种对象为主体,力求程序设计符合人们日常的思维习惯,降低问题的难度和复杂性,提高编程的效率。使用面向对象的程序设计方法来解决问题就是从实际问题中抽象并封装数据和操作的对象,通过定义其状态和操作其行为来表述对象的特征和功能。此外,还可以通过定义接口来描述对象的地位以及与其他对象的关系,最终形成一个广泛联系的可理解、可扩充、可维护及更接近于问题本来面目的动态对象模型系统。,5.1 面向对象程序设计概述,5.1.2 常用术语的含义 在面向对象程序设计中,经常使用一些术语,下面介绍几个常用的术语。 (1)对象(Object):对象

4、是面向对象程序设计的核心,也是程序的主要组成部分。一个程序实际上就是一组对象的总和。 在现实世界中,人们面对的所有事物都可以称为对象,例如,电视、台灯、猫、狗、草木等等。在Java语言中,对象是由数据以及对数据进行处理的方法组成的,是对现实世界的抽象描述。 在面向对象程序设计中,通过对象的状态(States)和行为(Behaviors)两个方面描述对象。每一个对象都是由状态和行为两个最基本的部分组成的。虽然同一类对象的行为都是一样的,但是每个对象的状态都是独立与其他对象的。例如:改变速度是任何一辆自行车都具有的行为,但是每辆自行车的品牌、型号、颜色、所有者等状态又是不同。,5.1 面向对象程序

5、设计概述,5.1.2 常用术语的含义 (2)类(Class):对象是由类创建的,类是同一类型对象的集合和抽象。例如,汽车有很多种类,包括轿车、卡车、公共汽车等。它们是不同的对象,但是都属于车类,存在着许多共同点,例如,都可以加速、刹车等。 在Java语言中,每一个类是一种对象类型数据,属于不同类的对象具有不同的数据类型。一个对象被称为其类的一个实例,是该类的一次实例化的结果。例如:月饼模子可以看作是月饼的类,使用模子做月饼的过程实际上就是一个实例化的过程,最终制作出的月饼是该月饼模子的一个对象。 类还可以具有子类,子类除了具有类的所有状态和行为外,还具有自己特有的状态和行为。例如:哺乳动物类是

6、动物类的一个子类,它除了具有动物类共有的状态和行为外,还具有胎生、哺乳等哺乳动物类特有的状态和行为。,5.1 面向对象程序设计概述,5.1.2 常用术语的含义 (3)域(Field):域是类或者对象的状态属性的总称。它可以是普通数据类型的变量,也可以是其他类的对象。例如,在自行车类中,品牌和颜色可以是String类型数据;型号可以是int类型数据;当前速度可以是double类型数据。 在Java语言中使用实例变量来表达类或者对象的状态,并且这些变量必须在类方法的外边定义,作用于整个类。 (4)方法(Method):方法是类的行为属性的总称。一个类可以有多个方法,表示该类所具有的功能和操作。通过

7、对象调用类中的方法就可以改变对象域中变量的值。例如:自行车类具有加速和减速的方法,通过一个自行车对象调用加速方法就可以改变对象中保存当前速度的实例变量的值。,5.1 面向对象程序设计概述,5.1.3 程序设计过程 使用面向对象方法解决问题的过程可以大体划分为面向对象分析(Object Oriented Analysis,简称OOA)、面向对象设计(Object Oriented Design,简称OOD)和面向对象编程(Object Oriented Programming,OOP)三大步骤。 (1)面向对象分析(OOA)。面向对象分析的主要作用是明确使用程序的用户、用户可以进行的操作,以及数

8、据的输入、输出和储存,并且用标准化的面向对象模型规范地表述这些内容,最后形成面向对象分析模型,即OOA模型。 在分析问题时,要抽取所有需要的对象实体,然后确定这些对象的状态和行为,以及它们之间的相互关系。一般来说,解决一个问题会涉及到多个对象,所以这些对象之间的关系一定要明确,从而反映出整个程序的功能和状态。例如:自动取款机程序的使用用户包括银行和用户,它有可能涉及到的对象包括用户、帐户、自动取款机和提款卡等等。,5.1 面向对象程序设计概述,5.1.3 程序设计过程 (2)面向对象设计(OOD)。面向对象设计是将在面向对象分析步骤中创建的OOA模型加以扩展并得到面向对象设计步骤中的OOD模型

9、。 面向对象设计在OOA模型的基础上引入界面管理、任务管理和数据管理三部分的内容,进一步扩充OOA模型。界面管理负责整个系统的人机对话界面的设计,任务管理负责处理整个程序资源管理功能的工作以及设置客户与服务器之间的接口,数据管理负责设计程序与数据库的交换方式。 面向对象设计还需要明确每个类方法的参数、返回值、功能等,以及各类之间的相容性和一致性的验证,对各个类、类内成员的访问权限的严格合理性的验证,也包括验证对象类的功能是否符合用户的需求。例如:自动取款机的OOD模型要包括用户、帐户、自动取款机的人机对话界面设计,使用自动取款机的用户和自动取款机服务器之间的操作,自动取款机服务器与数据库之间的

10、操作等等。,5.1 面向对象程序设计概述,5.1.3 程序设计过程 (3)面向对象编程(OOP)。面向对象编程就是具体的程序编写阶段,其主要过程是先选择一种合适的面向对象编程语言,再用选定的语言编写程序实现设计步骤中对各个对象的详尽描述,然后将编写好的各个类根据其关系集成为整个程序,最后通过各种实例测试找出程序的漏洞并改善程序,最终完成整个软件的开发。,5.1 面向对象程序设计概述,5.1.4 面向对象程序设计的特点 面向对象程序设计提高了软件的生产效率和程序模块的重复使用率,并且降低了维护成本。面向对象程序设计的主要特点是: (1)封装(Encapsulation):封装就是将对象的数据和基

11、于数据的方法封装在一起成为一个整体类。所有的程序编写基本上都是通过创建类的对象,然后以对象为载体,进行数据交流和方法的执行。 封装是一种数据信息隐藏技术,使用者只需要知道对象中变量和方法的功能,而不必知道行为实现的细节,也就是说,类的使用者与设计者是分开的。此外,封装使得类的可重用性大为提高。 (2)多态(Ploymorphism):多态是指程序的多种表现形式。在同一个类中,同名但参数不同的多个方法(方法重载)是多态的一种表现形式。另一种表现形式是子类对父类方法的覆盖或者子类对抽象父类中的抽象方法的具体定义。,5.1 面向对象程序设计概述,5.1.4 面向对象程序设计的特点 (3)继承(Inh

12、eritance):继承是指一个类拥有另一个类的所有变量和方法。被继承的类称为父类,继承了父类的所有数据和操作的类称为子类。继承使得程序结构清晰,降低编程和维护的工作量。 (4)抽象(Abstraction):抽象是具体事物一般化的过程,即对具有特定属性的对象进行概括,从中归纳出这一类对象的共性,并从共同性的角度描述共有的状态和行为特征。 抽象包括数据抽象和方法抽象两个方面。数据抽象用来描述某类对象的共同状态;方法抽象用来描述某类对象的共同行为。,5.2 Java语言的面向对象程序设计,5.2.1 域 我们在前面介绍过域是类或者对象的状态属性的总称。它可以是普通数据类型的变量,也可以是其他类的

13、对象类型变量。域常见的有实例变量、静态变量和最终变量3种形式。分别介绍如下。 1实例变量 实例变量(Instance Variable)用来储存某个类对象的状态值。它必须在类内、任何方法外被定义,一般位于整个类语句体的最前端。其修饰符可以是public或者private,但是不能使用static。实例变量的使用范围是整个类,也就是说可以在类中的任意方法内被使用。实例变量是依据其对象存在的,当运行程序创建对象的同时,创建了其实例变量,当程序运行完成,对象消失,其实例变量也同时消失。,5.2 Java语言的面向对象程序设计,5.2.1 域 变量name、age、gender、height和weig

14、ht分别表示人的姓名、年龄、性别、身高和体重。当创建People类的对象时,每个对象的实例变量也是这5个变量,只是对象之间的变量值有可能不同。如图5.3所示为创建了3个People类对象的演示效果图。,图5.3 3个People类对象,5.2 Java语言的面向对象程序设计,5.2.1 域 2静态变量 用修饰符static修饰的变量称为类静态变量,也叫做静态变量或者类变量。静态变量是类的变量,不属于任何一个类的具体对象实例。它不保存在某个对象实例的内存空间中,而是保存在类的内存空间的公共存储单元中。也就是说,不论一个类具有多少个对象,静态变量只有一个,任何一个类的对象访问它,取得的都是相同的数

15、值。同样地,任何一个类的对象去修改它,也都是在对同一个内存单元进行操作。静态变量可以通过类名直接访问,也可以通过对象来调用。采用这两种方法取得的结果是相同的。,5.2 Java语言的面向对象程序设计,5.2.1 域 2静态变量 静态变量与实例变量虽然都是在类内、类中方法之外定义的变量,但是它们有着本质的不同。 (1)实例变量:一般使用private或者public作为修饰符。每个类的对象都具有一套属于自己的、在类中定义的实例变量。每个对象只能修改或者访问其自身的实例变量,不会影响其他对象的实例变量。 (2)静态变量:使用static修饰符。每个类的所有对象共同拥有一套类的静态变量。类和其对象都

16、可以修改或者访问静态变量。,5.2 Java语言的面向对象程序设计,5.2.1 域 3最终变量 在编写程序时,可以给某些经常要使用具有特殊含义或者内容复杂的常量,取一个类似于变量名的标识符,这样就可以通过使用这个变量名称来引用其对应的常量,而不是每次直接键入常量数值。这种做法的最主要目的是使程序更加清楚,利于其他人阅读、理解。 使用修饰符final修饰的变量是最终变量,其保存的数据在程序的整个执行过程中都不会改变。通常,我们在final前面再加上修饰符static,那么这个变量的实际含义就是常量。 如果在定义最终变量时,没有给其赋值,则按该类型数据的默认值进行初始化。final修饰符可以修饰局

17、部变量,也必须且只能赋值一次,它的取值在变量存在期间不会改变。 此外,使用修饰符volatile修饰变量被称为易失域,通常用于进行多线程编程。这种变量可以同时被多个线程控制和修改变量值。,5.2 Java语言的面向对象程序设计,5.2.2 构造方法 构造方法(Constructor Method),也称为构造函数,是一种特殊的方法。在创建对象的同时,调用这个对象所属类的构造方法来完成对象实例变量的初始化。 构造方法的形式如下: public 类名( 参数 ) 语句体 其中的语句体为初始化实例变量的赋值语句,可以使用参数值作为变量的初值,也可以直接给变量赋具体的数值。 一般来说,构造方法具有以下几个的特点:,

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

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

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