Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen2:inheritance:flyingrectangle:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
klassen2:inheritance:flyingrectangle:start [2020/05/02 22:05] – [1. Grafikausgabe] Martin Pabstklassen2:inheritance:flyingrectangle:start [2020/05/03 10:36] – [3. Animation] Martin Pabst
Zeile 45: Zeile 45:
  
 == a) Erzeugen des Grafikbereiches ("Welt") == == a) Erzeugen des Grafikbereiches ("Welt") ==
-<code java>+<code learnj>
 new World(800, 600); new World(800, 600);
 </code> </code>
Zeile 51: Zeile 51:
 == b) Zeichnen eines Rechtecks == == b) Zeichnen eines Rechtecks ==
 Die Anweisung Die Anweisung
-<code java>+<code learnj>
 new Rectangle(100, 50, 600, 400); new Rectangle(100, 50, 600, 400);
 </code> </code>
-erzeugt ein Rechteck-Objekt und zeichnet es in den Grafikbereich. Das Rechteck ist initial achsenparallel, wobei die Parameter des Konstruktors folgende Bedeutung haben: +erzeugt ein Rechteck-Objekt und zeichnet es in den Grafikbereich. Das Rechteck ist initial achsenparallel ausgerichtet, wobei die Parameter des Konstruktors ''new Rectangle(left, top, width, height)'' folgende Bedeutung haben: 
-  * +  * (left, top): Koordinaten der linken oberen Ecke 
 +  * width, heigth: Breite und Höhe des Rechtecks 
 +== Beispiel == 
 +Im folgenden zeichnen wir ein Rechteck auf den Bildschirm, färben es rot und drehen es um 70° gegen den Uhrzeigersinn: 
 +<HTML> 
 + 
 +<div class="java-online" style="height: 200px; width: 100%" data-java-online="{'withBottomPanel': false}"> 
 + 
 +<script type="text/plain" title="RechteckBeispiel.java"> 
 +new World(800, 800); 
 +Rectangle r = new Rectangle(50, 100, 600, 200); 
 +r.setFillColor(Color.red); 
 +r.rotate(70); 
 +</script> 
 + 
 +</div> 
 + 
 +</HTML> 
 + 
 +==== 2. Erweitern der Klasse Rectangle ==== 
 +Wir definieren jetzt eine Unterklasse ''FlyingRectangle'' der Klasse ''Rectangle'' und setzen seine Größe und Position im Konstruktor. Zudem geben wir ihm eine zufällige Farbe: 
 +<HTML> 
 + 
 +<div class="java-online" style="height: 300px; width: 100%" data-java-online="{'withBottomPanel': false}"> 
 + 
 +<script type="text/plain" title="FlyingRectangle.java"> 
 +new World(800, 800); 
 +new FlyingRectangle(); 
 + 
 +class FlyingRectangle extends Rectangle { 
 + 
 +   public FlyingRectangle() { 
 +      // Rufe den Konstruktor der Oberklasse auf und setze Position und Größe: left: 360, top: 720, width: 80, height: 80  
 +      super(360, 720, 80, 80); 
 +       
 +      // setze eine zufällige Farbe und Durchsichtigkeit 
 +      setFillColor(Math.round(Math.random() *(256 *256 * 256 - 1)), Math.random()*0.8+0.2); 
 +   } 
 + 
 +}</script> 
 + 
 +</div> 
 + 
 +</HTML> 
 + 
 + 
 +==== 3. Animation ==== 
 +In der Grafikbibliothek von LearnJ besitzt jedes graphische Objekt eine Methode ''act()'', die vom System 30-mal pro Sekunde aufgerufen wird. Die Idee dazu kommt aus {{https://www.greenfoot.org/files/javadoc/index-all.html|Greenfoot}}. Wenn wir diese Methode in der Klasse ''FlyingRectangle'' implementieren, überschreiben wir damit die gleichnamige Methode der Oberklasse ''Rectangle'', so dass ab jetzt **unsere** Methode 30-mal pro Sekunde aufgerufen wird. Wir können unser Rechteck so beispielsweise ganz einfach drehen lassen:  
 + 
 +<HTML> 
 + 
 +<div class="java-online" style="height: 350px; width: 100%" data-java-online="{'withBottomPanel': false}"> 
 + 
 +<script type="text/plain" title="FlyingRectangle.java"> 
 +new World(800, 800); 
 +new FlyingRectangle(); 
 + 
 +class FlyingRectangle extends Rectangle { 
 + 
 +   public FlyingRectangle() { 
 +      // Rufe den Konstruktor der Oberklasse auf und setze Position und Größe: left: 360, top: 720, width: 80, height: 80  
 +      super(360, 720, 80, 80); 
 +       
 +      // setze eine zufällige Farbe und Durchsichtigkeit 
 +      setFillColor(Math.round(Math.random() *(256 *256 * 256 - 1)), Math.random()*0.8+0.2); 
 +   } 
 + 
 +   public void act(){ 
 +      rotate(4); 
 +   } 
 + 
 +}</script> 
 + 
 +</div> 
 + 
 +</HTML> 
klassen2/inheritance/flyingrectangle/start.txt · Zuletzt geändert: 2021/12/29 11:29 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki