(精品)第3章 抽象、封装与类.ppt
《(精品)第3章 抽象、封装与类.ppt》由会员分享,可在线阅读,更多相关《(精品)第3章 抽象、封装与类.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章 抽象、封装与类李莉1.面向对象思想2.面向对象的优点3.抽象与封装4.Java的类5.定义和使用类6.域7.方法 1.面向对象思想面向机器的程序:最早的计算机程序,为特定的硬件系统专门设计的。其运行速度和效率都很高,但是可读性和可移植性很差,随着软件开发规模的扩大,面向机器的程序逐渐被以C为代表的面向过程的程序所取代。面向过程的程序:模拟问题的解决过程。数据结构、算法是面向过程问题求解的核心组成。面向过程的问题求解可以精确、完备地描述具体的求解过程,但却不足以把一个包含了多个相互关联的过程的复杂系统表述清楚。面向对象的程序:模拟描述系统本身,包括系统的组成、系统的各种可能状态、系统中可
2、能产生的各种过程与过程引起的系统状态切换。关心所有这些过程的整体,不仅仅是孤立的单个过程。面向对象的程序设计语言的出发点:直接描述问题域中客观存在的事物(即对象)以及它们之间的关系。1.面向对象思想面向对象的程序设计语言对现实世界的直接模拟体现在:客观世界是由一些具体的事物构成的,每个事物都具有自己的一组静态特征(属性)和一组动态特征(行为)。例如,一辆汽车有颜色、型号、马力、生产厂家等静态特征,又具有行驶、转弯、停车等动态特征。面向对象的程序设计语言把客观世界的这一事实映射到计算机语言中,把客观世界中的事物抽象成对象(Object),用一组数据描述该对象的静态特征(属性,称为数据成员),用一
3、组方法来刻画该对象的动态特征(行为)。现实生活中的实体计算机中的对象的原型aCar color_number=red;door_number=2;int speed=200;void brake()void speedUp();void slowDown()1.面向对象思想客观世界中的事物既具有特殊性又具有共同性,人类在认识客观世界过程中通常根据事物的共同性把相似的事物归结为某些类。例如所有的汽车和某一辆汽车之间的关系就很容易理解这一点。OOPL用类(Class)来表示一组具有相同属性和方法的对象。class Car int color_number;int door_number;int s
4、peed;void brake()void speedUp();void slowDown()现实生活中的对象1 现实生活中的对象2aCar color_number=red;door_number=2;int speed=200;void brake()void speedUp();void slowDown()bCar color_number=blue;door_number=2;int speed=300;void brake()void speedUp();void slowDown()抽象实例化对象:小王静态特征:小王女讲师890.00动态特征:授课评职称调工资属性值执行的操作方法
5、名属性类:教师属性:姓名性别职称工资服务:授课评职称调工资1.面向对象思想在同一类事物中,每个事物既具有同类的共同性,又具有自己的特殊性。OOPL用父类与子类来描述这一事实:在父类中描述事物的共性,通过父类派生(Derive)子类的机制来体现事物的个性。考虑同类事物中每个事物的特殊性时,可由这个父类派生子类,子类可以继承(Inheritance)父类的共同性又具有自己的特殊性。1.面向对象思想轿车卡车吊车车载客人数,后备箱容量载重量class Truck extends Car int load;1.面向对象思想客观世界中的事物是一个独立的整体,它的许多内部实现细节是外部不关心的。例如,对于一
6、个只负责开车的驾驶员来说,他可能根本不知道他所驾驶的这辆汽车内部用了多少根螺钉或几米导线,以及它们是怎样组装的。OOPL用封装(Encapsulation)机制把对象的属性和方法结合为一个整体,屏蔽了对象的内部细节。classCarintcolor_number;intdoor_number;intspeed;voidbrake()voidspeedUp();voidslowDown()classCarintcolor_number;intdoor_number;intspeed;voidbrake()voidspeedUp();voidslowDown()this.speed-;public
7、ClassUseCarpublicstaticvoidmain(StringArgs)Carobj=newCar();obj.slowDown();1.面向对象思想客观世界中的一个事物可能与其他事物之间存在某种行为上的联系。例如,一辆行驶中的汽车当看到红色信号灯时要刹车停止,OOPL便通过消息连接来表示对象之间的这种动态联系。classCarintcolor_number;intdoor_number;intspeed;voidbrake()voidspeedUp();voidslowDown()classLightbooleanisRed=true;booleanisGreen;boolea
8、nisYellow;voidchangeLight()classTestpublicstaticvoidmain()CaraCar=;LightaLight=;aLight.changeLight();if(aLight.isRed)aCar.brake();1.面向对象思想客观世界中较为复杂的事物往往是由其他一些比较简单的事物构成的,例如,一辆自行车是由车架、车轮、把手等构成的,OOPL也提供了描述这种组成关系的功能。综上,面向对象的编程语言使程序能够比较直接地反映客观世界的本来面目,并且使软件开发人员能够运用人类认识事物所采用的一般思维方法来进行软件开发。1.面向对象思想2.面向对象的优点
9、3.抽象与封装4.Java的类5.在Java中定义和使用类6.域7.方法3.抽象与封装Java是面向对象的语言,类是面向对象技术的关键。在Java中,除了前面讲到的基本数据类型外,还有一种由用户定义并实现的复合数据类型类。在Java中,一切都是对象,任何事物都是对象。不同的对象常常只有一些共性,比如汽车、火车、飞机都有速度属性以及启动、加速、减速、停止等行为,把这些共性抽象出来就是类;类对这些属性和行为进行封装,就成为类的属性和方法。将一个抽象的类具体化,也就是类的实例化,即生成该类的一个对象。比如将汽车具体为某一辆具体型号的汽车。3.抽象与封装抽象:是一种研究方法,即去除掉研究对象中与主旨无
10、关的次要部分,或是暂时不予考虑的部分,仅仅抽取出与研究工作有关的实质性的内容加以考察。3.抽象与封装软件开发方法中的抽象有两类:过程抽象和数据抽象。l过程抽象:将整个系统的功能划分为若干部分,强调功能完成的过程和步骤。面向过程的软件开发方法采用这种抽象方法。使用过程抽象有利于控制、降低整个程序的复杂度,但是这种方法本身自由度较大,难于规范化和标准化,操作起来有一定难度,在质量上不易保证。l数据抽象:把系统中需要处理的数据和这些数据上的操作结合在一起,根据功能、性质、作用等因素抽象成不同的抽象数据类型。每个抽象数据类型既包含了数据,也包含了针对这些数据的操作,是更为严格、也更为合理的抽象方法。面
11、向对象的软件开发方法采用了数据抽象的方法来构建程序的类、对象和方法。3.抽象与封装例如:处理有关银行日常业务的问题,最核心的问题就是所有的资金、账目往来。根据与此核心问题有关的操作,可以建立一个表示账户的抽象数据类型,作为考察的重点。如果处理银行人力资源的问题,则系统最核心的问题是银行职员的信息,如工号、职位、入职时间,以及职员的出勤、招聘解聘、升职降职、请销假等事件,而不是银行的经营业务(如开户、转账、中间业务等),这时建立的则是表示职员的抽象数据类型。3.抽象与封装封装:利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其他部分只有通过包裹在数据外面的
12、操作,才能够与这个抽象数据类型交互。例如:一个工程师要组装一台电脑,他将各种电脑设备组装起来。如果需要声卡时,不需要用原始的集成电路芯片和材料自己去做,而是去电脑公司买一个符合某种规格的声卡。工程师所关心的是声卡的功能,并不关心声卡内部的工作原理,因为声卡是由电子厂商所提供,是自成一体的。这就是封装性无需知道封装单元内部是如何工作的。声卡的所有属性都封装在声卡中,不会扩展到声卡之外,用户无需知道其工作原理就可以使用。3.抽象与封装在面向对象语言中,抽象数据类型即是“类”,每个类里都封装了相关的数据和操作。例如,在银行日常业务系统中,建立了“账户”类把账户金额和交易情况封装在类的内部。这样有两个
13、好处:n安全性:系统的其他部分不能直接获取或改变这些数据,只有通过调用类内的方法才能做到,保证数据的安全。如调用查看余额的方法来获知账户的金额,调用存取款的方法来改变金额。n可重用性:封装使得类成为功能明确、接口单一、可在各种合适的环境下都能独立工作的有机整体,可以直接或间接地用于其它的应用系统,缩短开发周期和降低各种费用。例如,在“银行日常业务系统”中使用的“账户”类,可以应用在业务性质相似的保险公司投保理赔管理系统或者证券公司的证券交易系统中。1.面向对象思想2.面向对象的优点3.抽象与封装4.Java的类5.在Java中定义和使用类6.域7.方法 4.Java的类Java程序设计就是定义
14、类的过程。Java中的类有两种:n系统自带的类系统定义好的类,即Java类库中的类,用户可以直接使用。n用户自定义的类用户针对具体问题来定义的类,也就是Java程序设计的过程。4.Java的类系统定义的类:即Java类库中的类。lJava类库:类库是Java语言的重要组成部分,是一组由其他开发人员或软件供应商编写好的Java类,每个类通常对应一种特定的基本功能和任务。用户在编写自己的Java程序时如果需要完成某一功能,可以直接利用这些现成的类库,不需要从头编写。lJava的类库大部分是由SUN公司提供的。以下简单介绍JDK1.5的类库。l根据实现功能的不同,系统定义好的类可以划分成不同的集合。
15、每个集合是一个包,合称为类库。Java的类库是系统提供的已实现的标准类的集合,可以帮助用户方便、快捷地开发Java程序。4.Java的类(1)java.lang包java.lang包是Java语言的核心类库,包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等。每个Java程序运行时,系统都会自动地引入java.lang包,所以这个包的加载是缺省的。(2)java.io包java.io包是Java语言的标准输入/输出类库,包含了实现Java程序与操作系统、用户界面以及其他Java程序做数据交换所使用的类,如基本输入/输出流、文件输入/输出流、过滤
16、输入/输出流、管道输入/输出流、随机输入/输出流等。凡是需要完成与操作系统有关的较底层的输入输出操作的Java程序,都要用到java.io包。(3)java.util包java.util包包括了Java语言中的一些低级的实用工具,如处理时间的Date类,处理变长数组的Vector类,实现栈和杂凑表的Stack类和HashTable类等,使用它们开发者可以更方便快捷地编程。4.Java的类(4)java.awt包java.awt包是Java语言用来构建图形用户界面(GUI)的类库,它包括了许多界面元素和资源,主要在三个方面提供界面设计支持:低级绘图操作,如Graphics类等;图形界面组件和布局
17、管理,如Checkbox类、Container类、LayoutManager接口等;以及界面用户交互控制和事件响应,如Event类。利用java.awt包,开发人员可以很方便地编写出美观、方便、标准化的应用程序界面。(5)java.awt.event包java.awt.event包使得程序可以用不同的方式来处理不同类型的事件,使每个图形界面的元素本身可以拥有处理它上面事件的能力。(6)java.applet包java.applet包是用来实现运行于浏览器中的Java Applet的工具类库,它包含几个接口和一个重要的类:java.applet.Applet。4.Java的类(7)包包:实现网络
18、功能。如实现套接字通信的Socket类、ServerSocket类;编写用户自己的Telnet、FTP、邮件服务等实现网上通信的类;用于访问Internet上资源和进行CGI网关调用的类,如URL等。利用包中的类,开发者可以编写自己的具有网络功能的程序。(8)java.sql包java.sql包:实现JDBC,使Java程序能够访问不同种类的数据库,如Oracle,Sybase,DB2,SQLServer等。只要安装了合适的驱动程序,同一个Java程序不需修改就可以存取、修改这些不同的数据库中的数据。JDBC的这种功能,再加上Java程序本身具有的平台无关性,大大拓宽了Java程序的应用范围,
19、尤其是商业应用的适用领域。4.Java的类(9)java.rmi包来实现RMI功能。利用RMI功能,用户程序可以在远程计算机(服务器)上创建对象,并在本地计算机(客户机)上使用这个对象。(10)java.security包对Java程序加密,提供更完善的Java程序安全性控制和管理。4.Java的类使用类库中系统定义的类:n继承系统类:在用户程序里创建系统类的子类,例如每个Java Applet的主类都是java.applet包中的Applet类的子类。n创建系统类的对象:例如在图形界面程序中要接受用户的输入,可以创建一个系统类TextField类的对象来进行。n直接使用系统类:例如向系统标准
20、输出输出字符串时使用的方法System.out.println()就是系统类System的静态属性out的方法。importjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassAppletInOutextendsAppletimplementsActionListenerLabelprompt;TextFieldinput,output;publicvoidinit()prompt=newLabel(请输入您的名字:);input=newTextField(6);output=newTextField(20);add
21、(prompt);add(input);add(output);input.addActionListener(this);publicvoidactionPerformed(ActionEvente)output.setText(input.getText()+,欢迎你!);继承系统类继承系统类创建系统的类对象创建系统的类对象导入系统类导入系统类4.Java的类使用系统类的前提条件:该系统类是用户程序可见的类。为此用户程序需要用import语句引入它所用到的系统类或系统类所在的包。例如:分别引入java.awt包和java.awt.event包的所有类。类库中的程序都是字节码形式的类,利用i
22、mport语句将一个包引入到程序里,相当于在编译过程中将该包中所有系统类的字节码加入到用户的Java程序中,这样用户程序就可以使用这些系统类及其中的各种功能。importjava.awt.*;importjava.awt.event.*;1.面向对象思想2.面向对象的优点3.抽象与封装4.Java的类5.在Java中定义和使用类6.域7.方法5.在Java中定义和使用类系统定义的类实现了许多常见的功能,但是在程序设计过程中,程序员仍然需要针对特定问题的特定逻辑来定义自己的类。用户程序定义自己的类有定义类头和定义类体两个步骤,其中类体又由属性(域)和方法组成。publicclassPhoneCa
23、rdlongcardNumber;privateintpassword;doublebalance;StringconnectNumber;booleanconnected;booleanperformConnection(longcn,intpw)if(cn=cardNumber&pw=password)connected=true;returntrue;elseconnected=false;returnfalse;doublegetBalance()if(connected)returnbalance;elsereturn-1;voidperformDial()if(connected)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品第3章 抽象、封装与类 精品 抽象 封装
限制150内