黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁 - 網校 - 萬題庫 - 直播 - 雄鷹網校 - 團購 - 書城 - ? - 學習通 - 導航 -
首頁網校萬題庫直播雄鷹網校團購書城?論壇實用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓
專升本
自學考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托?荚
托業考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認證
水平考試
Java認證
職稱計算機 微軟認證 思科認證 Oracle認證 Linux認證
公 務 員
導游考試
物 流 師
出版資格
單 證 員
報 關 員
外 銷 員
價格鑒證
網絡編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業培訓
社會工作者
銀行從業
教師資格
營養師
保險從業
普 通 話
證券從業
跟 單 員
秘書資格
電子商務
期貨考試
國際商務
心理咨詢
營 銷 師
司法考試
國際貨運代理人
人力資源管理師
廣告師職業水平
衛生資格 執業醫師 執業藥師 執業護士
會計從業資格
基金從業資格
統計從業資格
經濟師
精算師
統計師
會計職稱
法律顧問
ACCA考試
初級會計職稱
資產評估師
高級經濟師
注冊會計師
高級會計師
美國注冊會計師
審計師考試
國際內審師
注冊稅務師
理財規劃師
一級建造師
安全工程師
設備監理師
公路監理師
公路造價師
二級建造師
招標師考試
物業管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質量工程師
巖土工程師
注冊給排水
造價員考試
注冊計量師
環保工程師
化工工程師
暖通工程師
咨詢工程師
結構工程師
城市規劃師
材料員考試
消防工程師
監理工程師
房地產估價
土地估價師
安全評價師
房地產經紀人
投資項目管理師
環境影響評價師
土地登記代理人
寶寶起名
繽紛校園
實用文檔
入黨申請
英語學習
思想匯報
作文大全
工作總結
求職招聘 論文下載 直播課堂
您現在的位置: 考試吧 > 計算機等級考試 > 計算機二級考試 > JAVA > 復習資料 > 正文

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

來源:考試吧 2015-01-19 9:26:46 考試吧:中國教育培訓第一門戶 模擬考場
考試吧整理了“2015計算機等級考試二級Java入門教程”,望給備考2015年計算機等級考試的考生帶來幫助!

  點擊查看:2015計算機等級考試二級Java入門教程章節匯總

  點擊查看:2015計算機等級考試二級Java入門教程第五章匯總

  5.7 使用對象

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

  試試看--Point類

  我們首先為點對象定義一個很基本的類:

  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()

  }

  }

  應該將Point.java保存到目錄TryGeometry中。

  如何操作

  這是一個簡單的類,它僅有兩個實例變量x和Y,作為Point對象的坐標。在此,我們有兩個構造函數:一個是通過自變量傳遞一對數值來建立一個點;另一個是根據一個己存在的點來建立一個新的Point對象。

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

  

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

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

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

  注意,我們是如何使用定義在類Double中的靜態toStringf( )方法,將x的值轉換成String型的。編譯器將為"+"操作左面的操作數y自動地插入一個對相同方法的調用,來把它轉換成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

  通常你應該避免在兩個對象之間存在這種隱含地依賴關系。

  在Line類的toStrins方法中,我們可以在一個Line對象的String表示形式中直接地使用Point對象,這是因為Point類也定義了toString方法。

  我們現在已經定義了兩個類。在這些類定義中,包括了定義每個類對象的基本數據。我們還定義了一些被認為很有用的方法,并且增加了幾個有不同輸入參數的構造函數。注意,在Line類的定義中是如何應用Point類的。用兩個Point對象來定義一條線是非常自然的,這要比完全用單獨的x和Y坐標來定義Line類更加簡單、更易于理解。為了進一步說明類如何相互作用,如何直接地利用類來解決問題,讓我們設計一個方法,用它來計算兩個Line對象的相交點。

  由兩條直線建立一個點

  我們可以把這個方法增加到Line類中。下面的示意圖說明了數學運算的操作過程。

  

  如果你愿意的話,可以忽略這個數學運算的過程,因為它并不是本例中最主要的內容。如果你不希望對這個新的構造函數中的代碼進行深究的話,就可以側隨下面的"試試看".換句話說,如果你對高中所學過的知識還比較熟悉的話,就不會感覺太困難。

  獲得兩條直線交點的一種方法,是使用上圖額度那些方程式。他們之所以被稱作參數方程式,是因為他們使用了一個參數值(s和t)作為決定每條直線上點的變量。參數s和t早0到1之間變化,用他們給出位于定義的起點和終點之間的直線上點。當一個參數s或t為0時,方程式給出了每條直線起點的坐標;為1時,給出終點的坐標。

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

  試試看--計算兩條直線的交點

  我們可以利用這些結果為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類在與它相關的其他類無效時是不能被編譯的。在你編譯Line類時,編譯器也將編譯其他的類。

  如何操作

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

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

  注意我們是如何獲得定義直線的Point對象的坐標值的。當你想引用一個成員的成員時,只要重復使用點標記引用對象成員即可。例如,對于對象line1,表達式line1.start引用直線的開始端Point對象。因此,linel.start.x引用它的x坐標,而linel.start.y則存取它的y坐標。

  現在,我們有一個Line類,可以計算兩個Line對象的交點。我們需要一個程序來測試這段代碼。

  試試看--TryGeometry類

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

  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));

  }

 。

  程序產生的輸出為:

  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

  如何操作

  我們首先建立兩個Point對象,這兩個對象將在后面建立對象line 1的時候使用,然后使用Println()方法顯示這兩個點。我們在Point類中定義的touring()方法被自動地用來產生每個Point對象的String表示形式。

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

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

  我們使用類Point中的move()方法來修改。end對象的坐標,利用這個對象建立line 1,然后再獲得兩條直線的交點,這次要用linel調用intersects(}方法。輸出的結果表明line 1不依賴于對象end,因此,移動這個點不會對交點產生影響。

  如果你把Line類的構造函數改成以前的版本,定義直線時不建立新的Point對象,你可以再次運行這個例子來看看結果。結果輸出為:

  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

  現在,改變end對象就變換了這條直線,所以在移動end點之后,我們就得到了兩條直線的一個不同交點。這是因為Line型對象line 1中包括對定義在main()中的Point對象的引用,而不獨立于Point對象。

  相關推薦:

  2015計算機等級考試二級Java入門教程章節匯總

  2014計算機二級Java程序設計真題及答案(網友版)

  考試吧特別策劃:2015年計算機等級考試報考指南

文章搜索
版權聲明:如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。
Copyright © 2004- 考試吧計算機等級考試網 All Rights Reserved 
中國科學院研究生院權威支持(北京)
在線模擬試題
考證通關殺器
考試最新資訊
一次通關技巧
主站蜘蛛池模板: 色免费网站 | 亚洲精品永久www嫩草 | 人人射人人插 | 最近2019视频免费观看8 | 婷婷亚洲图片 | 日韩在线观看免费 | 国产亚洲视频网站 | 欧美国产在线看 | 国内性经典xxxxx | 五月婷婷影院 | 日韩激情视频在线观看 | 国产综合激情在线亚洲第一页 | 天堂在线中文字幕 | 三级在线观看 | 小明看片成人永久在线观看 | 欧美深夜福利网站在线观看 | 欧美日本黄色 | 911国内自产亚洲第一 | 天天躁日日躁成人字幕aⅴ 天天在线欧美精品免费看 天天影视涩香欲综合网 | 99re免费视频| 欧美性精品 | 久久99精品久久 | 黄网站色年片在线观看 | 日批在线视频 | 色干干 | 欧美日韩成人在线观看 | 午夜私人影院4480yy毛片 | 视频一区 国产 | 青春草国产 | 国产精品98视频全部国产 | 欧美国产精品不卡在线观看 | 亚洲图片在线播放 | 日本最新免费二区 | 宅男在线 午夜影院 | 亚洲国产高清一区二区三区 | 亚洲欧美日韩三级 | 天天摸天天碰成人免费视频 | 欧美成人精品手机在线观看 | 国产精品二区高清在线 | 亚洲欧洲日韩在线 | 欧美性猛交ⅹxxx乱大交禽 |