Benutzer-Werkzeuge

Webseiten-Werkzeuge


g9:uebungen:eigene_klassen: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:eigene_klassen:start [2021/01/20 12:56] Martin Pabstg9:uebungen:eigene_klassen:start [2022/06/30 07:23] (aktuell) – [Zweite Erweiterung: Rückgabe des Würfelergebnisses] Martin Pabst
Zeile 1: Zeile 1:
 ====== Eigene Klassen mit Methoden und Attributen ====== ====== Eigene Klassen mit Methoden und Attributen ======
- 
-<WRAP center round info 80%> 
-**Aus dem G9-Lehrplan (Inf 9, Lehrbereich 3):** \\ \\  
-Die Schülerinnen und Schüler ... 
-  * analysieren Objekte aus ihrer Erfahrungswelt (z. B. Fahrzeuge, Personen) hinsichtlich ihrer Eigenschaften (Attribute) und Fähigkeiten (Methoden) und abstrahieren sie zu Klassen. Sie stellen Objekte und Klassen als Grundlage einer möglichen Implementierung grafisch dar. 
-  * deklarieren eine Klasse sowie die zugehörigen Attribute und Methoden in einer objektorientierten Programmiersprache. 
-  * verwenden bei der Implementierung Wertzuweisungen, um Attributwerte zu ändern, und interpretieren diese als Zustandsänderung des zugehörigen Objekts. 
-</WRAP> 
- 
  
 ===== Beispiel 1: Würfel-Klasse (Methoden mit Parametern und Rückgabewerten) ===== ===== Beispiel 1: Würfel-Klasse (Methoden mit Parametern und Rückgabewerten) =====
Zeile 114: Zeile 105:
  
 ==== Zweite Erweiterung: Rückgabe des Würfelergebnisses ==== ==== Zweite Erweiterung: Rückgabe des Würfelergebnisses ====
-Das Würfelergebnis soll durch die Methode nicht am Bildschirm ausgegeben werden, sondern es soll an die Aufrufstelle zurückgegeben werden, so dass es im Folgenden weiterverarbeitet werden kann: + 
-<code myjava+Im Hauptprogramm soll 3-mal gewürfelt werden. Anschließend soll die Summe der Augenzahlen ausgegeben werden.  
-   Würfel w = new Würfel(); + 
-   int ergebnis = w.würfle(6);     // Würfle mit einem 6-seitigen Würfel und gib das Ergebnis ALS WERT ZURÜCK +<WRAP center round tip 80%
-   println("Gewürfelte Zahl: " + ergebnis);     +Wir brauchen also eine Möglichkeit, die gewürfelte Augenzahl von der Methode ''würfle'' ins Hauptprogramm zu übertragen um dort die Summe zu berechnen
-</code>+</WRAP>
  
 <HTML> <HTML>
Zeile 127: Zeile 118:
 <script type="text/plain" title="Main3.java"> <script type="text/plain" title="Main3.java">
 Würfel w = new Würfel(); Würfel w = new Würfel();
-int ergebnis = w.würfle(6);     // Würfle mit einem 6-seitigen Würfel und gib das Ergebnis ALS WERT ZURÜCK +int summe w.würfle(6) + w.würfle(6) + w.würfle(6);     // 3-mal würfeln und Summe berechnen 
-println("Gewürfelte Zahl: " + ergebnis); +println("Summe aus drei Würfen: " + summe); 
  
 class Würfel { class Würfel {
Zeile 283: Zeile 274:
 </WRAP> </WRAP>
  
- 
- 
-===== Beispiel 4: ASCII-Art-Klasse ===== 
-{{ :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> 
- 
- 
- 
- 
-<HTML> 
- 
-<div class="java-online" style="height: 600px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'AsciiArt1'}"> 
- 
-<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> 
-</div> 
- 
-</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!]] 
g9/uebungen/eigene_klassen/start.1611143760.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki