大型程序的發(fā)展ppt課件_第1頁(yè)
大型程序的發(fā)展ppt課件_第2頁(yè)
大型程序的發(fā)展ppt課件_第3頁(yè)
大型程序的發(fā)展ppt課件_第4頁(yè)
大型程序的發(fā)展ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 Chapter 11 大型程序的開(kāi)展 . 在Java里,我們可以將大型程序內(nèi)的 類獨(dú)立出來(lái),分門別類地存到文件里,再將這些文件一同編譯執(zhí)行,如此的程序代碼將更具親和性且易于維護(hù)。本章將引見(jiàn)大型程序的開(kāi)展、類庫(kù)的概念以及Java所提供的常用的類庫(kù)。 11-1 文件的分割 在開(kāi)發(fā)大型程序時(shí),由于任務(wù)上的需求,程序代碼的開(kāi)發(fā)往往是有一些人,或幾個(gè)小組同時(shí)進(jìn)展。每個(gè)參與的小組或小組成員分別擔(dān)任某些類,并肩編寫好的類分別保管在各自的文件中,知道一切的類均開(kāi)發(fā)好,在分別編譯與執(zhí)行。這種文件分割的方式,益處在于便于程序的開(kāi)發(fā)與維護(hù)。. 在java里是如何實(shí)現(xiàn)文件的分割與編譯呢?讓我們?cè)僖訡Circle類為

2、例將編好的兩個(gè)類分分開(kāi)保管成兩個(gè)文件,并置于同一個(gè)文件夾內(nèi)假設(shè)放在c:javapack1文件夾內(nèi)/CCircle.java 文本置于 c:javapack1 文件夾下Class CCircle /定義類CCirclePublic void show()System.out.println(“show() method called);./app11_1.java,文本置于c;javapack1文件夾內(nèi)Public class app11-1 Public static void main(String args )CCircle cir=new CCircle();Cir.show();將文件

3、創(chuàng)建好之后,在Java的環(huán)境里分別編譯這兩個(gè)文件:c:javajavac pack1 CCircle.javac:javajavac pack1 app11_1.java.編譯好之后,分別產(chǎn)生CCircle.class與app11_1.class兩個(gè)文件,如圖111所示CCircle類CCircle類App11-1類App11-1類compliecomplie運(yùn)轉(zhuǎn)程序:C:javajava pack1app11_1運(yùn)轉(zhuǎn)結(jié)果:Show() method called經(jīng)過(guò)以上實(shí)例大家應(yīng)該可以了解如何編譯運(yùn)轉(zhuǎn)分割過(guò)的Java文件了。.11-2 運(yùn)用package package是在運(yùn)用多個(gè)類或接口時(shí)

4、,防止稱號(hào)反復(fù)而采用的一種措施。怎樣運(yùn)用呢?在類或接口的最上面一行加上package的聲明就可以了。11-2 -1 package的根本概念Package的聲明Package package 稱號(hào) 經(jīng)過(guò)package的聲明之后,在同一文件內(nèi)的接口或類都被納入一樣package中。加上package的聲明之后,編譯與運(yùn)轉(zhuǎn)的過(guò)程與方法有所改動(dòng)。一個(gè)實(shí)踐的例子:app11_2是package運(yùn)用的范例。請(qǐng)先建文件,再置于pack2文件夾內(nèi)。留意存放app11_2.java的文件夾稱號(hào)必需與package稱號(hào)一樣。./app11_2, package 的運(yùn)用,此文件置于pack2文件夾內(nèi)Package

5、 pack2;Class CCircle /CCircle類已置于pakcage pack2中public void show()System.out.println(“show() method called);public class app11_2 / 將CCircle類也納入package pack2當(dāng)中 public static void main(String args) CCircle cir=new CCircle(); cir.show(); .編譯app11-2.java: c:javajavacapp11_2.java讓我們檢查pack2文件夾就會(huì)發(fā)現(xiàn)產(chǎn)生CCircle

