Lernpfad:Objektorientierte Programmierung mit Processing/4: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „{{NNavigation}} Die Sonne scheint. Nun wird es Zeit die Erde zu "erschaffen". Wir erstellen eine neue Klasse <code>Planet</code>, mit der wir später auch we…“)
 
Keine Bearbeitungszusammenfassung
Zeile 10: Zeile 10:
# Erstelle einen ''Konstruktor'' für die Klasse, der als Parameter den Namen, die Sonne, die Entfernung und die Geschwindigkeit übergeben bekommt. Die Eigenschaften <code>angle</code>, <code>x</code> und <code>y</code> werden zunächst auf <code>0.0</code> gesetzt.
# Erstelle einen ''Konstruktor'' für die Klasse, der als Parameter den Namen, die Sonne, die Entfernung und die Geschwindigkeit übergeben bekommt. Die Eigenschaften <code>angle</code>, <code>x</code> und <code>y</code> werden zunächst auf <code>0.0</code> gesetzt.
{{Aufgabe:End}}
{{Aufgabe:End}}
 
{{Lösung:Start|Lösung zu 2}}
{{Lösung:Start|Lösung 1}}
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
class Planet {
class Planet {
Zeile 32: Zeile 31:
</syntaxhighlight>
</syntaxhighlight>
{{Lösung:End}}
{{Lösung:End}}
{{Lösung:Start|Lösung 2}}
{{Lösung:Start|Lösung zu 3}}
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
class Planet {
class Planet {
Zeile 62: Zeile 61:


}
}
</syntaxhighlight>
{{Lösung:End}}
Die Position des Planeten wird relativ zur Sonne bestimmt. (Unsere Sonne ist bei <math>(0|0)</math>, aber ggf. gibt es andere Sonnen, die andere Koordinaten haben.) Die berechnete Position aus Entfernung und Rotationswinkel muss daher um die Position der Sonne verschoben werden (auf die Du z.B. mit <code>sun.getX()</code> zugreifen kannst).
{{Aufgabe:Start}}
# Implementiere ''Getter'' für <code>x</code> und <code>y</code>, die die absolute Position des Planeten berechnen und zurückgeben.
# Implementiere nun (analog zu <code>Sun</code>) eine <code>draw</code>-Methode, die unseren (blauen) Planeten an seine absoluten Koordinaten zeichnet.
{{Aufgabe:End}}
{{Lösung:Start|Lösung zu 1}}
<syntaxhighlight lang="Java">
  public float getX() {
    return sun.getX()+x;
  }
  public float getY() {
    return sun.getY()+y;
  }
</syntaxhighlight>
{{Lösung:End}}
{{Lösung:Start|Lösung zu 2}}
<syntaxhighlight lang="Java">
  public void draw() {
    noStroke();
    fill(0,0,255);
    ellipse(getX(),getY(),20,20);
  }
</syntaxhighlight>
</syntaxhighlight>
{{Lösung:End}}
{{Lösung:End}}

Version vom 22. März 2021, 23:40 Uhr

Die Sonne scheint. Nun wird es Zeit die Erde zu "erschaffen".

Wir erstellen eine neue Klasse Planet, mit der wir später auch weitere Planeten anlegen können. Welche Eigenschaften braucht ein Planet? Seine Position ist abhängig von dem Stern (der Sonne), um die er kreist. Daher legen wir eine Entfernung und eine Geschwindigkeit für den Planeten fest, mit der er um die Sonne kreist. Außerdem kennt er das Sun-Objekt, dass in seinem Rotationszentrum liegt.

Icon Heft.png
Arbeitsauftrag
  1. Erstelle einen neuen Tab / eine neue Klasse "Planet".
  2. Erstelle im neuen Tab eine Klasse Planet mit den Eigenschaften String name, float distance, float angle, float speed, float x und float y.
  3. Erstelle einen Konstruktor für die Klasse, der als Parameter den Namen, die Sonne, die Entfernung und die Geschwindigkeit übergeben bekommt. Die Eigenschaften angle, x und y werden zunächst auf 0.0 gesetzt.
Lösung zu 2
class Planet {

  private String name;

  private float x;
  
  private float y;
  
  private float distance;
  
  private float angle;

  private float speed;

  private Sun sun;

}
Lösung zu 3
class Planet {

  private String name;

  private float x;
  
  private float y;
  
  private float distance;
  
  private float angle;

  private float speed;

  private Sun sun;

  public Planet( String pName, Sun pSun, float pDist, float pSpeed ) {
    name = pName;
    sun = pSun;
    distance = pDist;
    
    speed = pSpeed;
    angle = 0.0;
    x = 0.0;
    y = 0.0;
  }

}


Die Position des Planeten wird relativ zur Sonne bestimmt. (Unsere Sonne ist bei [math]\displaystyle{ (0|0) }[/math], aber ggf. gibt es andere Sonnen, die andere Koordinaten haben.) Die berechnete Position aus Entfernung und Rotationswinkel muss daher um die Position der Sonne verschoben werden (auf die Du z.B. mit sun.getX() zugreifen kannst).

Icon Heft.png
Arbeitsauftrag
  1. Implementiere Getter für x und y, die die absolute Position des Planeten berechnen und zurückgeben.
  2. Implementiere nun (analog zu Sun) eine draw-Methode, die unseren (blauen) Planeten an seine absoluten Koordinaten zeichnet.
Lösung zu 1
  public float getX() {
    return sun.getX()+x;
  }

  public float getY() {
    return sun.getY()+y;
  }
Lösung zu 2
  public void draw() {
    noStroke();
    fill(0,0,255);
    ellipse(getX(),getY(),20,20);
  }