g9:uebungen:eigene_klassen:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
g9:uebungen:eigene_klassen:start [2021/01/20 12:56] – Martin Pabst | g9: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, | ||
- | </ | ||
- | |||
===== 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: | ||
</ | </ | ||
- | |||
- | |||
- | ===== Beispiel 4: ASCII-Art-Klasse ===== | ||
- | {{ : | ||
- | Kennst Du [[https:// | ||
- | Hier ein Beispielprogramm und seine Ausgabe: | ||
- | <code myjava> | ||
- | AsciiArt art = new AsciiArt(); | ||
- | |||
- | // Rechteck mit Breite 8, Höhe 6 | ||
- | art.zeichneRechteck(8, | ||
- | // Kreuz mit Balkendicke 3, Höhe 13 | ||
- | art.zeichneKreuz(2, | ||
- | // Kreis mit Radius 8 | ||
- | art.zeichneKreis(4, | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | < | ||
- | |||
- | <div class=" | ||
- | |||
- | <script type=" | ||
- | AsciiArt art = new AsciiArt(); | ||
- | |||
- | // Rechteck mit Breite 8, Höhe 6 | ||
- | art.zeichneRechteck(8, | ||
- | // Kreuz mit Balkendicke 3, Höhe 13 | ||
- | art.zeichneKreuz(2, | ||
- | // Kreis mit Radius 8 | ||
- | art.zeichneKreis(4, | ||
- | |||
- | |||
- | class AsciiArt { | ||
- | |||
- | void zeichneRechteck(int breite, int höhe, String farbe) { | ||
- | | ||
- | print(" | ||
- | gibAus(" | ||
- | print(" | ||
- | println(); | ||
- | |||
- | for(int i = 1; i <= höhe - 2; i++) { | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | } | ||
- | | ||
- | print(" | ||
- | gibAus(" | ||
- | print(" | ||
- | println(); | ||
- | |||
- | } | ||
- | |||
- | |||
- | void gibAus(String zeichen, int anzahl, String farbe) { | ||
- | for(int i = 1; i <= anzahl; i++) { | ||
- | | ||
- | } | ||
- | } | ||
- | |||
- | void zeichneKreis(int radius, String farbe) { | ||
- | for(int zeile = 0; zeile <= 2 * radius; zeile++) { | ||
- | | ||
- | double dx = radius + 0.5 - zeile; | ||
- | double dy = radius + 0.5 - spalte; | ||
- | if(Math.sqrt(dx * dx + dy * dy) <= radius) { | ||
- | | ||
- | } else { | ||
- | | ||
- | } | ||
- | } | ||
- | | ||
- | } | ||
- | } | ||
- | |||
- | 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++) { | ||
- | | ||
- | | ||
- | | ||
- | } | ||
- | |||
- | for(int i = 1; i <= dicke; i++) { | ||
- | | ||
- | | ||
- | } | ||
- | |||
- | for(int i = 1; i <= d; i++) { | ||
- | | ||
- | | ||
- | | ||
- | } | ||
- | |||
- | } | ||
- | |||
- | } | ||
- | </ | ||
- | </ | ||
- | |||
- | </ | ||
- | |||
- | ===== Aufgabe 1 ===== | ||
- | Schreibe eine Klasse '' | ||
- | |||
- | [[.aufgabe1Tipp: | ||
- | ===== Aufgabe 2 ===== | ||
- | Schreibe eine Klasse '' | ||
- | * Die Methode '' | ||
- | * Die Methode '' | ||
- | |||
- | [[.aufgabe2: | ||
- | |||
- | |||
- | ===== Aufgabe 3 (etwas schwerer...) ===== | ||
- | {{ : | ||
- | Erweitere die Klasse '' | ||
- | |||
- | [[.aufgaben: |
g9/uebungen/eigene_klassen/start.txt · Zuletzt geändert: 2022/06/30 07:23 von Martin Pabst