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
Letzte ÜberarbeitungBeide Seiten der Revision
g9:uebungen:eigene_klassen:start [2021/01/20 12:56] Martin Pabstg9:uebungen:eigene_klassen:start [2021/12/29 11:29] – Externe Bearbeitung 127.0.0.1
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 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.txt · Zuletzt geändert: 2022/06/30 07:23 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki