2012-05-05 51 views
0

我想了解一個Webots(機器人模擬程序)中的示例代碼。一個對象被創建並分配出新的或聲明

我都面臨着這樣的代碼:

Servo rightShoulderPitch = getServo("RShoulderPitch"); 
rightShoulderPitch.setPosition(1.5); 

我不明白什麼是第一線的肉。它看起來像「rightShoulderPitch」是伺服類的對象,但它不是像往常一樣創建,並且'getServo'(我認爲它是一種方法)如何來到這裏。

這個類的標題是,如果它可以幫助:

public class FieldPlayer extends Robot { 

而且它由該公司在參考手冊中有說明,但我不明白他們的意思。它可以是found here搜索getservo

--- RShoulderPitch:是機器人的肩部名

我會appriceite很大幫助。

感謝

+1

我強烈建議您購買/借用一本關於Java編程的好書並閱讀它。嘗試通過閱讀示例代碼並猜測它的含義來學習新的編程語言是一個糟糕的想法。 –

回答

3

爲了補充Jon的優秀答案,我會嘗試用更一般的術語來解釋你。

當你想要一個三明治,你有兩個解決方案:

  • 自己準備的三明治。這將相當於代碼Sandwich s = new Sandwich()
  • 去一家小吃店,問他們一個三明治。這將相當於代碼Sandwich s = snackBar.getSandwich("Ham & Cheese")

在後一種情況下,它的小吃吧對象的getSandwich()方法將使用你想要的三明治(「火腿&奶酪」)的名義準備三明治,返回給你。因此該方法可能會在內部調用新的Sandwich()。但它也可以委託給另一個對象和調用,例如:cook.prepareSandwich("Ham & Cheese")。在這種情況下,這是廚師的對象,將調用new Sandwich()。或者,snackBar對象也可以獲得預先準備好的三明治並存儲在某個緩存中:fridge.getSandwich("Ham & Cheese")

+0

廚房編程類比是我最喜歡的技巧之一。 –

6

這條線:

Servo rightShoulderPitch = getServo("RShoulderPitch"); 

...調用getServo方法,傳入字符串值 「RShoulderPitch」。返回值用作rightShoulderPitch變量的初始值,該變量的類型爲Servo。 (注意:rightShoulderPitch不是一個對象 - 這是一個變量,它有一個價值,它要麼是空或對象的引用。)

我們不能告訴getServo返回類型是什麼,但它必須是可以隱式轉換爲Servo的東西 - 所以要麼Servo本身,要麼是某個子類。

getServo可能:

  • 創建一個新的對象,並參考返回對它的引用
  • 返回到現有的對象(例如從高速緩存)
  • 返回null
  • 拋出一個例外

如果這些都沒有幫助,請詳細說明你不明白。這聽起來像你可能對Java不熟悉 - 在這種情況下,如果沒有Webots API學習「只是Java」可能是一個好方法;只有在對語言本身有信心時才能學習Webots。

相關問題