大型程序的发展ppt课件_第1页
大型程序的发展ppt课件_第2页
大型程序的发展ppt课件_第3页
大型程序的发展ppt课件_第4页
大型程序的发展ppt课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 Chapter 11 大型程序的开展 . 在Java里,我们可以将大型程序内的 类独立出来,分门别类地存到文件里,再将这些文件一同编译执行,如此的程序代码将更具亲和性且易于维护。本章将引见大型程序的开展、类库的概念以及Java所提供的常用的类库。 11-1 文件的分割 在开发大型程序时,由于任务上的需求,程序代码的开发往往是有一些人,或几个小组同时进展。每个参与的小组或小组成员分别担任某些类,并肩编写好的类分别保管在各自的文件中,知道一切的类均开发好,在分别编译与执行。这种文件分割的方式,益处在于便于程序的开发与维护。. 在java里是如何实现文件的分割与编译呢?让我们再以CCircle类为

2、例将编好的两个类分分开保管成两个文件,并置于同一个文件夹内假设放在c:javapack1文件夹内/CCircle.java 文本置于 c:javapack1 文件夹下Class CCircle /定义类CCirclePublic void show()System.out.println(“show() method called);./app11_1.java,文本置于c;javapack1文件夹内Public class app11-1 Public static void main(String args )CCircle cir=new CCircle();Cir.show();将文件

3、创建好之后,在Java的环境里分别编译这两个文件:c:javajavac pack1 CCircle.javac:javajavac pack1 app11_1.java.编译好之后,分别产生CCircle.class与app11_1.class两个文件,如图111所示CCircle类CCircle类App11-1类App11-1类compliecomplie运转程序:C:javajava pack1app11_1运转结果:Show() method called经过以上实例大家应该可以了解如何编译运转分割过的Java文件了。.11-2 运用package package是在运用多个类或接口时

4、,防止称号反复而采用的一种措施。怎样运用呢?在类或接口的最上面一行加上package的声明就可以了。11-2 -1 package的根本概念Package的声明Package package 称号 经过package的声明之后,在同一文件内的接口或类都被纳入一样package中。加上package的声明之后,编译与运转的过程与方法有所改动。一个实践的例子:app11_2是package运用的范例。请先建文件,再置于pack2文件夹内。留意存放app11_2.java的文件夹称号必需与package称号一样。./app11_2, package 的运用,此文件置于pack2文件夹内Package

5、 pack2;Class CCircle /CCircle类已置于pakcage pack2中public void show()System.out.println(“show() method called);public class app11_2 / 将CCircle类也纳入package pack2当中 public static void main(String args) CCircle cir=new CCircle(); cir.show(); .编译app11-2.java: c:javajavacapp11_2.java让我们检查pack2文件夹就会发现产生CCircle

6、.class,app11-2.class这样两个文件,如图11-2所示.执行app_2:需求特别留意的两点: C:javajava pack2.app11_2执行结果:Show() method called1.编译时必需输入“文件夹称号Java文件名2.运转时必需输入package 称号.类称号“11-2-2将独立分开的类纳入同一个package中问题:当类存在不同的文件,但隶属于同一个package,那么怎样编译与运转呢?首先,如今Java的文件夹下创建一个子文件pack3,然后,在分别创建以下两个文件,并将其保管在pack3文件内;.Package pack3;/将CCircle类纳入p

7、ackage pack3中Classs CCirclePublic void show()System.out.println(“show() method called);Package pack3Public class app11_3Public static void main (String args ) CCircle cir=new CCircle();cir.show();.编译app11_3 :运转app11_3C:javajavac pack3app11_3.javaC:java.javac pack3CCircle.javac:Javajava pcke3.app11_3

8、运转结果:Show() method called 由本例中,读者可看到不论有几个类,分成几个文件,只需在每个文件面加上package称号,便可将它们归属于同一个package,如图11-4所示,其他程序代码的编写和先前引见过的方法均完全一样。.11-3 访问在不同package里的类 到目前为止,我们所引见的类都是隶属于同一个package,因此在程序码的编写上并不需求做修正。但假设几个类分别属于不同的package时,某个类要访问到其他类的成员时,那么必需做以下的修正: 假设某个类需求被访问时,那么必需把这个类公开出来,也就是说,此类必声明成public。 假设要访问不同package内某

