Benutzer-Werkzeuge

Webseiten-Werkzeuge


wiederholung:vererbung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
wiederholung:vererbung [2022/12/10 18:57] – [Beispiel 2: Fliegende Rechtecke] Martin Pabstwiederholung:vererbung [2022/12/10 19:01] (aktuell) – [Beispiel 4: Feuerwerk] Martin Pabst
Zeile 202: Zeile 202:
   * ''FilledShape'' ist Unterklasse von ''Shape''   * ''FilledShape'' ist Unterklasse von ''Shape''
   * ''Shape'' ist Unterklasse von ''Actor''   * ''Shape'' ist Unterklasse von ''Actor''
 +
 +<HTML>
 +<div style="clear: both"></div>
 +</HTML>
  
  
Zeile 208: Zeile 212:
  
 ==== Skizze: ==== ==== Skizze: ====
-{{ :klassen2:inheritance:pasted:20201213-214225.png?500 }}+{{ :wiederholung:pasted:20221210-195858.png?500 }}
 <HTML> <HTML>
  
Zeile 245: Zeile 249:
  
 ==== Mathematische Grundlagen ==== ==== Mathematische Grundlagen ====
-{{ :klassen2:inheritance:stern-erklaerung.png?600}}+{{ :wiederholung:pasted:20221210-195939.png?600}}
  
 Wir wollen einen Stern mit $n$ Außenzacken zeichnen. Dazu brauchen wir die Koordinaten $(mitte_{x}, mitte_{y})$ seines Mittelpunkts, den Außenradius $r_{außen}$ (d.h. den Abstand der äußeren Zacken vom Mittelpunkt) und den Innenradius $r_{innen}$ (d.h. den Abstand der inneren Zacken des Sterns vom Mittelpunkt). \\ Wir wollen einen Stern mit $n$ Außenzacken zeichnen. Dazu brauchen wir die Koordinaten $(mitte_{x}, mitte_{y})$ seines Mittelpunkts, den Außenradius $r_{außen}$ (d.h. den Abstand der äußeren Zacken vom Mittelpunkt) und den Innenradius $r_{innen}$ (d.h. den Abstand der inneren Zacken des Sterns vom Mittelpunkt). \\
Zeile 296: Zeile 300:
  
 === UML-Diagramm zu "Stern" === === UML-Diagramm zu "Stern" ===
-{{ :klassen2:inheritance:pasted:20200517-215226.png}}+{{ :wiederholung:pasted:20221210-200031.png}}
 Auf dem nebenstehenden Diagramm habe ich die (sehr zahlreichen!) Attribute und Methoden der Klassen ''Polygon'', ''FilledShape'', ''Shape'' und ''Actor'' ausgeblendet, damit es übersichtlich bleibt. Die Vererbungshierarchie ist schön zu sehen:  Auf dem nebenstehenden Diagramm habe ich die (sehr zahlreichen!) Attribute und Methoden der Klassen ''Polygon'', ''FilledShape'', ''Shape'' und ''Actor'' ausgeblendet, damit es übersichtlich bleibt. Die Vererbungshierarchie ist schön zu sehen: 
   * ''Stern'' ist Unterklasse von ''Polygon''   * ''Stern'' ist Unterklasse von ''Polygon''
Zeile 356: Zeile 360:
 </HTML> </HTML>
  
-===== Feuerwerk ===== +====== Beispiel 5: Feuerwerk ====== 
-Das Beispiel "Feuerwerk" [[https://www.learnj.de/doku.php?id=api:documentation:grafik:animation#beispiel_4feuerwerk|findest Du hier]].+Dieses Beispiel habe ich als Wiederholungsübung für meine zehnten Klassen im Schuljahr 2020/21 geschriebenDamals war wegen er Corona-Epidemie das Sylvesterfeuerwerk ausgefallen. 
 +{{ youtube>4OY-p4M4hpY?large }} 
 +<HTML> 
 +<div class="java-online" style="height600px; width100%" data-java-online="{'withBottomPanel'false, 'id': 'Feuerwerk', 'speed': 'max'}"> 
 +<script type="text/plain" title="Feuerwerk.java"> 
 +new Feuerwerk();
  
 +class Feuerwerk extends Actor {
 +   
 +   public void act() {
 +      if(Math.random() < 0.03) {
 +         
 +         int funkenzahl = Math.floor(Math.random() * 50 + 30);
 +         int farbe = Color.randomColor(128);
 +
 +         double x = Math.random() * 400 + 200;
 +         double y = Math.random() * 600;
 +         double lebensdauer = 60 + Math.random() * 60;
 +         for(int i = 0; i < funkenzahl; i++) {
 +            new Funke(x, y, farbe, lebensdauer);
 +         }
 +         Sound.playSound(Sound.cannon_boom);
 +
 +      }
 +   }
 +
 +}
 +
 +class Funke extends Circle {
 +   double vx;
 +   double vy;
 +   double lebensdauer;           // lebensdauer in 1/30 s
 +
 +   Funke(double x, double y, int farbe, double lebensdauer) {
 +      super(x, y, 4);
 +      double winkel = Math.random() * 2 * Math.PI;
 +      double v = Math.random() * 15 + 5;
 +      vx = v * Math.cos(winkel);
 +      vy = v * Math.sin(winkel);
 +      setFillColor(farbe);
 +      this.lebensdauer = lebensdauer;
 +   }
 +
 +   public void act() {
 +      lebensdauer--;
 +      move(vx, vy);
 +      vy = vy + 0.2;
 +      if(lebensdauer < 30) {
 +         setAlpha(lebensdauer / 30);
 +      }
 +      if(isOutsideView() || lebensdauer < 0) {
 +         destroy();
 +      }
 +   }
 +
 +}
 +</script>
 +</div>
 +</HTML>
wiederholung/vererbung.1670698643.txt.gz · Zuletzt geändert: 2022/12/10 18:57 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki