首頁(yè) - 網(wǎng)校 - 萬(wàn)題庫(kù) - 直播 - 雄鷹網(wǎng)校 - 團(tuán)購(gòu) - 書城 - �?� - 學(xué)習(xí)通 - 導(dǎo)航 -
首頁(yè)網(wǎng)校萬(wàn)題庫(kù)直播雄鷹網(wǎng)校團(tuán)購(gòu)書城�?�論壇實(shí)用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓(xùn)
專升本
自學(xué)考試 成人高考
四 六 級(jí)
GRE考試
攻碩英語(yǔ)
零起點(diǎn)日語(yǔ)
職稱英語(yǔ)
口譯筆譯
申碩英語(yǔ)
零起點(diǎn)韓語(yǔ)
商務(wù)英語(yǔ)
日語(yǔ)等級(jí)
GMAT考試
公共英語(yǔ)
職稱日語(yǔ)
新概念英語(yǔ)
專四專八
博思考試
零起點(diǎn)英語(yǔ)
托�?荚�
托業(yè)考試
零起點(diǎn)法語(yǔ)
雅思考試
成人英語(yǔ)三級(jí)
零起點(diǎn)德語(yǔ)
等級(jí)考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計(jì)算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報(bào) 關(guān) 員
外 銷 員
價(jià)格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報(bào)檢員
法律顧問
管理咨詢
企業(yè)培訓(xùn)
社會(huì)工作者
銀行從業(yè)
教師資格
營(yíng)養(yǎng)師
保險(xiǎn)從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國(guó)際商務(wù)
心理咨詢
營(yíng) 銷 師
司法考試
國(guó)際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格
基金從業(yè)資格
統(tǒng)計(jì)從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計(jì)師
會(huì)計(jì)職稱
法律顧問
ACCA考試
初級(jí)會(huì)計(jì)職稱
資產(chǎn)評(píng)估師
高級(jí)經(jīng)濟(jì)師
注冊(cè)會(huì)計(jì)師
高級(jí)會(huì)計(jì)師
美國(guó)注冊(cè)會(huì)計(jì)師
審計(jì)師考試
國(guó)際內(nèi)審師
注冊(cè)稅務(wù)師
理財(cái)規(guī)劃師
一級(jí)建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價(jià)師
二級(jí)建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價(jià)工程師
注冊(cè)測(cè)繪師
質(zhì)量工程師
巖土工程師
注冊(cè)給排水
造價(jià)員考試
注冊(cè)計(jì)量師
環(huán)保工程師
化工工程師
暖通工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
消防工程師
監(jiān)理工程師
房地產(chǎn)估價(jià)
土地估價(jià)師
安全評(píng)價(jià)師
房地產(chǎn)經(jīng)紀(jì)人
投資項(xiàng)目管理師
環(huán)境影響評(píng)價(jià)師
土地登記代理人
寶寶起名
繽紛校園
實(shí)用文檔
入黨申請(qǐng)
英語(yǔ)學(xué)習(xí)
思想?yún)R報(bào)
作文大全
工作總結(jié)
求職招聘 論文下載 直播課堂

2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程第五章(7)