9、个public类的成员时,在程序代码内必需明确指明“被访问package的称号.类称号。./CCircle.java/CCircle.java此文件存放在pack4b文件夹下 package pack4b; Public class CCircle /将CCircle类纳入pack4中Public void show()System.out.println(“show() method called);11-3 -1 简单的范例.编译程序:/app11_4.java此文件存放在pack4a中Package pack4a;Public class app11_4Public static voi

10、d main(String args )Pack4b.CCircle cir=new pack4b.CCircle();cir.show();c:javajavac pack4aapp11_4.javac:java pack4bCCircle.java.运转结果:c:javajava pack4a.app11_4Show() method called运转程序:1.把CCircle类公开出来,也就是CCircle类必需声明称public,必需以被访问package的称号.类名“的格式来编写。2.访问位于不同package里的类时,被访问的类必需声明称public,否那么,出错。在本例中我们学要

11、留意两点:.下面我们经过图例来解释这种访问关系图11-5 访问位于不同package里的类.11-3-2 public private 与protected 修示符的角色修示符说明没有修示符成员或构造函数只能被同一个package内的程序访问Public如果所属类声明成public,则成员或构造函数可被不同的package内所有类所访问。若所属类不是声明成public,则成员或构造函数只能被同一个package内的程序所访问Private成员或构造函数只能被位于同一个类内的程序所访问protected成员或构造函数只能被位于同一个package内的类及它的子类来访问表11-1成员与构造函数所运

12、用的修示符.表11-2类与接口所示用的修示符修示符说明没有修示符只能让同一个package里的类来访问public其他package包里的类也可以访问此类的成员 在app11_4中我们是经过“被访问的package 称号.类称号的语法来访问位于不同包里的类,很显然这不是一种好的方法。那么,有没有更好的方法呢?答案是一定的。我们可以将要被访问包的package整个导入程序代码中,如此以来问题就更为简化了。11-3-3导入package导入包格式Import package 称号.类称号一个运用导入包的范例./CCircle.java package 的运用四,此文件置于pack5b文件夹内pac

13、kage pack5b;public class CCirclepublic void show( )System.out.println(“show() method called);/app11_5.java,package 的运用四,此文件置于package5aPackage pack5a;Import pack5b.CCircle; /加载pack5b package里的CCircle类.Public class app11_5public static void main(String args )CCirclecir=new CCircle( );/不用再写package的称号ci

14、r.show(); 当package越建越多时,将package分门别类也就更加重要。某些packag依功能划分,可再细分为几个“子package(sub-package),这种分类,packages划分为上下层次的关系,使得程序代码的编写与维护更加容易。11-4 构造 package 的层次关系. 那么,在Java里要如何创建package的层次关系呢? 假设app11_6类隶属于package pack6,CCircle与CRectangle类分别属于package subpack1与subpack2,而希望把subpack1与subpack2设成pack6的sub-package。在这种

15、情形下,可以先创建app11_6、subpack1与subpack2三个文件夹,其中subpack1与subpack2为app11_6的子文件夹。接着把app11_6.java存在pack6文件夹里,再分别把CCricle.java与CRectangle.java存到subpack1与subpack2文件夹内,即可完成package层次的设置。图11-7为文件夹与所存放的Java源文件的层次关系图。.图11-7的文件夹层次关系可转化成package的层次关系图,图11-8程序实现/CCircle.java,此文件置于pack6subpack1文件夹下Package pack6.subpack1

16、;Public class CCircle Public void show() System.out.println(“show( ) method of claas CCircle called); ./CRectangle.java,此文件夹置于pack6subpack2文件夹下package pack6.subpack2;Public class CRectangle public void show() System.out.println(“show() method of class CRectangle called); /app11_6.java,将此文件置于pack6文件夹