6、.class,app11-2.class這樣兩個(gè)文件,如圖11-2所示.執(zhí)行app_2:需求特別留意的兩點(diǎn): C:javajava pack2.app11_2執(zhí)行結(jié)果:Show() method called1.編譯時(shí)必需輸入“文件夾稱號(hào)Java文件名2.運(yùn)轉(zhuǎn)時(shí)必需輸入package 稱號(hào).類稱號(hào)“11-2-2將獨(dú)立分開(kāi)的類納入同一個(gè)package中問(wèn)題:當(dāng)類存在不同的文件,但隸屬于同一個(gè)package,那么怎樣編譯與運(yùn)轉(zhuǎn)呢?首先,如今Java的文件夾下創(chuàng)建一個(gè)子文件pack3,然后,在分別創(chuàng)建以下兩個(gè)文件,并將其保管在pack3文件內(nèi);.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 :運(yùn)轉(zhuǎn)app11_3C:javajavac pack3app11_3.javaC:java.javac pack3CCircle.javac:Javajava pcke3.app11_3

8、運(yùn)轉(zhuǎn)結(jié)果:Show() method called 由本例中,讀者可看到不論有幾個(gè)類,分成幾個(gè)文件,只需在每個(gè)文件面加上package稱號(hào),便可將它們歸屬于同一個(gè)package,如圖11-4所示,其他程序代碼的編寫和先前引見(jiàn)過(guò)的方法均完全一樣。.11-3 訪問(wèn)在不同package里的類 到目前為止,我們所引見(jiàn)的類都是隸屬于同一個(gè)package,因此在程序碼的編寫上并不需求做修正。但假設(shè)幾個(gè)類分別屬于不同的package時(shí),某個(gè)類要訪問(wèn)到其他類的成員時(shí),那么必需做以下的修正: 假設(shè)某個(gè)類需求被訪問(wèn)時(shí),那么必需把這個(gè)類公開(kāi)出來(lái),也就是說(shuō),此類必聲明成public。 假設(shè)要訪問(wèn)不同package內(nèi)某

9、個(gè)public類的成員時(shí),在程序代碼內(nèi)必需明確指明“被訪問(wèn)package的稱號(hào).類稱號(hào)。./CCircle.java/CCircle.java此文件存放在pack4b文件夾下 package pack4b; Public class CCircle /將CCircle類納入pack4中Public void show()System.out.println(“show() method called);11-3 -1 簡(jiǎn)單的范例.編譯程序:/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.運(yùn)轉(zhuǎn)結(jié)果:c:javajava pack4a.app11_4Show() method called運(yùn)轉(zhuǎn)程序:1.把CCircle類公開(kāi)出來(lái),也就是CCircle類必需聲明稱public,必需以被訪問(wèn)package的稱號(hào).類名“的格式來(lái)編寫。2.訪問(wèn)位于不同package里的類時(shí),被訪問(wèn)的類必需聲明稱public,否那么,出錯(cuò)。在本例中我們學(xué)要

11、留意兩點(diǎn):.下面我們經(jīng)過(guò)圖例來(lái)解釋這種訪問(wèn)關(guān)系圖11-5 訪問(wèn)位于不同package里的類.11-3-2 public private 與protected 修示符的角色修示符說(shuō)明沒(méi)有修示符成員或構(gòu)造函數(shù)只能被同一個(gè)package內(nèi)的程序訪問(wèn)Public如果所屬類聲明成public,則成員或構(gòu)造函數(shù)可被不同的package內(nèi)所有類所訪問(wèn)。若所屬類不是聲明成public,則成員或構(gòu)造函數(shù)只能被同一個(gè)package內(nèi)的程序所訪問(wèn)Private成員或構(gòu)造函數(shù)只能被位于同一個(gè)類內(nèi)的程序所訪問(wèn)protected成員或構(gòu)造函數(shù)只能被位于同一個(gè)package內(nèi)的類及它的子類來(lái)訪問(wèn)表11-1成員與構(gòu)造函數(shù)所運(yùn)

