2012-05-05 1 views
0

J'essaie de comprendre un exemple de code dans Webots (programme de simulation de robot).un objet est créé et affecté avec un nouveau ou une déclaration

J'ai fait face à ce code:

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

Je ne comprends pas ce qui est de la viande par la première ligne. On dirait que "rightShoulderPitch" est un objet de la classe Servo mais il n'est pas créé comme d'habitude et comment "getServo" (je pense que c'est une méthode) vient ici.

tête de cette classe est, si elle aide:

public class FieldPlayer extends Robot { 

En outre, il a la description par la société dans le manuel de référence, mais je ne pouvais pas comprendre ce qu'ils veulent dire. Cela peut être found here rechercher getservo.

--- RShoulderPitch: est le nom de l'épaule du robot

J'appriceite aider beaucoup.

Merci

+1

Je vous conseille vivement d'acheter/emprunter un bon livre sur la programmation Java et de le lire. C'est une mauvaise idée d'essayer d'apprendre un nouveau langage de programmation en lisant un exemple de code et en devinant ce que cela signifie. –

Répondre

3

Pour compléter l'excellente réponse de Jon, je vais essayer de vous expliquer en termes beaucoup plus généraux.

Lorsque vous voulez un sandwich, vous avez deux solutions:

  • préparer le sandwich à vous.Ce serait l'équivalent du code Sandwich s = new Sandwich()
  • aller à un casse-croûte et leur demander un sandwich. Ce serait l'équivalent du code Sandwich s = snackBar.getSandwich("Ham & Cheese").

Dans ce dernier cas, il est la méthode de l'objet qui getSandwich() snackbar utiliser le nom du sandwich que vous voulez (« jambon & fromage ») pour préparer un sandwich et le retourner pour vous. Cette méthode va donc probablement, en interne, appeler nouveau Sandwich(). Mais il pourrait aussi déléguer à un autre objet et appeler, par exemple: cook.prepareSandwich("Ham & Cheese"). Et dans ce cas, c'est l'objet cook qui appellera new Sandwich(). Ou encore, l'objet snackBar peut également contenir un sandwich préparé à l'avance et stocké dans un cache: fridge.getSandwich("Ham & Cheese").

+0

Programmation analogies de la cuisine est l'un de mes trucs préférés ont un +. –

6

Cette ligne:

Servo rightShoulderPitch = getServo("RShoulderPitch"); 

... appelle la méthode getServo, en passant de la valeur de chaîne "RShoulderPitch". La valeur de retour est utilisée comme valeur initiale de la variable rightShoulderPitch, qui est de type Servo. (Notez que rightShoulderPitchn'est pas un objet -. Il est une variable Il a une valeur, qui soit nul ou une référence à un objet.)

Nous ne pouvons pas dire quel est le type de retour getServo est , mais il doit être quelque chose qui est implicitement convertible en Servo - donc soit Servo lui-même, ou une sous-classe.

getServo pourrait:

  • Créer un nouvel objet, et renvoyer une référence à ce
  • renvoie une référence à un objet existant (par exemple à partir d'un cache)
  • Retour null
  • Jetez un exception

Si rien de tout cela aide, veuillez clarifier exactement ce que vous ne comprenez pas. Il semble que vous soyez nouveau sur Java - dans ce cas, apprendre "juste Java" sans l'API Webots serait probablement une bonne approche; apprenez seulement Webots quand vous êtes confiant dans la langue elle-même.

Questions connexes