17、内pack pack6;/将app11_6类纳入package pack6中Import pack6.subpack1.CCircle;/加载pack6.subpack1里的 CCircle类Import pack6.subpack2.CRectangle;/加载pack6.subpack2里 的CRectangle类public class app11_6public static void main(Strng args ).编译Circle.java,CRectangle.java与app11_6.java运转app11_6.classc:javajavac pack6subpack1C

18、Circle.javac:javajavac pack6subpack2CRectangle.javac:javajavac packapp11_6.javac:javajavac pack6.app11_6运转结果:Show() method in class CCircle calledShow() method in class CRectangle calledCCircle cir=new CCircle();CRectangle rect=new CRetangle();cir.show();rect.show();.11-5 Java 常用的类库 “类库通俗地讲就是用来存放类和接

19、口的地方图11-10绘出了类库,子类库,类与接口之间的层次关系.Java 提供的类很多,但常用的就几个。表11-3列出了Java常用类库及其主要功能表11-3 Java常用的类库类库名称所包含类的主要功能java.applet与applet相关的类,applet是嵌在网页里的小程序,用来执行特定的功能java.awt与Java早期窗口组件设计有关的类java.awt.event与事件(event)触发相关的类java.langJava最基本的类,此类会自动加载java.io与输入/输出相关的类与网络组件与联机相关的类java.util与Java utility相关的类. Java类库提供的功能

20、非常强大,用活用会类库无疑会起到事半功倍的效果,如何运用类库呢?请看下面的实例。实例一:导入java.awt类库里的Button类,可用下面的语法。import java.awt.Button;/导入java.awt类库里的Button类实例二:导入多个类,如java.awt类库里的Button,Canvas可用下面的语法。import java.awt.Button;/导入java.awt类库里的Button类import java.awt.Canvas;/导入java.awt类库里的Canvas类实例三:导入类库里的一切类,经过通配符*来导入。Import java.awt.*;/导入ja

21、va.awt类库里一切的类 本卷须知:当我们用通配符导入类库里的一切类时,该类库的子类不会导入的。.11-5-1 有关字符串的关系创建字符串对象用String声明字符串变量,然后赋值给它,如下范例:String str=“abc;利用字符数组产生字符串,如下范例:char data=a,b,c;/设置data为字符a,b,c所组成的数组string str=new String(data); /利用String()构造函数产生字符串直接利用String构造函数来创建,如下范例:String str=new String(“abc);虽然这三种方法都可以创建字符串,经过比较不难发现,采用的一种方

22、法较为简便表11-4列出了第二种与第三种所运用的构造函数的格式.String 类构造函数的格式方法主 要 功 能char charAt(int index)取得index位置的字符boolean equals(String str)测试字符串是否与str相同int indexOf(char ch)根据字符ch找出第一个在字符串出现的位置int length()取得字符串的长度String substring(int index)取出index之后的子字符串String substring(int ind1, int ind2)取出位于ind1和ind2之间的字符串boolean startsW

23、ith(String prefix)测试字符串是否以prefix字符串为开头String toLowerCase()将字符串转换成小写String toUpperCase()将字符串转换成大写表 11-4.表 11-5 String类常用的方法 方法主 要 功 能char charAt(int index)取得index位置的字符boolean equals(String str)测试字符串是否与str相同int indexOf(char ch)根据字符ch找出第一个在字符串出现的位置int length()取得字符串的长度String substring(int index)取出index之

24、后的子字符串String substring(int ind1, int ind2)取出位于ind1和ind2之间的字符串boolean startsWith(String prefix)测试字符串是否以prefix字符串为开头String toLowerCase()将字符串转换成小写String toUpperCase()将字符串转换成大写.String 类运用的范例 / app11_7, String类运用的范例 public class app11_7 public static void main(String args) String str=Hello Java!; System.