12、用的修示符.表11-2類與接口所示用的修示符修示符說(shuō)明沒(méi)有修示符只能讓同一個(gè)package里的類來(lái)訪問(wèn)public其他package包里的類也可以訪問(wèn)此類的成員 在app11_4中我們是經(jīng)過(guò)“被訪問(wèn)的package 稱號(hào).類稱號(hào)的語(yǔ)法來(lái)訪問(wèn)位于不同包里的類,很顯然這不是一種好的方法。那么,有沒(méi)有更好的方法呢?答案是一定的。我們可以將要被訪問(wèn)包的package整個(gè)導(dǎo)入程序代碼中,如此以來(lái)問(wèn)題就更為簡(jiǎn)化了。11-3-3導(dǎo)入package導(dǎo)入包格式Import package 稱號(hào).類稱號(hào)一個(gè)運(yùn)用導(dǎo)入包的范例./CCircle.java package 的運(yùn)用四,此文件置于pack5b文件夾內(nèi)pac

13、kage pack5b;public class CCirclepublic void show( )System.out.println(“show() method called);/app11_5.java,package 的運(yùn)用四,此文件置于package5aPackage pack5a;Import pack5b.CCircle; /加載pack5b package里的CCircle類.Public class app11_5public static void main(String args )CCirclecir=new CCircle( );/不用再寫package的稱號(hào)ci

14、r.show(); 當(dāng)package越建越多時(shí),將package分門別類也就更加重要。某些packag依功能劃分,可再細(xì)分為幾個(gè)“子package(sub-package),這種分類,packages劃分為上下層次的關(guān)系,使得程序代碼的編寫與維護(hù)更加容易。11-4 構(gòu)造 package 的層次關(guān)系. 那么,在Java里要如何創(chuàng)建package的層次關(guān)系呢? 假設(shè)app11_6類隸屬于package pack6,CCircle與CRectangle類分別屬于package subpack1與subpack2,而希望把subpack1與subpack2設(shè)成pack6的sub-package。在這種

15、情形下,可以先創(chuàng)建app11_6、subpack1與subpack2三個(gè)文件夾,其中subpack1與subpack2為app11_6的子文件夾。接著把a(bǔ)pp11_6.java存在pack6文件夾里,再分別把CCricle.java與CRectangle.java存到subpack1與subpack2文件夾內(nèi),即可完成package層次的設(shè)置。圖11-7為文件夾與所存放的Java源文件的層次關(guān)系圖。.圖11-7的文件夾層次關(guān)系可轉(zhuǎn)化成package的層次關(guān)系圖,圖11-8程序?qū)崿F(xiàn)/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、內(nèi)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運(yùn)轉(zhuǎn)app11_6.classc:javajavac pack6subpack1C

18、Circle.javac:javajavac pack6subpack2CRectangle.javac:javajavac packapp11_6.javac:javajavac pack6.app11_6運(yùn)轉(zhuǎn)結(jié)果: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 常用的類庫(kù) “類庫(kù)通俗地講就是用來(lái)存放類和接

19、口的地方圖11-10繪出了類庫(kù),子類庫(kù),類與接口之間的層次關(guān)系.Java 提供的類很多,但常用的就幾個(gè)。表11-3列出了Java常用類庫(kù)及其主要功能表11-3 Java常用的類庫(kù)類庫(kù)名稱所包含類的主要功能java.applet與applet相關(guān)的類,applet是嵌在網(wǎng)頁(yè)里的小程序,用來(lái)執(zhí)行特定的功能java.awt與Java早期窗口組件設(shè)計(jì)有關(guān)的類java.awt.event與事件(event)觸發(fā)相關(guān)的類java.langJava最基本的類,此類會(huì)自動(dòng)加載java.io與輸入/輸出相關(guān)的類與網(wǎng)絡(luò)組件與聯(lián)機(jī)相關(guān)的類java.util與Java utility相關(guān)的類. Java類庫(kù)提供的功能

