面向WEB的java语言程序设计第二章.ppt
《面向WEB的java语言程序设计第二章.ppt》由会员分享,可在线阅读,更多相关《面向WEB的java语言程序设计第二章.ppt(126页珍藏版)》请在三一文库上搜索。
1、1,面向WEB的JAVA语言程序设计,天津职业技术师范大学 2013年4月11日,第2章 类与数组,1 抽象、封装与类 1.1 抽象与封装 1.2 Java 的类 1.3 类的修饰符 1.4 域 1.5 方法 1.6 访问控制符 2 数组对象,概念,面向对象 面向对象编程也叫做OOP(Object Oriented Programming),它是一种创建计算机程序的方法,是新一代的程序开发模式。它模拟显示世界的事物,把软件系统抽象成各种对象的集合,以对象为最小系统单位,这更接近于人类的自然思维,给程序开发人员更灵活的思维空间,使得开发大型复杂业务程序所用的代码量更小,并且成本更低、效率更高而且
2、运行得更加健壮。,概念,对象 在面向对象编程模式出现之前,开发程序传统的采用过程化的编程方式,即将程序考虑成一个顺序执行的指令串。所以采用过程化开发方式的程序员首先要做的事,就是针对需求,自顶向下、逐步细化,将问题分解成一连串的简单步骤。,概念,类 在现实世界中,会经常发现许多单独的对象都是同一类型。例如,也许有成千上万的单个的自行车存在,它们都是同样地模型,以相同的方式被制造。每一个自行车都是构建于同一模板并因此包含同样的组件。在面向对象术语中,就可以说,某个人的具体的自行车是自行车这个对象类的一个实例。一个类就是一个模板,从它那里个体对象被创建。,概念,继承 不同类型的对象,相互之间经常有
3、一定数量的共同点。例如,吉普车,小轿车,卡车,都共享汽车的特性。同时,每一个对象还定义了额外的特性使得它们与众不同。例如吉普车的底盘高度;小轿车的载人量;而卡车有额外的载重量。,1.1 抽象与封装 1.1.1 抽象 抽象是科学研究中经常使用的一种方法,即去除掉被研究对象中与主旨无关的次要部分,或是暂时不予考虑的部分,而仅仅抽取出与研究工作有关的实质性的内容加以考察。在计算机技术的软件开发方法中所使用的抽象有两类:一类是过程抽象,另一类是数据抽象。,过程抽象将整个系统的功能划分为若干部分,强调功能完成的过程和步骤。面向过程的软件开发方法采用的就是这种抽象方法。使用过程抽象有利于控制、降低整个程序
4、的复杂度,但是这种方法本身自由度较大,难于规范化和标准化,操作起来有一定难度,在质量上不易保证。 数据抽象是与过程抽象不同的抽象方法,它把系统中需要处理的数据和这些数据上的操作结合在一起,根据功能、性质、作用等因素抽象成不同的抽象数据类型。每个抽象数据类型既包含了数据,也包含了针对这些数据的授权操作,是相对于过程抽象更为严格、也更为合理的抽象方法。,面向对象的软件开发方法的主要特点之一,就是采用了数据抽象的方法来构建程序的类、对象和方法。实际上,所讲的面向对象软件开发过程中的面向对象的分析,就是对实际问题进行抽象,从而建立物理模型的过程。在面向对象技术中使用这种数据抽象方法,一方面可以去除掉与
5、核心问题无关的细枝末节,使开发工作可以集中在比较关键、主要的部分;另一方面,在数据抽象过程中对数据和操作的分析、辨别和定义可以帮助开发人员对整个问题有更深入、准确的认识。最后抽象形成的抽象数据类型,则是进一步设计、编程的基础和依据。,比如,要处理一个有关银行日常业务的问题,最核心的问题就是所有的资金、账目往来。根据与此核心问题有关的操作,就可以建立一个表示账户的抽象数据类型,作为考察的重点。而银行的其他业务和日常工作,则不在此列。相反,如果面对的是一个旨在提高银行服务水平和工作效率的综合管理系统,那么上述几项被第一个系统忽略的工作就应该成为第二个系统的抽象数据类型中的一部分。 抽象可以帮助人们
6、明确工作的重点,理清问题的脉络。面向对象的软件开发方法能够游刃有余地处理大规模、高复杂度的系统,也离不开这个特性发挥的重要作用。,1.1.2 封装 面向对象方法的封装特性是一个与其抽象特性密切相关的特性。具体地,封装就是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其他部分只有通过包裹在数据外面的被授权的操作,才能够与这个抽象数据类型交流和交互。,在面向对象的程序设计中,抽象数据类型是用“类”这种面向对象工具可理解和操纵的结构来代表的,每个类里都封装了相关的数据和操作。在实际的开发过程中,类多用来构建系统内部的模块,由于封装特性把类内的数据保护得很严
7、密,模块与模块间仅通过严格控制的界面进行交互,使它们之间耦合和交叉大大减少,从而降低了开发过程的复杂性,提高了效率和质量,减少了可能的错误,同时也保证了程序中数据的完整性和安全性。,例如,在银行日常业务模拟系统中,账户这个抽象数据类型把账户金额和交易情况封装在类的内部,系统的其他部分没有办法直接获取或改变这些关键数据,只有通过调用类内的方法才能做到。如调用查看余额的方法来获知账户的金额,调用存取款的方法来改变金额。只要给这些方法设置严格的访问权限,就可以保证只有被授权的其他抽象数据类型才可以执行这些操作,影响当前类的状态。这样,就保证了数据的安全和系统的严密。,面向对象技术的这种封装特性还有另
8、一个重要意义,就是使抽象数据类型,即类或模块的可重用性大为提高。封装使得抽象数据类型对内成为一个结构完整、可自我管理、自我平衡、高度集中的整体;对外则是一个功能明确、接口单一、可在各种合适的环境下都能独立工作的有机的单元。这样的有机单元特别有利于构建、开发大型标准化的应用软件系统,可以大幅度地提高生产效率,缩短开发周期和降低各种费用。例如,在“银行日常业务系统”中使用的抽象数据类型“账户”,如果设计合理的话,就可以直接应用在业务性质相似的“保险公司投保理赔管理系统”或“邮政储蓄业务系统”中。封装特性的这个优点目前已经越来越为广大的开发人员所重视。,1.2 Java的类 如前所述,抽象和封装这两
9、个面向对象程序设计的重要特点主要体现在类的定义与使用上,本节将讨论如何定义Java中的类。 1.2.1 系统定义的类 Java程序设计就是定义类的过程,但是Java程序中定义的类的数目和功能都是有限的,编程时还需要用到大量的系统定义好的类,即Java类库中的类。,类库是Java语言的重要组成部分。Java语言由语法规则和类库两部分组成,语法规则确定Java程序的书写规范;类库,或称为运行时库, 则提供了Java程序与运行它的系统软件(Java虚拟机)之间的接口。Java类库是一组由其他开发人员或软件供应商编写好的Java程序模块,每个模块通常对应一种特定的基本功能和任务,这样当自己编写的Jav
10、a程序需要完成其中某一功能的时候,就可以直接利用这些现成的类库,而不需要一切从头编写。所以,学习Java语言程序设计,也相应地要把注意力集中在两个方面:一是学习其语法规则,例如前面提到的基本数据类型、基本运算和基本语句等,这是编写Java程序的基本功;另一个是学习使用类库,这是提高编程效率和质量的必由之路。,这些系统定义好的类根据实现的功能不同,可以划分成不同的集合。每个集合是一个包,合称为类库。Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(application program interface),它可以帮助开发者方便、快捷地开发Java程序。 Java的类库大部
11、分是由它的发明者SUN公司提供的。这些类库称为基础类库(JFC),也有少量则是由其他软件开发商以商品形式提供的。由于Java语言诞生的时间不长,还处于不断发展、完善的阶段,所以Java的类库也在不停地扩充和修改,前后有1-6等多个几个版本,几个版本的主要内容相同,但也有一定差别。,根据功能的不同,Java的类库被划分为若干个不同的包,每个包中都有若干个具有特定功能和相互关系的类和接口。下面列出了一些经常使用的包。 1. java.lang包 java.lang包是Java语言的核心类库,包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等。每个J
12、ava程序运行时,系统都会自动地引入java.lang包,所以这个包的加载是缺省的。,2. java.io包 java.io包是Java语言的标准输入/输出类库,包含了实现Java程序与操作系统、用户界面以及其他Java程序做数据交换所使用的类,如基本输入/输出流、文件输入/输出流、过滤输入/输出流、管道输入/输出流、随机输入/输出流等。凡是需要完成与操作系统有关的较底层的输入输出操作的Java程序,都要用到java.io包。 3. java.util包 java.util包包括了Java语言中的一些低级的实用工具,如处理时间的Date类,处理变长数组的Vector类,实现栈和杂凑表的Stac
13、k类和HashTable类等,使用它们开发者可以更方便快捷地编程。,4. java.awt包 java.awt包是Java语言用来构建图形用户界面(GUI)的类库,它包括了许多界面元素和资源,主要在三个方面提供界面设计支持:低级绘图操作,如Graphics类等;图形界面组件和布局管理,如Checkbox类、Container类、LayoutManager接口等;以及界面用户交互控制和事件响应,如Event类。利用java.awt包,开发人员可以很方便地编写出美观、方便、标准化的应用程序界面。 5. java.awt.image包 java.awt.image包是用来处理和操纵来自于网上的图片的
14、Java工具类库。,6. java.awt.peer包 java.awt.peer包很少在程序中直接用到,它的作用是使得同一个Java程序在不同的软硬件平台上运行时,具有基本相同的用户界面。java . awt . peer包是程序代码与平台之间的中介,它将不同的平台包裹、隐藏起来,使这些平台在用户程序面前呈现相同的面貌。java . awt . peer包是实现Java语言跨平台特性的手段之一。 7. java.applet包 java.applet包是用来实现运行于Internet浏览器中的Java Applet的工具类库,它仅包含少量几个接口和一个非常有用的类:java.applet.A
15、pplet。,8. 包 包是Java语言用来实现网络功能的类库。由于Java语言还在不停地发展和扩充,它的功能,尤其是网络功能,也在不断地扩充。目前已经实现的Java网络功能主要有:底层的网络通信,如实现套接字通信的Socket类、ServerSocket类;编写用户自己的Telnet、FTP、邮件服务等实现网上通信的类;用于访问Internet上资源和进行CGI网关调用的类,如URL等。利用包中的类,开发者可以编写自己的具有网络功能的程序。,9. java.corba包和java.corba.orb包 这两个包将CORBA(common object request broker archi
16、tecture,是一种标准化接口体系)嵌入到Java环境中,使得Java程序可以存取、调用CORBA对象,并与CORBA对象共同工作。这样,Java程序就可以方便、动态地利用已经存在的由Java或其他面向对象语言开发的部件,简化软件的开发。 10. java.lang.reflect包 java.lang.reflect包提供了用于反射对象的工具,反射允许程序监视一个正在运行的对象并获得它的构造函数、方法和属性。,11. java.rmi包、java.rmi.registry包和java.rmi.server包 这三个包用来实现RMI(remote method invocation,远程方法
17、调用)功能。利用RMI功能,用户程序可以在远程计算机(服务器)上创建对象,并在本地计算机(客户机)上使用这个对象。 12. java.security包、java.security.acl包和java.security.interfaces包 这三个包提供了更完善的Java程序安全性控制和管理,利用它们可以对Java程序加密,也可以把特定的Java Applet标记为“可信赖的”,使它能够具有与Java Application相近的安全权限。,13. java.util.zip包 java.util.zip包用来实现文件压缩功能。 14. java.awt.datatransfer包 java
18、.awt.datatransfer包提供了处理数据传输的工具类,包括剪贴板、字符串发送器等。 15. java.awt.event包 java.awt.event包是对原有的Event类的一个扩充,它使得程序可以用不同的方式来处理不同类型的事件,并使每个图形界面的元素本身可以拥有处理它上面事件的能力。,16. java.sql包 java.sql包是实现JDBC(Java database connection)的类库。利用这个包可以使Java程序具有访问不同种类的数据库的功能,如Oracle,Sybase,DB2,SQLServer等。只要安装了合适的驱动程序,同一个Java程序不需修改就可
19、以存取、修改这些不同的数据库中的数据。JDBC的这种功能,再加上Java程序本身具有的平台无关性,大大拓宽了Java程序的应用范围,尤其是商业应用的适用领域。,使用类库中系统定义好的类有三种方式:一种是继承系统类,在用户程序里创建系统类的子类,例如每个Java Applet的主类都是java.applet包中的Applet类的子类;另一种方法是创建系统类的对象,例如图形界面的程序中要接受用户的输入时,就可以创建一个系统类TextField类的对象来完成这个任务;最后一种方法是直接使用系统类,例如在字符界面向系统标准输出输出字符串时使用的方法System.out.println( ),就是系统类
20、System的静态属性out的方法。,无论采用哪种方式,使用系统类的前提条件是这个系统类应该是用户程序可见的类。为此用户程序需要用import语句引入它所用到的系统类或系统类所在的包。例如使用图形用户界面的程序,应该用语句: import java.awt.*; import java.awt.event.*; 引入java.awt包和java.awt.event包。类库包中的程序都是字节码形式的程序,利用import语句将一个包引入到程序里,就相当于在编译过程中将该包中所有系统类的字节码加入到用户的Java程序中,这样用户Java程序就可以使用这些系统类及其中的各种功能。,有了类库中的系统类
21、,编写Java程序时就不必一切从头做起,避免了代码的重复和可能的错误(系统标准类总是正确有效的),也提高了编程的效率。一个用户程序中系统标准类使用得越多、越全面、越准确,这个程序的质量就越高;相反,离开了系统标准类和类库,Java程序几乎寸步难行。所以,要想掌握好Java的面向对象编程,编写出高质量的程序,必须对Java的类库有足够的了解。有理由认为,在清楚地掌握基本概念的基础上,开发者Java编程能力的强弱相当大程度上取决于对Java类库的熟悉和掌握程度。从这个意义上来说,面向对象编程中的系统标准类和类库类似于面向过程编程中的库函数,都是一种应用程序编程接口,它是开发编程人员所必须了解和掌握
22、的。,1.2.2 用户程序自定义类 系统定义的类虽然实现了许多常见的功能,但是用户程序仍然需要针对特定问题的特定逻辑来定义自己的类。用户程序定义自己的类有定义类头和定义类体两个步骤,其中类体又由属性(域)和方法组成。下面的程序片断定义了一个电话卡类。 例 1-1,1: class PhoneCard 2: 3: long cardNumber; 4: private int password; 5: double balance; 6: String connectNumber; 7: boolean connected; 8: 9: boolean performConnection(lon
23、g cn,int pw) 10: 11: if(cn = cardNumber ,14: return true; 15: 16: else 17: 18: connected=false; 19: return false; 20: 21: 22: double getBalance( ) 23: 24: if(connected) 25: return balance; 26: else 27: return -1;,28: 29: void performDial( ) 30: 31: if(connected) 32: balance -= 0.5; 33: 34: 例1-1的程序片断
24、定义了一个用户类PhoneCard,第1句定义了类头,第2句到第34句定义了类体。 类头使用关键字class标志类定义的开始,class关键字后面跟着用户定义的类的类名。类名的命名应符合Java对标识符命名的要求。PhoneCard表示这个类是从电话卡中抽象出的类。,类体用一对大括号括起,包括域和方法两大部分。其中域对应类的静态属性,方法对应类的行为和操作。一个类中可以定义多个域和方法。例1-1为PhoneCard类定义了五个域和三个方法。其中cardNumber域是长整型变量,代表电话卡的卡号;password域是整型变量,代表电话卡的密码;balance是双精度型变量,代表电话卡中剩余的金
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 WEB java 语言程序设计 第二
链接地址:https://www.31doc.com/p-2618663.html