Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen1:eigene: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
klassen1:eigene:start [2020/10/29 11:32] Martin Pabstklassen1:eigene:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 143: Zeile 143:
 </WRAP> </WRAP>
  
-===== Beispiel 2: Rechner-Klasse (mehrere Parameter) =====+===== Beispiel 2: Klasse "Katze" ===== 
 +Wir schreiben eine Klasse Katze mit den Attributen ''name'', ''Fellfarbe'' und ''Beinzahl'' sowie den Methoden ''stellDichVor()'' und ''sagWas(String text)''
 + 
 +<HTML> 
 + 
 +<div class="java-online" style="height: 500px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Katze1'}"> 
 + 
 +<script type="text/plain" title="Main4.java"> 
 +Katze snoopy = new Katze(); 
 +snoopy.name = "Snoopy"; 
 +snoopy.fellfarbe = "grau"; 
 +snoopy.beinzahl = 4; 
 +snoopy.sagWas("Miau!"); 
 +snoopy.stellDichVor(); 
 + 
 +Katze b = new Katze(); 
 +b.sagWas("Grrrrr!"); 
 +b.name = "Bella"; 
 +b.fellfarbe = "weiß"; 
 +b.beinzahl = 3; 
 +b.stellDichVor(); 
 + 
 + 
 +class Katze { 
 +    
 +   String name; 
 +   String fellfarbe; 
 +   int beinzahl; 
 + 
 +   void sagWas(String text) { 
 +      println(text, Color.brown); 
 +   } 
 + 
 +   void stellDichVor() { 
 +      println("Ich heiße " + name + ", habe die Fellfarbe " + fellfarbe + " und " + beinzahl + " Beine."); 
 +   } 
 + 
 +
 +</script> 
 +</div> 
 + 
 +</HTML> 
 + 
 +===== Beispiel 3: Rechner-Klasse (mehrere Parameter) =====
 Wir schreiben eine Klasse Rechner mit Methoden ''summe'', ''differenz'' und ''potenz'' und berechnen damit $2^3 + 5$. Wir schreiben eine Klasse Rechner mit Methoden ''summe'', ''differenz'' und ''potenz'' und berechnen damit $2^3 + 5$.
  
Zeile 192: Zeile 235:
  
 {{ :klassen1:eigene:pasted:20201028-133352.png?150}} {{ :klassen1:eigene:pasted:20201028-133352.png?150}}
-===== Beispiel 3: Weihnachtsbaum (Methoden rufen sich gegenseitig auf) =====+===== Beispiel 4: Weihnachtsbaum (Methoden rufen sich gegenseitig auf) =====
 Schreibe eine Klasse ''Baum'', mit einer Methode ''zeichneBaum(int breite)'', die wiederum die Methoden ''zeichneKrone(int breite)'' und ''zeichneStamm(int stammbreite)'' aufruft um damit einen Baum wie in der nebenstehenden Abbildung zu zeichnen. Schreibe eine Klasse ''Baum'', mit einer Methode ''zeichneBaum(int breite)'', die wiederum die Methoden ''zeichneKrone(int breite)'' und ''zeichneStamm(int stammbreite)'' aufruft um damit einen Baum wie in der nebenstehenden Abbildung zu zeichnen.
  
Zeile 275: Zeile 318:
  
  
-===== Aufgabe 1: ASCII-Art-Klasse ===== +===== Beispiel 5: ASCII-Art-Klasse ===== 
-Kennst Du [[https://en.wikipedia.org/wiki/ASCII_art|ASCII-Art]]? Wir schreiben eine Klasse ''AsciiArt'', deren Methoden geometrische Figuren ausgeben, die aus Textzeichen zusammengesetzt sind.+{{ :klassen1:eigene:pasted:20201029-173821.png}} 
 +Kennst Du [[https://en.wikipedia.org/wiki/ASCII_art|ASCII-Art]]? Wir schreiben eine Klasse ''AsciiArt'', deren Methoden geometrische Figuren ausgeben, die aus Textzeichen zusammengesetzt sind. \\ \\  
 +Hier ein Beispielprogramm und seine Ausgabe: 
 +<code myjava> 
 +AsciiArt art = new AsciiArt();
  
 +// Rechteck mit Breite 8, Höhe 6
 +art.zeichneRechteck(8, 6, Color.lightblue); 
 +// Kreuz mit Balkendicke 3, Höhe 13
 +art.zeichneKreuz(2, 10, Color.lightgreen);
 +// Kreis mit Radius 8
 +art.zeichneKreis(4, Color.yellow);
 +</code>
  
  
Zeile 284: Zeile 338:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 300px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'AsciiArt1'}">+<div class="java-online" style="height: 600px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'AsciiArt1'}">
  
-<script type="text/plain" title="Main1.java">+<script type="text/plain" title="AsciiArt.java"> 
 +AsciiArt art = new AsciiArt();
  
 +// Rechteck mit Breite 8, Höhe 6
 +art.zeichneRechteck(8, 6, Color.lightblue); 
 +// Kreuz mit Balkendicke 3, Höhe 13
 +art.zeichneKreuz(2, 10, Color.lightgreen);
 +// Kreis mit Radius 8
 +art.zeichneKreis(4, Color.yellow);
 +
 +
 +class AsciiArt {
 +   
 +   void zeichneRechteck(int breite, int höhe, String farbe) {
 +      
 +      print("+", farbe);
 +      gibAus("-", breite - 2, farbe);
 +      print("+", farbe);
 +      println();
 +
 +      for(int i = 1; i <= höhe - 2; i++) {
 +         print("|", farbe);
 +         gibAus(" ", breite - 2, farbe);
 +         print("|", farbe);
 +         println();
 +      }
 +      
 +      print("+", farbe);
 +      gibAus("-", breite - 2, farbe);
 +      print("+", farbe);
 +      println();
 +
 +   }
 +
 +
 +   void gibAus(String zeichen, int anzahl, String farbe) {
 +      for(int i = 1; i <= anzahl; i++) {
 +         print(zeichen, farbe);
 +      }
 +   }
 +
 +   void zeichneKreis(int radius, String farbe) {
 +      for(int zeile = 0; zeile <= 2 * radius; zeile++) {
 +         for(int spalte = 0; spalte <= 2 * radius; spalte++) {
 +            double dx = radius + 0.5 - zeile;
 +            double dy = radius + 0.5 - spalte;
 +            if(Math.sqrt(dx * dx + dy * dy) <= radius) {
 +               print("*", farbe);
 +            } else {
 +               print(" ", farbe);
 +            }
 +         }
 +         println();
 +      }
 +   }
 +
 +   void zeichneKreuz(int dicke, int höhe, String farbe) {
 +      
 +      int d = (höhe - dicke) / 2; // überstehende Balkenlänge
 +      for(int i = 1; i <= d; i++) {
 +         gibAus(" ", d, farbe);
 +         gibAus("+", dicke, farbe);
 +         println();
 +      }
 +
 +      for(int i = 1; i <= dicke; i++) {
 +         gibAus("+", höhe, farbe);
 +         println();
 +      }
 +
 +      for(int i = 1; i <= d; i++) {
 +         gibAus(" ", d, farbe);
 +         gibAus("+", dicke, farbe);
 +         println();
 +      }
 +
 +   }
 +
 +}
 </script> </script>
 </div> </div>
Zeile 293: Zeile 424:
 </HTML> </HTML>
  
 +===== Aufgabe 1 =====
 +Schreibe eine Klasse ''GeoHelfer'' mit den Methoden ''berechneDreiecksfläche'', ''berechneZylindervolumen'' und ''berechneZylinderOberfläche''.
 +
 +[[.aufgabe1Tipp:start|Hier ein Tipp]]
 +===== Aufgabe 2 =====
 +Schreibe eine Klasse ''ZahlenHelfer'' mit folgenden Methoden:
 +  * Die Methode ''zufall'' bekommt als Parameter zwei ganze Zahlen ''von'' und ''bis'' und gibt eine zufällige ganze Zahl zwischen ''von'' und ''bis'' zurück.
 +  * Die Methode ''summe'' bekommt als Parameter eine ganze Zahl ''z'' und gibt die Summe $1 + 2 + \ldots + z$ zurück.
 +
 +[[.aufgabe2:tipp:start|Hier ein kleiner Tipp]]
 +
 +
 +===== Aufgabe 3 (etwas schwerer...) =====
 +{{ :klassen1:eigene:pasted:20201108-203142.png}}
 +Erweitere die Klasse ''AsciiArt'' von oben um eine Methode ''void zeichneX(int breite, int linienstärke, String farbe)'', die ein großes X aus lauter X-Zeichen zusammensetzt. Die Ausgabe von ''art.zeichneX(10, 2, Color.pink);'' sieht beispielsweise so aus, wie im Bild rechts zu sehen.
 +
 +[[.aufgaben:aufgabe3:start|Hier geht's zur Lösung!]]
klassen1/eigene/start.1603967572.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki