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

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{NNavigation}}
{{NNameAnzeigen}}{{NNavigation}}


Im Zentrum unseres Sonnensystem steht die Sonne. Wir wollen die Sonne in der Mitte des Fensters entfachen. Dazu erstellen wie eine Klasse <code>Sun</code>, die die Sonne zeichnet.
Im Sonnensystem gibt es eine Menge von astronomischen Körpern, die sich in komplexen Umlaufbahnen bewegen und gegenseitig beeinflussen.


Jede KLasse wird in einer neuen Datei erstellt. Öffne dazu auf dem kleinen Pfeil oben einen neuen Tab und nenne ihn "Sun".
[[Datei:Sonnensystem-Grafik.pdf|thumb|center]]


[[Datei:20210322220256 Processing.gif|center|frame|Einen neuen Tab erstellen.]]
Für den Anfang beschränken wir uns auf eine stark vereinfachte Version des Sonnensystems.  


{{Rahmen|
Ein Sonnensystem besteht aus einer Sonne im Zentrum und einer Reihe von Planeten, die um die Sonne kreisen. Jeder Planet hat eine Position mit x- und y-Koordinate, einen festen Abstand zur Sonne und einen Winkel, der beschreibt, wie weit der Planet auf seiner Umlaufbahn gekommen ist. (In diesem Modell sind alle Umlaufbahnen Kreise.) Außerdem besitzt jeder Planet eine Geschwindigkeit, in der er um die Sonne kreist.


Unsere Sonne hat erstmal keine "sonnigen" Eigenschaften. Sie befindet sich einfach in der Mitte des Bildschirms und ist gelb. Kopiere folgenden Code in den "Sun"-Tab:
Ein Planet kann auch Monde haben, die auch eine Position, einen Abstand (zum Planeten) und eine Geschwindigkeit besitzen.}}
<syntaxhighlight lang="Java">
class Sun {


  public float getX() {
Durch eine objektorientierte Analyse können wir das folgende Modell aus dieser Beschreibung ableiten.
    return 0.0;
  }


  public float getY() {
[[Bild:UML_Sonnensystem.png|center|Objektorientierte Modellierung zum Sonnensystem.]]
    return 0.0;
  }
 
  public void draw() {
    noStroke();
    fill(240,200,0);
    ellipse(0,0,50,50);
  }


}
Die gezeigten Klassen sollst du nun implementieren.
</syntaxhighlight>
 
{{Aufgabe:Start}}
# Analysiere den Code der Klasse <code>Sun</code> und versuche zu erklären, was die <code>draw</code>-Methode macht. Welche Bedeutung haben die Befehle und welchen Effekt erzeugen sie wohl in {{Processing}}?
# Schaue die Befehle in der offiziellen {{Processing}} Referenz nach: https://processing.org/reference/
{{Aufgabe:End}}
 
== Es werde Licht! ==
 
Noch wird keine Sonne im Programmfenster angezeigt. Wir müssen erst ein Objekt der Klasse <code>Sun</code> erzeugen und in der <code>draw</code>-Methode des Hauptprogramms zeichnen lassen.
 
Wechsele wieder in den ersten Tab und ändere den Code so ab:
<syntaxhighlight lang="Java">
Sun sun = new Sun();
 
void setup() {
  size(800, 600);
}
 
void draw() {
  background(0);
 
  sun.draw();
}
</syntaxhighlight>
 
{{Aufgabe:Start}}
# '''Bevor Du das Programm startest''' beantworte folgende Frage: Wo wird die Sonne gleich "aufgehen"? Wenn Du eine Vermutung hast, starte das Programm.
# Hast Du richtig gelegen? Wenn nicht [https://michaelkipp.de/processing/01%20zeichnen.html#sec_1_1 findest Du hier eine Erklärung].
# Wir möchten den Koordinatenursprung (den Punkt <math>(0|0)</math>) gerne in der Mitte des Fensters haben, wenn wir dei Sonne zeichnen. Schau erneut in der [https://processing.org/reference/ offiziellen Referenz] nach, ob Du einen entsprechenden Befehl findest. (Tipp: Schau in der Kategorie "Transform" nach.)
{{Aufgabe:End}}
{{Lösung:Start}}
Der passende Befehl lautet [https://processing.org/reference/translate_.html translate()] und verschiebt das Koordinatensystem des Fensters an eine neue Position. Führe sie direkt zu Beginn der <code>draw</code>-Methode aus:
<syntaxhighlight lang="Java">
Sun sun = new Sun();
 
void setup() {
  size(800, 600);
}
 
void draw() {
  translate(width/2, height/2);
  background(0);
 
  sun.draw();
}
</syntaxhighlight>
 
[[Datei:TheSun_Processing.png|center|600px]]
{{Lösung:End}}

Aktuelle Version vom 3. März 2022, 18:35 Uhr

Im Sonnensystem gibt es eine Menge von astronomischen Körpern, die sich in komplexen Umlaufbahnen bewegen und gegenseitig beeinflussen.

Sonnensystem-Grafik.pdf

Für den Anfang beschränken wir uns auf eine stark vereinfachte Version des Sonnensystems.

Ein Sonnensystem besteht aus einer Sonne im Zentrum und einer Reihe von Planeten, die um die Sonne kreisen. Jeder Planet hat eine Position mit x- und y-Koordinate, einen festen Abstand zur Sonne und einen Winkel, der beschreibt, wie weit der Planet auf seiner Umlaufbahn gekommen ist. (In diesem Modell sind alle Umlaufbahnen Kreise.) Außerdem besitzt jeder Planet eine Geschwindigkeit, in der er um die Sonne kreist.

Ein Planet kann auch Monde haben, die auch eine Position, einen Abstand (zum Planeten) und eine Geschwindigkeit besitzen.

Durch eine objektorientierte Analyse können wir das folgende Modell aus dieser Beschreibung ableiten.

Die gezeigten Klassen sollst du nun implementieren.