考試吧整理了“2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程”,望給備考2015年計(jì)算機(jī)等級(jí)考試的考生帶來(lái)幫助!

  點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程章節(jié)匯總

  點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程第五章匯總

  5.7 使用對(duì)象

  讓我們建立一個(gè)例子來(lái)實(shí)現(xiàn)一些簡(jiǎn)單的二維圖形,這將會(huì)給我們一個(gè)使用更多類的機(jī)會(huì)。我們定義兩個(gè)類;一個(gè)是點(diǎn)對(duì)象類,另一個(gè)是線對(duì)象類,然后使用這兩個(gè)類確定線的交點(diǎn)。我們將稱此例子為TryGenmetry,因此你要將程序文件存儲(chǔ)在該名字的目錄或文件夾下。該例子中包括了大量的代碼行,我們將逐步地把它們集中在一起,并且試著理解每段代碼的執(zhí)行過程。

  試試看--Point類

  我們首先為點(diǎn)對(duì)象定義一個(gè)很基本的類:

  class Point

  {

  //Coordinates of the point

  double x;

  double y;

  //Create a point from coordinates

  point (double xVal,double,yVal)

  {

  x=xVal;

  y=yVal;

  }

  //Create a point from another Point object

  Point(final Point oldPoint)

  (

  x=oldPoint.x; //Copy x coordinate

  y=oldPoint.y; //Copy y coordinate

  }

  //Move a point

  void move (double xDelta,double yDelto)

  {

  //Parameter values are increments to the current coordinates

  x+=xDelte;

  y+=yDelte;

  }

  //Calculate the discance to another poine

  double distance(fina) Point aPoint

  {

  return

  (x-aPoint.x)*(x-aPoint.x)+(y + aPoint.y)*(y-apoint,y);

  }

  //Convert a point to a string

  public string tostring ( )

  {

  rsturn Double.tostring()

  }

  }

  應(yīng)該將Point.java保存到目錄TryGeometry中。

  如何操作

  這是一個(gè)簡(jiǎn)單的類,它僅有兩個(gè)實(shí)例變量x和Y,作為Point對(duì)象的坐標(biāo)。在此,我們有兩個(gè)構(gòu)造函數(shù):一個(gè)是通過自變量傳遞一對(duì)數(shù)值來(lái)建立一個(gè)點(diǎn);另一個(gè)是根據(jù)一個(gè)己存在的點(diǎn)來(lái)建立一個(gè)新的Point對(duì)象。

  在類中包含有三個(gè)方法。第一個(gè)是move方法,它可以為每個(gè)坐標(biāo)值加上一個(gè)增量來(lái)將Point移動(dòng)到另一個(gè)位置上。另一個(gè)是distance()方法,它可以計(jì)算從當(dāng)前的Point對(duì)象到自變量傳入的Point對(duì)象之間的距離。這個(gè)方法應(yīng)用勾股定理計(jì)算距離,如下圖所示。

  

  最后一個(gè)是toString()方法,它可以返回一個(gè)描述當(dāng)前點(diǎn)坐標(biāo)的字符串。如果一個(gè)類定義了toString)方法,那么這個(gè)類的對(duì)象就可以作為字符串連接運(yùn)算符十的一個(gè)操作數(shù),因此,你可以在任何類中實(shí)現(xiàn)這個(gè)方法,并使對(duì)象按照這種方式應(yīng)用。在必要的時(shí)候,編譯器將自動(dòng)地插入一個(gè)對(duì)toString()的調(diào)用。例如,假定thePoint是一個(gè)Point類型的對(duì)象,我們編寫語(yǔ)句

  system.put.println(The point is at +thePoint);

  taString()方法將被自動(dòng)地調(diào)用來(lái)把thePoint型轉(zhuǎn)換為String型。其結(jié)果將被追加到String文字中。我們己經(jīng)把taString()方法說(shuō)明為public,在這里要讓這個(gè)類能夠通過編譯,這樣處理是必要的。我們將在本章稍后解釋其原因。

  注意,我們是如何使用定義在類Double中的靜態(tài)toStringf( )方法,將x的值轉(zhuǎn)換成String型的。編譯器將為"+"操作左面的操作數(shù)y自動(dòng)地插入一個(gè)對(duì)相同方法的調(diào)用,來(lái)把它轉(zhuǎn)換成String對(duì)象。

  試試看--Line類

  我們可以在Line類中定義使用Point對(duì)象:

  Class Line

  {

  point start //Start point of line

  point end //End point of line

  //Create a line from two points

  line(final Point start,final Point end)

  (

  this.start =new Point(Start);

  this.end=new point(end);

  )

  //Create a line form two coordinate pairs

  Line(double xStart.double ystart,double xEnd,double y End)

  {

  start=new point(xStart,ystart); //Create the start point

  通常你應(yīng)該避免在兩個(gè)對(duì)象之間存在這種隱含地依賴關(guān)系。

  在Line類的toStrins方法中,我們可以在一個(gè)Line對(duì)象的String表示形式中直接地使用Point對(duì)象,這是因?yàn)镻oint類也定義了toString方法。

  我們現(xiàn)在已經(jīng)定義了兩個(gè)類。在這些類定義中,包括了定義每個(gè)類對(duì)象的基本數(shù)據(jù)。我們還定義了一些被認(rèn)為很有用的方法,并且增加了幾個(gè)有不同輸入?yún)?shù)的構(gòu)造函數(shù)。注意,在Line類的定義中是如何應(yīng)用Point類的。用兩個(gè)Point對(duì)象來(lái)定義一條線是非常自然的,這要比完全用單獨(dú)的x和Y坐標(biāo)來(lái)定義Line類更加簡(jiǎn)單、更易于理解。為了進(jìn)一步說(shuō)明類如何相互作用,如何直接地利用類來(lái)解決問題,讓我們?cè)O(shè)計(jì)一個(gè)方法,用它來(lái)計(jì)算兩個(gè)Line對(duì)象的相交點(diǎn)。

  由兩條直線建立一個(gè)點(diǎn)

  我們可以把這個(gè)方法增加到Line類中。下面的示意圖說(shuō)明了數(shù)學(xué)運(yùn)算的操作過程。

  

  如果你愿意的話,可以忽略這個(gè)數(shù)學(xué)運(yùn)算的過程,因?yàn)樗⒉皇潜纠凶钪饕膬?nèi)容。如果你不希望對(duì)這個(gè)新的構(gòu)造函數(shù)中的代碼進(jìn)行深究的話,就可以側(cè)隨下面的"試試看".換句話說(shuō),如果你對(duì)高中所學(xué)過的知識(shí)還比較熟悉的話,就不會(huì)感覺太困難。

  獲得兩條直線交點(diǎn)的一種方法,是使用上圖額度那些方程式。他們之所以被稱作參數(shù)方程式,是因?yàn)樗麄兪褂昧艘粋€(gè)參數(shù)值(s和t)作為決定每條直線上點(diǎn)的變量。參數(shù)s和t早0到1之間變化,用他們給出位于定義的起點(diǎn)和終點(diǎn)之間的直線上點(diǎn)。當(dāng)一個(gè)參數(shù)s或t為0時(shí),方程式給出了每條直線起點(diǎn)的坐標(biāo);為1時(shí),給出終點(diǎn)的坐標(biāo)。

  在直線的交叉位置,直線方程式一定會(huì)產(chǎn)生相同的(x,y)的坐標(biāo)值,所以,在這點(diǎn)上,兩條直線方程式右面的x值一定會(huì)相等,同理y值也一定相等。這就給出了兩個(gè)關(guān)于s和t的方程式。使用代數(shù)代換,你可以除去s而只保留所示的t方程式,然后可以用定義的linel方程式替代t,從而得到交點(diǎn)x和y的坐標(biāo)。

  試試看--計(jì)算兩條直線的交點(diǎn)

  我們可以利用這些結(jié)果為L(zhǎng)ine類編寫其他的方法。把下列代碼添加到Line.java的定義中:

  // Return a point as the intersection of two Lines- called form a line object

  Point intersecta(final line line)

  {

  Point localPoint=new Point(0,0);

  double num=

  (this.end.y=this.start.y)*(this.start.x-line1.start.x)

  (this.end.x=this.start.x)*(this.start.y-line1.start.y)

  double denom =

  (this.end.y=this.start.y)*(this.start.x-line1.start.x)*num/denom;

  (this.end.x=this.start.x)*(this.start.y-line1.start.y)*num/denom;

  return localPoint;

  }

  由于在Line類定義中引用了Point類,所以Line類在與它相關(guān)的其他類無(wú)效時(shí)是不能被編譯的。在你編譯Line類時(shí),編譯器也將編譯其他的類。

  如何操作

  intersects()方法在一個(gè)Lure對(duì)象中被調(diào)用,并以另一個(gè)Line對(duì)象作為自變量。在代碼中,局部變量num和denam是示意圖中t表達(dá)式的分子和分母。然后我們使用這些值來(lái)計(jì)算交點(diǎn)x和y的坐標(biāo)。

  假如兩條直線是平行的,t表達(dá)式中的分母就為0,所以你一定要在代碼中檢查這個(gè)值,現(xiàn)在,我們先忽略它,若發(fā)生這種情況,我們就以Infinity(無(wú)窮大)結(jié)合。

  注意我們是如何獲得定義直線的Point對(duì)象的坐標(biāo)值的。當(dāng)你想引用一個(gè)成員的成員時(shí),只要重復(fù)使用點(diǎn)標(biāo)記引用對(duì)象成員即可。例如,對(duì)于對(duì)象line1,表達(dá)式line1.start引用直線的開始端Point對(duì)象。因此,linel.start.x引用它的x坐標(biāo),而linel.start.y則存取它的y坐標(biāo)。

  現(xiàn)在,我們有一個(gè)Line類,可以計(jì)算兩個(gè)Line對(duì)象的交點(diǎn)。我們需要一個(gè)程序來(lái)測(cè)試這段代碼。

  試試看--TryGeometry類

  我們可以在main( )方法中用下列語(yǔ)句演示一下已經(jīng)定義的兩個(gè)類:

  public class TryGeometry

  {

  public static void main(string[ ] args)

  (

  //Create two points and display them

  Point start=new Point(0.0,1.0);

  Piont end=new Point(5.0,6.0);

  System.out.Println(Points created are + start +and +and);

  //Create two lines and display them

  Line line1=new Line(start,end);

  Line line2=new Line(0.0,3.0,3.0,0.0);

  system.out.println(Lines oreated are + linel + and + line2);

  //Display the intersection

  system.out.println("Intersection is + line2.intersects(line1);

  //Now move the end point of linel and show the new intersection

  endmove(1.0-5.0);

  system.out.println(Intersection is + linel.intersects(line2));

  }

  }

  程序產(chǎn)生的輸出為:

  Points created are 0.0.1.0 and 5.0,6.0

  Lines created are(0.0.1.0):(5.0,6.0)and (0.0.3.0):(3.0.0.0)

  Intersection is 1.0.2.0

  Intersection is 1.0.2.0

  如何操作

  我們首先建立兩個(gè)Point對(duì)象,這兩個(gè)對(duì)象將在后面建立對(duì)象line 1的時(shí)候使用,然后使用Println()方法顯示這兩個(gè)點(diǎn)。我們?cè)赑oint類中定義的touring()方法被自動(dòng)地用來(lái)產(chǎn)生每個(gè)Point對(duì)象的String表示形式。

  依據(jù)兩個(gè)點(diǎn)建立line 1之后,我們使用Line類中的另一個(gè)構(gòu)造函數(shù),根據(jù)兩對(duì)坐標(biāo)建立Line2然后顯示這兩條直線。這里line類的tostring()成員被調(diào)用來(lái)建立每個(gè)Line.對(duì)象的String表示形式,這個(gè)方法中又依次使用Point類中的toString()方法。

  下一條語(yǔ)句用line2調(diào)用intersects()方法,并且返回兩條直線line 1和line2交點(diǎn)的Poitlt對(duì)象,然后將該P(yáng)aint對(duì)象作為println()方法的自變量顯示輸出。正像你看到的,我們得到這個(gè)Point對(duì)象時(shí),并沒有強(qiáng)迫保存它,這里我們僅用它來(lái)建立被顯示的字符串。

  我們使用類Point中的move()方法來(lái)修改。end對(duì)象的坐標(biāo),利用這個(gè)對(duì)象建立line 1,然后再獲得兩條直線的交點(diǎn),這次要用linel調(diào)用intersects(}方法。輸出的結(jié)果表明line 1不依賴于對(duì)象end,因此,移動(dòng)這個(gè)點(diǎn)不會(huì)對(duì)交點(diǎn)產(chǎn)生影響。

  如果你把Line類的構(gòu)造函數(shù)改成以前的版本,定義直線時(shí)不建立新的Point對(duì)象,你可以再次運(yùn)行這個(gè)例子來(lái)看看結(jié)果。結(jié)果輸出為:

  Ponts created are 0.0.1.0 and 5.0,6.0

  Lines created are(0.0.1.0):(5.0.6.0)and(0.0.3.0):(3.0.0.0)

  Intersection is1.0.2.0

  Intersection is2.0.1.0

  現(xiàn)在,改變end對(duì)象就變換了這條直線,所以在移動(dòng)end點(diǎn)之后,我們就得到了兩條直線的一個(gè)不同交點(diǎn)。這是因?yàn)長(zhǎng)ine型對(duì)象line 1中包括對(duì)定義在main()中的Point對(duì)象的引用,而不獨(dú)立于Point對(duì)象。

  相關(guān)推薦:

  2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程章節(jié)匯總

  2014計(jì)算機(jī)二級(jí)Java程序設(shè)計(jì)真題及答案(網(wǎng)友版)

  考試吧特別策劃:2015年計(jì)算機(jī)等級(jí)考試報(bào)考指南

文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
Copyright © 2004-2025 考試吧計(jì)算機(jī)等級(jí)考試網(wǎng) All Rights Reserved  
中國(guó)科學(xué)院研究生院權(quán)威支持(北京)
在線模擬試題
考證通關(guān)殺器
考試最新資訊
學(xué)
一次通關(guān)技巧