25、out.println(charAt(6)=+str.charAt(6); System.out.println(length=+str.length(); System.out.println(sub string=+str.substring(6); System.out.println(start with He=+str.startsWith(He); System.out.println(upper case=+str.toUpperCase(); ./* app11-7 OUTPUT-Length=12charAt(6)=Jsub string=Java!start with He

26、=trueUppercase=HELLO JAVA!-*/ 由于String类只提供了一些查找与测试的方法,假设要用字符串做连或修正,String类就没有提供。所以只能用StringBuffer类库里提供的方法。11-5-2 StringBuffer 类库.方法主要功能StringBuffer append(char c)将字符c放到字符串缓冲区之后StringBuffer append(String str)将字符串str放到字符串缓冲区之后StringBuffer deleteCharAt(int index)删除字符串缓冲区里第index位置的字符StringBuffer insert(

27、int k,char c)在字符串缓冲区的第k个位置插入字符cStringBuffer insert(int k,String str)在字符串缓冲区的第k个位置插入字符串strint length() 取得缓冲区字符串的长度StringBuffer replace(int m,int n ,String str)将字符串缓冲区里第m到第n之间以字符串str取代StringBuffer reverse()将字符串缓冲区里的字符串反向排列StringtoString()将字符串缓冲区里的字符串转换成String 表 11-6 StringBuffer类常用的方法.StringBuffer 类运用

28、的范例 / app11_8, StringBuffer类运用的范例 public class app11_8 public static void main(String args) StringBuffer str=new StringBuffer(moon & cats); System.out.println(length=+str.length(); System.out.println(str.replace(7,11,dogs); System.out.println(str.reverse(); System.out.println(str); .11-5-3 wraper cl

29、ass 基于效率上的思索,原始数据类型(primitive)如byte, short, char, int, long, float, double等均不被看成是对象。虽然如此,Java还是提供了一些特殊的类,让原始数据类型在运用上尤如对象普通。这些特殊的类称之为wrapper class。 /* app11-8 OUTPUT-length=11moon & dogssgod & noomsgod & noom-*/.表11-7 原始数据类型与相对应的wrapper class原始数据类型wrapper classbooleanBooleanbyteBytecharCharactershort

30、ShortintIntegerlongLongfloatFloatdoubleDouble. 所谓的wrap就是把东西包装起来之意。因此wrapper class便是把原始数据类型包装起来,并且额外提供相关的功能。 wrapper class所提供的变量均属“类变量,且wrapper class所提供的方法均是“类方。 例如:在第3章表3-2所引见的各种类型的最大值与最小值代码,均是属于“类变量,且定义在它们相对应的wrapper class里。.表11-8 各种类常用的转换函数类方法主要功能Bytestatic byte parseByte(String s) 将字符串s转换成byte类型的

31、值 Bytestatic String toString(byte b)将byte类型的数值b转换成字符串Characterstatic String toString(char c) 将字符c转换成字符串Shortstatic short parseShort(String s) 将字符串s转换成短整数Shortstatic String toString(short s) 将短整数s转换成字符串.类方法主要功能Integerstatic int parseInt(String s)将字符串s转换成整数Integerstatic String toString(int i)将整数i转换成字符

32、串Longstatic long parseLong(String s) 将字符串s转换成长整数Longstatic String toString(Long i) 将长整数i转换成字符串Floatstatic float parseFloat(String s) 将字符串s转换成浮点数Floatstatic String toString(float f) 将浮点数f转换成字符串Doublestatic double parseDouble(String s) 将字符串s转换成倍精度浮点数Doublestatic String toString(double d) 将倍精度浮点数d转换成字符

33、串.例子:Integer class 方法的运用01 / app11_9,Integer class 方法的运用02 public class app11_9 03 04 public static void main(String args)05 06 String str;07 int inum;08 09 inum=Integer.parseInt(123)+4;10 System.out.println(inum);11 str=Integer.toString(inum)+4;12 System.out.println(str); 13 14 ./* app11-9 OUTPUT-1

34、271274-*/第9行把字符串“123转换成整数,加上4之后再设给整数变量inum,因此第10行可输出数字127。第11行那么是把整数转换成字符串,再与字符串4相连结,因此12行输出字符串1274。.11-5-4 运用 math 类 Math类是置于java.lang类库里的一个类,它所提供的方法可用来计算相关的数学函数。Math类所提供的变量为类变量,提供的方法为类方法。 方法 主要功能public static final double E 尤拉常量 (Eulers constant) public static final double PI 圆周率, 表 11-9 Math 类提供的类变量 表 11-10 Mat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论