20、非常強(qiáng)大,用活用會(huì)類庫(kù)無(wú)疑會(huì)起到事半功倍的效果,如何運(yùn)用類庫(kù)呢?請(qǐng)看下面的實(shí)例。實(shí)例一:導(dǎo)入java.awt類庫(kù)里的Button類,可用下面的語(yǔ)法。import java.awt.Button;/導(dǎo)入java.awt類庫(kù)里的Button類實(shí)例二:導(dǎo)入多個(gè)類,如java.awt類庫(kù)里的Button,Canvas可用下面的語(yǔ)法。import java.awt.Button;/導(dǎo)入java.awt類庫(kù)里的Button類import java.awt.Canvas;/導(dǎo)入java.awt類庫(kù)里的Canvas類實(shí)例三:導(dǎo)入類庫(kù)里的一切類,經(jīng)過(guò)通配符*來(lái)導(dǎo)入。Import java.awt.*;/導(dǎo)入ja

21、va.awt類庫(kù)里一切的類 本卷須知:當(dāng)我們用通配符導(dǎo)入類庫(kù)里的一切類時(shí),該類庫(kù)的子類不會(huì)導(dǎo)入的。.11-5-1 有關(guān)字符串的關(guān)系創(chuàng)建字符串對(duì)象用String聲明字符串變量,然后賦值給它,如下范例:String str=“abc;利用字符數(shù)組產(chǎn)生字符串,如下范例:char data=a,b,c;/設(shè)置data為字符a,b,c所組成的數(shù)組string str=new String(data); /利用String()構(gòu)造函數(shù)產(chǎn)生字符串直接利用String構(gòu)造函數(shù)來(lái)創(chuàng)建,如下范例:String str=new String(“abc);雖然這三種方法都可以創(chuàng)建字符串,經(jīng)過(guò)比較不難發(fā)現(xiàn),采用的一種方

22、法較為簡(jiǎn)便表11-4列出了第二種與第三種所運(yùn)用的構(gòu)造函數(shù)的格式.String 類構(gòu)造函數(shù)的格式方法主 要 功 能char charAt(int index)取得index位置的字符boolean equals(String str)測(cè)試字符串是否與str相同int indexOf(char ch)根據(jù)字符ch找出第一個(gè)在字符串出現(xiàn)的位置int length()取得字符串的長(zhǎng)度String substring(int index)取出index之后的子字符串String substring(int ind1, int ind2)取出位于ind1和ind2之間的字符串boolean startsW

23、ith(String prefix)測(cè)試字符串是否以prefix字符串為開(kāi)頭String toLowerCase()將字符串轉(zhuǎn)換成小寫String toUpperCase()將字符串轉(zhuǎn)換成大寫表 11-4.表 11-5 String類常用的方法 方法主 要 功 能char charAt(int index)取得index位置的字符boolean equals(String str)測(cè)試字符串是否與str相同int indexOf(char ch)根據(jù)字符ch找出第一個(gè)在字符串出現(xiàn)的位置int length()取得字符串的長(zhǎng)度String substring(int index)取出index之

24、后的子字符串String substring(int ind1, int ind2)取出位于ind1和ind2之間的字符串boolean startsWith(String prefix)測(cè)試字符串是否以prefix字符串為開(kāi)頭String toLowerCase()將字符串轉(zhuǎn)換成小寫String toUpperCase()將字符串轉(zhuǎn)換成大寫.String 類運(yùn)用的范例 / app11_7, String類運(yùn)用的范例 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類只提供了一些查找與測(cè)試的方法,假設(shè)要用字符串做連或修正,String類就沒(méi)有提供。所以只能用StringBuffer類庫(kù)里提供的方法。11-5-2 StringBuffer 類庫(kù).方法主要功能StringBuffer append(char c)將字符c放到字符串緩沖區(qū)之后StringBuffer append(String str)將字符串str放到字符串緩沖區(qū)之后StringBuffer deleteCharAt(int index)刪除字符串緩沖區(qū)里第index位置的字符StringBuffer insert(

27、int k,char c)在字符串緩沖區(qū)的第k個(gè)位置插入字符cStringBuffer insert(int k,String str)在字符串緩沖區(qū)的第k個(gè)位置插入字符串strint length() 取得緩沖區(qū)字符串的長(zhǎng)度StringBuffer replace(int m,int n ,String str)將字符串緩沖區(qū)里第m到第n之間以字符串str取代StringBuffer reverse()將字符串緩沖區(qū)里的字符串反向排列StringtoString()將字符串緩沖區(qū)里的字符串轉(zhuǎn)換成String 表 11-6 StringBuffer類常用的方法.StringBuffer 類運(yùn)用

