klassen2:constructors:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
klassen2:constructors:start [2020/05/26 15:47] – Martin Pabst | klassen2:constructors:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Konstruktoren ====== | ====== Konstruktoren ====== | ||
+ | |||
+ | {{youtube> | ||
+ | |||
Wir haben inzwischen schon viele Objekte instanziert, | Wir haben inzwischen schon viele Objekte instanziert, | ||
< | < | ||
Zeile 18: | Zeile 21: | ||
Wir lernen in diesem Kapitel, wie wir die Konstruktoren unserer Klassen selbst schreiben können. | Wir lernen in diesem Kapitel, wie wir die Konstruktoren unserer Klassen selbst schreiben können. | ||
- | ===== Beispiel 1: Buntstift | + | ===== Beispiel 1: Würfel |
+ | Programmiere eine Klasse '' | ||
+ | <code MyJava> | ||
+ | Würfel w6 = new Würfel(6); | ||
+ | Würfel w20 = new Würfel(20); | ||
+ | println(w6.würfle()); | ||
+ | println(w20.würfle()); | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | Würfel w6 = new Würfel(6); | ||
+ | Würfel w20 = new Würfel(20); | ||
+ | println(w6.würfle()); | ||
+ | println(w20.würfle()); | ||
+ | |||
+ | class Würfel{ | ||
+ | int seitenzahl; | ||
+ | |||
+ | // Das ist die Konstruktor-Methode ("der Konstruktor" | ||
+ | // dass sie den Bezeichner der Klasse (" | ||
+ | | ||
+ | seitenzahl = s; | ||
+ | } | ||
+ | |||
+ | int würfle(){ | ||
+ | return Math.floor(Math.random()*seitenzahl) + 1; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Beispiel 2: Buntstift ===== | ||
+ | Schau' Dir das folgende Beispielprogramm an und überlege Dir, an welchen Stellen des Programms der Konstruktor '' | ||
< | < | ||
Zeile 28: | Zeile 69: | ||
Buntstift rotstift = new Buntstift(Color.red); | Buntstift rotstift = new Buntstift(Color.red); | ||
rotstift.schreibe(" | rotstift.schreibe(" | ||
+ | |||
Buntstift grünstift = new Buntstift(Color.lime); | Buntstift grünstift = new Buntstift(Color.lime); | ||
grünstift.schreibe(" | grünstift.schreibe(" | ||
Zeile 36: | Zeile 78: | ||
Color farbe; | Color farbe; | ||
- | public | + | // Das ist die Konstruktor-Methode ("der Konstruktor" |
+ | // dass sie den Bezeichner der Klasse (" | ||
+ | Buntstift(Color farbe1) { | ||
farbe = farbe1; | farbe = farbe1; | ||
} | } | ||
- | public | + | void schreibe(String text) { |
println(text, | println(text, | ||
} | } | ||
Zeile 48: | Zeile 92: | ||
</ | </ | ||
</ | </ | ||
- | |||
===== Aufgabe ===== | ===== Aufgabe ===== | ||
Führe das Programm Schrittweise mit "step into ({{: | Führe das Programm Schrittweise mit "step into ({{: | ||
Zeile 136: | Zeile 179: | ||
</ | </ | ||
- | ===== Beispiel | + | ===== Beispiel |
+ | Die Klasse '' | ||
< | < | ||
Zeile 142: | Zeile 187: | ||
<script type=" | <script type=" | ||
- | PolynomZweitenGrades p = new PolynomZweitenGrades(1, | + | PolynomZweitenGrades p = new PolynomZweitenGrades(1, |
println(" | println(" | ||
println(" | println(" | ||
Zeile 165: | Zeile 210: | ||
</ | </ | ||
- | Die Klasse '' | ||
- | ===== Aufgabe: Die Klasse Bruch ===== | + | ===== Aufgabe |
- | Ein Objekt der Klasse | + | Im vorhergehenden Kapitel haben wir eine [[[klassen2: |
- | < | + | < |
- | Bruch b1 = new Bruch(4, 3); | + | Bruch b1 = new Bruch(); |
- | Bruch b2 = new Bruch(1, 2); | + | b1.zähler = 3; |
- | b1.ausgabeUnecht(); | + | b1.nenner = 4; |
- | b1.ausgabeEcht(); | + | |
- | b1.mal(b2); | + | |
- | b1.ausgabeUnecht(); | + | |
</ | </ | ||
- | Dieses Programm soll folgendes ausgeben: | + | einfach schreiben kann |
- | < | + | < |
- | 4/3 | + | Bruch b1 = new Bruch(3,4); |
- | 1 1/3 | + | |
- | 4/6 | + | |
</ | </ | ||
- | |||
- | <WRAP center round alert 60%> | ||
- | An meine Schüler/ | ||
- | Die Tipps im Eingabebereich unten könnt Ihr Euch aber natürlich ansehen! | ||
- | </ | ||
- | |||
- | <WRAP center round todo 60%> | ||
- | Für die Guten und Interessierten unter Euch: \\ | ||
- | Ihr könntet die Klasse '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | </ | ||
- | |||
< | < | ||
Zeile 203: | Zeile 228: | ||
<script type=" | <script type=" | ||
- | Bruch b1 = new Bruch(4, 3); | ||
- | Bruch b2 = new Bruch(1, 2); | ||
- | b1.ausgabeUnecht(); | ||
- | b1.ausgabeEcht(); | ||
- | b1.mal(b2); | ||
- | b1.ausgabeUnecht(); | ||
- | class Bruch { | ||
- | |||
- | } | ||
- | </ | ||
- | <script type=" | ||
- | ## Tipp 1 | ||
- | Die Klasse Bruch benötigt zwei Attribute ``a`` und ``b`` vom Typ ``int`` um Zähler bzw. Nenner zu speichern. Zudem benötigt sie einen Konstruktor, | ||
- | ``` | ||
- | class Bruch { | ||
- | int a; | ||
- | int b; | ||
- | |||
- | | ||
- | this.a = a; | ||
- | this.b = b; | ||
- | } | ||
- | } | ||
- | ``` | ||
- | </ | ||
- | <script type=" | ||
- | ## Tipp 2 | ||
- | Wisst Ihr noch, wie man eine Methode deklariert? Die Methode ``mal`` nimmmt als Parameter ein ``Bruch``-Objekt entgegen und gibt nichts (``void``) zurück. Sie verändert nur den Zustand des Bruches. Beachtet: innerhalb der Methode ist ``a`` der Zähler des Bruch-Objekts, | ||
- | ``` | ||
- | class Bruch { | ||
- | | ||
- | // Hier weiterprogrammieren! | ||
- | } | ||
- | } | ||
- | ``` | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | <hidden Lösung> | ||
- | < | ||
- | |||
- | <div class=" | ||
- | |||
- | <script type=" | ||
Bruch b1 = new Bruch(4, 3); | Bruch b1 = new Bruch(4, 3); | ||
Bruch b2 = new Bruch(1, 2); | Bruch b2 = new Bruch(1, 2); | ||
Zeile 264: | Zeile 241: | ||
int n; | int n; | ||
- | public Bruch(int z, int n) { | + | // Hier fehlt der Konstruktor! |
- | this.z = z; | + | |
- | this.n = n; | + | |
- | } | + | |
| | ||
Zeile 343: | Zeile 317: | ||
} | } | ||
} | } | ||
+ | |||
</ | </ | ||
+ | |||
</ | </ | ||
</ | </ | ||
+ | [[.loesung: | ||
- | </hidden> | + | ===== Aufgabe 2: Die Klasse Tier ===== |
+ | Füge der [[klassen2: | ||
+ | <code myJava> | ||
+ | Tier p = new Tier(" | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | Tier p = new Tier(" | ||
+ | p.vorstellen(); | ||
+ | |||
+ | class Tier { | ||
+ | | ||
+ | | ||
+ | int beinzahl; | ||
+ | |||
+ | // Hier fehlt der Konstruktor! | ||
+ | |||
+ | void vorstellen(){ | ||
+ | println(" | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | </HTML> | ||
+ | [[.loesung: |
klassen2/constructors/start.1590500849.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)