Benutzer-Werkzeuge

Webseiten-Werkzeuge


g9:uebungen:vererbung: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
g9:uebungen:vererbung:start [2022/06/30 07:51] – [Beispiel 3: Klasse "Raute"] Martin Pabstg9:uebungen:vererbung:start [2022/07/01 07:46] (aktuell) – [Beispiel 7: Fraktaler Baum] Martin Pabst
Zeile 1: Zeile 1:
 ====== Vererbung ====== ====== Vererbung ======
-====== Beispiel 1: Fliegende Rechtecke ======+====== Beispiel 1: Advanced Robot ====== 
 + 
 +<WRAP center round todo 80%> 
 +Die Klasse Robot hat alle Methoden, die Du von Robot Karol her kennst. Erweitere sie um weitere Methoden: 
 +  * Die Methode ''umdrehen()'' soll bewirken, dass der Roboter sich um 180° dreht. 
 +  * Die Methode ''gehe(int schrittzahl)'' soll bewirken, dass der Roboter mehrere Schritte geht. 
 +  * Die Methode ''legeBahn(int länge)'' soll bewirken, dass der Roboter eine Bahn von Ziegeln der angegebenen Länge legt. 
 +  * Die Methode ''legeQuadrat(int seitenlänge)'' soll bewirken, dass der Roboter ein nicht-ausgefülltes Quadrat der angegebenen Seitenlänge mit der Höhe 1 baut. 
 +  * Die Methode ''baueTreppe(int höhe)'' soll bewirken, dass der Roboter eine Treppe der angegebenen Höhe baut. 
 + 
 +Lass Dir noch weitere Methoden einfallen und schreibe ein Hauptprogramm, das die Methoden nutzt, um eine große Burg zu bauen! 
 +</WRAP> 
 + 
 + 
 +<HTML> 
 + 
 +<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Vererbung0'}"> 
 + 
 +<script type="text/plain" title="AdvancedRobot.java"> 
 +AdvancedRobot tom = new AdvancedRobot(1, 1, 10, 10); 
 +tom.legeQuadrat(4); 
 +tom.baueTreppe(3); 
 + 
 +class AdvancedRobot extends Robot { 
 +    
 +   void umdrehen() { 
 +      linksDrehen(); 
 +      linksDrehen(); 
 +   } 
 + 
 +   void gehe(int schrittzahl) { 
 +      for (int i = 0; i < schrittzahl; i++) { 
 +         schritt(); 
 +      } 
 +   } 
 + 
 +   void legeBahn(int länge) { 
 +      for (int i = 0; i < länge; i++) { 
 +         hinlegen(); 
 +         schritt(); 
 +      } 
 +   } 
 + 
 +   void legeQuadrat(int seitenlänge) { 
 +      for (int s = 0; s < 4; s++) { 
 +         legeBahn(seitenlänge); 
 +         linksDrehen();  
 +      } 
 +   } 
 + 
 +   void baueTreppe(int höhe) { 
 +      for (int i = 0; i < höhe; i++) { 
 +         legeBahn(höhe - i); 
 +         umdrehen(); 
 +         gehe(höhe - i - 1); 
 +         umdrehen(); 
 +      } 
 +   } 
 +
 +</script> 
 +</HTML> 
 + 
 +====== Beispiel 2: Fliegende Rechtecke ======
 Starte das Programm und regle die Geschwindigkeit langsam hoch! Starte das Programm und regle die Geschwindigkeit langsam hoch!
 <HTML> <HTML>
Zeile 128: Zeile 190:
 [[:klassen2:inheritance:starfieldloesung:start|Lösung zur Aufgabe "Starfield"]] [[:klassen2:inheritance:starfieldloesung:start|Lösung zur Aufgabe "Starfield"]]
  
-====== Beispiel 2: Klasse "Raute" ======+====== Beispiel 3: Klasse "Raute" ======
 Die Programmiersprache stellt bisher nur Objekte zum Zeichnen von Rechtecken, Kreisen, Polygonen und Sprites zur Verfügung. Ich zeige Dir, wie man durch Erweiterung der Klasse Polygon leicht weitere Objektklassen erstellen kann. Im Folgenden entwickeln wir eine Klasse "Raute". Die Programmiersprache stellt bisher nur Objekte zum Zeichnen von Rechtecken, Kreisen, Polygonen und Sprites zur Verfügung. Ich zeige Dir, wie man durch Erweiterung der Klasse Polygon leicht weitere Objektklassen erstellen kann. Im Folgenden entwickeln wir eine Klasse "Raute".
  
Zeile 280: Zeile 342:
 </HTML> </HTML>
  
-===== Feuerwerk =====+===== Beispiel 5: Feuerwerk =====
 Das Beispiel "Feuerwerk" [[:api:documentation:grafik:animation#beispiel_4feuerwerk|findest Du hier]]. Das Beispiel "Feuerwerk" [[:api:documentation:grafik:animation#beispiel_4feuerwerk|findest Du hier]].
  
 +
 +====== Beispiel 6: Kochkurve ======
 +<HTML>
 +
 +<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Kochkurve'}">
 +
 +<script type="text/plain" title="Kochkurve.java">
 +new World(1000, 1000);
 +Kochkurve k = new Kochkurve(7);
 +
 +class Kochkurve extends Turtle {
 +   
 +   public Kochkurve(int tiefe) {
 +      super(50, 700);
 +      setBorderWidth(3); 
 +      int länge = 700;
 +      turn(60);
 +      zieheLinie(länge, tiefe);
 +      turn(-120);
 +      zieheLinie(länge, tiefe);
 +      turn(-120);
 +      zieheLinie(länge, tiefe);
 +   }
 +   
 +   public void zieheLinie(double länge, int tiefe) {
 +      if(tiefe == 0) {
 +         forward(länge);
 +         return;
 +      }
 +
 +      zieheLinie(länge / 3, tiefe - 1);
 +      turn(60);
 +      zieheLinie(länge / 3, tiefe - 1);
 +      turn(-120);
 +      zieheLinie(länge / 3, tiefe - 1);
 +      turn(60);
 +      zieheLinie(länge / 3, tiefe - 1);
 +
 +   }
 +
 +}
 +</script>
 +
 +</div>
 +
 +</HTML>
 +
 +
 +====== Beispiel 7: Fraktaler Baum ======
 +<HTML>
 +
 +<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Baum'}">
 +
 +<script type="text/plain" title="Baum.java">
 +new FraktalerBaum(400, 600, 0.7, 9, 35);
 +
 +class FraktalerBaum extends Turtle {
 +   
 +   double faktor;
 +   double winkel;
 +   
 +   FraktalerBaum(double x, double y, double faktor, int tiefe, double winkel) {
 +      super(x, y);
 +      this.faktor = faktor;
 +      this.winkel = winkel;
 +      setBorderWidth(2);
 +      turn(90);
 +      zeichneAst(tiefe, 180);
 +   }
 +
 +   void zeichneAst(int n, double länge) {
 +      if(n == 0) return;
 +
 +      forward(länge);
 +      turn(winkel);
 +      zeichneAst(n - 1, länge * faktor);
 +      turn(-2*winkel);
 +      zeichneAst(n - 1, länge * faktor);
 +      turn(winkel);
 +      turn(180);
 +      penUp();
 +      forward(länge);
 +      turn(180);
 +      penDown();
 +   }
 +
 +}
 +
 +</script>
 +
 +</div>
 +
 +</HTML>
g9/uebungen/vererbung/start.1656568285.txt.gz · Zuletzt geändert: 2022/06/30 07:51 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki