首頁 - 網(wǎng)校 - 萬題庫 - 直播 - 雄鷹網(wǎng)校 - 團(tuán)購 - 書城 - 模考 - 學(xué)習(xí)通 - 導(dǎo)航 -
首頁網(wǎng)校萬題庫直播雄鷹網(wǎng)校團(tuán)購書城模考論壇實(shí)用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓(xùn)
專升本
自學(xué)考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點(diǎn)日語
職稱英語
口譯筆譯
申碩英語
零起點(diǎn)韓語
商務(wù)英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點(diǎn)英語
托�?荚�
托業(yè)考試
零起點(diǎn)法語
雅思考試
成人英語三級
零起點(diǎn)德語
等級考試
華為認(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)師
保險(xiǎn)從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國際商務(wù)
心理咨詢
營 銷 師
司法考試
國際貨運(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考試
初級會(huì)計(jì)職稱
資產(chǎn)評估師
高級經(jīng)濟(jì)師
注冊會(huì)計(jì)師
高級會(huì)計(jì)師
美國注冊會(huì)計(jì)師
審計(jì)師考試
國際內(nèi)審師
注冊稅務(wù)師
理財(cái)規(guī)劃師
一級建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價(jià)師
二級建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價(jià)工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
注冊給排水
造價(jià)員考試
注冊計(jì)量師
環(huán)保工程師
化工工程師
暖通工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
消防工程師
監(jiān)理工程師
房地產(chǎn)估價(jià)
土地估價(jià)師
安全評價(jià)師
房地產(chǎn)經(jīng)紀(jì)人
投資項(xiàng)目管理師
環(huán)境影響評價(jià)師
土地登記代理人
寶寶起名
繽紛校園
實(shí)用文檔
入黨申請
英語學(xué)習(xí)
思想?yún)R報(bào)
作文大全
工作總結(jié)
求職招聘 論文下載 直播課堂

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

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

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

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

  5.7 使用對象

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

  試試看--Point類

  我們首先為點(diǎn)對象定義一個(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è)簡單的類,它僅有兩個(gè)實(shí)例變量x和Y,作為Point對象的坐標(biāo)。在此,我們有兩個(gè)構(gòu)造函數(shù):一個(gè)是通過自變量傳遞一對數(shù)值來建立一個(gè)點(diǎn);另一個(gè)是根據(jù)一個(gè)己存在的點(diǎn)來建立一個(gè)新的Point對象。

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

  

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

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

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

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

  試試看--Line類

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

  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è)對象之間存在這種隱含地依賴關(guān)系。

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

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

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

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

  

  如果你愿意的話,可以忽略這個(gè)數(shù)學(xué)運(yùn)算的過程,因?yàn)樗⒉皇潜纠凶钪饕膬?nèi)容。如果你不希望對這個(gè)新的構(gòu)造函數(shù)中的代碼進(jìn)行深究的話,就可以側(cè)隨下面的"試試看".換句話說,如果你對高中所學(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é)果為Line類編寫其他的方法。把下列代碼添加到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)的其他類無效時(shí)是不能被編譯的。在你編譯Line類時(shí),編譯器也將編譯其他的類。

  如何操作

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

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

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

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

  試試看--TryGeometry類

  我們可以在main( )方法中用下列語句演示一下已經(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對象,這兩個(gè)對象將在后面建立對象line 1的時(shí)候使用,然后使用Println()方法顯示這兩個(gè)點(diǎn)。我們在Point類中定義的touring()方法被自動(dòng)地用來產(chǎn)生每個(gè)Point對象的String表示形式。

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

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

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

  如果你把Line類的構(gòu)造函數(shù)改成以前的版本,定義直線時(shí)不建立新的Point對象,你可以再次運(yùn)行這個(gè)例子來看看結(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對象就變換了這條直線,所以在移動(dòng)end點(diǎn)之后,我們就得到了兩條直線的一個(gè)不同交點(diǎn)。這是因?yàn)長ine型對象line 1中包括對定義在main()中的Point對象的引用,而不獨(dú)立于Point對象。

  相關(guān)推薦:

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

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

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

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