28、的范例 / app11_8, StringBuffer類運(yùn)用的范例 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 基于效率上的思索,原始數(shù)據(jù)類型(primitive)如byte, short, char, int, long, float, double等均不被看成是對(duì)象。雖然如此,Java還是提供了一些特殊的類,讓原始數(shù)據(jù)類型在運(yùn)用上尤如對(duì)象普通。這些特殊的類稱之為wrapper class。 /* app11-8 OUTPUT-length=11moon & dogssgod & noomsgod & noom-*/.表11-7 原始數(shù)據(jù)類型與相對(duì)應(yīng)的wrapper class原始數(shù)據(jù)類型wrapper classbooleanBooleanbyteBytecharCharactershort

30、ShortintIntegerlongLongfloatFloatdoubleDouble. 所謂的wrap就是把東西包裝起來(lái)之意。因此wrapper class便是把原始數(shù)據(jù)類型包裝起來(lái),并且額外提供相關(guān)的功能。 wrapper class所提供的變量均屬“類變量,且wrapper class所提供的方法均是“類方。 例如:在第3章表3-2所引見(jiàn)的各種類型的最大值與最小值代碼,均是屬于“類變量,且定義在它們相對(duì)應(yīng)的wrapper class里。.表11-8 各種類常用的轉(zhuǎn)換函數(shù)類方法主要功能Bytestatic byte parseByte(String s) 將字符串s轉(zhuǎn)換成byte類型的

31、值 Bytestatic String toString(byte b)將byte類型的數(shù)值b轉(zhuǎn)換成字符串Characterstatic String toString(char c) 將字符c轉(zhuǎn)換成字符串Shortstatic short parseShort(String s) 將字符串s轉(zhuǎn)換成短整數(shù)Shortstatic String toString(short s) 將短整數(shù)s轉(zhuǎn)換成字符串.類方法主要功能Integerstatic int parseInt(String s)將字符串s轉(zhuǎn)換成整數(shù)Integerstatic String toString(int i)將整數(shù)i轉(zhuǎn)換成字符

32、串Longstatic long parseLong(String s) 將字符串s轉(zhuǎn)換成長(zhǎng)整數(shù)Longstatic String toString(Long i) 將長(zhǎng)整數(shù)i轉(zhuǎn)換成字符串Floatstatic float parseFloat(String s) 將字符串s轉(zhuǎn)換成浮點(diǎn)數(shù)Floatstatic String toString(float f) 將浮點(diǎn)數(shù)f轉(zhuǎn)換成字符串Doublestatic double parseDouble(String s) 將字符串s轉(zhuǎn)換成倍精度浮點(diǎn)數(shù)Doublestatic String toString(double d) 將倍精度浮點(diǎn)數(shù)d轉(zhuǎn)換成字符

33、串.例子:Integer class 方法的運(yùn)用01 / app11_9,Integer class 方法的運(yùn)用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轉(zhuǎn)換成整數(shù),加上4之后再設(shè)給整數(shù)變量inum,因此第10行可輸出數(shù)字127。第11行那么是把整數(shù)轉(zhuǎn)換成字符串,再與字符串4相連結(jié),因此12行輸出字符串1274。.11-5-4 運(yùn)用 math 類 Math類是置于java.lang類庫(kù)里的一個(gè)類,它所提供的方法可用來(lái)計(jì)算相關(guān)的數(shù)學(xué)函數(shù)。Math類所提供的變量為類變量,提供的方法為類方法。 方法 主要功能public static final double E 尤拉常量 (Eulers constant) public static final double PI 圓周率, 表 11-9 Math 類提供的類變量 表 11-10 Mat

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論