listen:trennungstrukturdaten:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
listen:trennungstrukturdaten:start [2024/09/19 07:21] – [Gesamtprogramm] Martin Pabst | listen:trennungstrukturdaten:start [2024/09/27 08:03] (aktuell) – [Klassendiagramm] Martin Pabst | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Im [[listen: | Im [[listen: | ||
- | Die Lösungsidee besteht darin, jedes Datenobjekt in ein Objekt einer neuen Klasse '' | + | Die Lösungsidee besteht darin, jedes Datenobjekt in ein Objekt einer **neuen Klasse '' |
</ | </ | ||
Zeile 9: | Zeile 9: | ||
{{ : | {{ : | ||
==== Klassendiagramm ==== | ==== Klassendiagramm ==== | ||
- | {{ : | + | {{ : |
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Beim Zeichnen der Klassen- und Objektdiagramme orientieren wir uns an der [[https:// | ||
+ | * {{: | ||
+ | * {{: | ||
+ | * {{: | ||
+ | * {{: | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Bei Aggregation, | ||
+ | |||
+ | **Vorgehen in Prüfungen (auch Abitur):** \\ | ||
+ | Der Lehrplan unterscheidet die Fälle Aggregation, | ||
+ | **Das Symbol für Vererbung (Dreieckpfeil) wird aber sehr wohl verwendet.** | ||
+ | </ | ||
===== Umsetzung in Java ===== | ===== Umsetzung in Java ===== | ||
- | === Die Klasse | + | === Die Klasse |
Die Klasse '' | Die Klasse '' | ||
<code learnj> | <code learnj> | ||
Zeile 27: | Zeile 43: | ||
<code learnj> | <code learnj> | ||
public class Warteschlange { | public class Warteschlange { | ||
- | private | + | Knoten |
- | + | Knoten ende; | |
} | } | ||
public class Knoten { | public class Knoten { | ||
- | private | + | Knoten nachfolger; |
- | | + | Kunde daten; |
- | + | ||
- | | + | |
- | | + | this.daten = kunde; |
- | } | + | |
} | } | ||
</ | </ | ||
Zeile 126: | Zeile 142: | ||
==== Sequenzdiagramm am Beispiel einer Warteschlange mit drei Knoten: ==== | ==== Sequenzdiagramm am Beispiel einer Warteschlange mit drei Knoten: ==== | ||
- | {{ :datenstrukturen: | + | {{ :listen: |
===== Gesamtprogramm ===== | ===== Gesamtprogramm ===== | ||
< | < | ||
Zeile 133: | Zeile 149: | ||
<script type=" | <script type=" | ||
- | Supermarktkasse | + | Warteschlange |
s.hintenAnstellen(new Kunde(" | s.hintenAnstellen(new Kunde(" | ||
s.hintenAnstellen(new Kunde(" | s.hintenAnstellen(new Kunde(" | ||
Zeile 139: | Zeile 155: | ||
s.hintenAnstellen(new Kunde(" | s.hintenAnstellen(new Kunde(" | ||
- | println(s.getAnzahlIterativ()); | + | println(s.hatKunde(" |
+ | println(s.hatKunde(" | ||
- | println(s.erstenEntnehmen().name); | ||
- | println(s.erstenEntnehmen().name); | ||
- | println(s.erstenEntnehmen().name); | ||
- | + | class Warteschlange | |
- | class Supermarktkasse | + | |
| | ||
| | ||
Zeile 187: | Zeile 200: | ||
int getAnzahlRekursiv() { | int getAnzahlRekursiv() { | ||
if(anfang == null) return 0; | if(anfang == null) return 0; | ||
- | return anfang.getAnzahlRekursiv(); | + | return anfang.getAnzahl(); |
} | } | ||
+ | |||
+ | Kunde gibDenNtenKunden(int n) { | ||
+ | if(n == 0) return anfang.getDaten(); | ||
+ | return anfang.gibDenNtenKunden(n); | ||
+ | } | ||
+ | |||
+ | | ||
+ | if(anfang == null) return false; | ||
+ | return anfang.hatKunde(name); | ||
+ | } | ||
+ | |||
} | } | ||
Zeile 199: | Zeile 223: | ||
} | } | ||
- | | + | boolean hatKunde(String name) { |
+ | if(daten.name == name) return true; | ||
+ | if(nachfolger == null) return false; | ||
+ | return nachfolger.hatKunde(name); | ||
+ | } | ||
+ | |||
+ | int getAnzahl() { | ||
if(nachfolger == null) return 1; | if(nachfolger == null) return 1; | ||
- | return nachfolger.getAnzahlRekursiv() + 1; | + | return nachfolger.getAnzahl() + 1; |
} | } | ||
Zeile 214: | Zeile 244: | ||
Kunde getDaten() { | Kunde getDaten() { | ||
return daten; | return daten; | ||
+ | } | ||
+ | |||
+ | Kunde gibDenNtenKunden(int n) { | ||
+ | if(n == 1) return daten; | ||
+ | if(nachfolger != null) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | // Fehler: n ist zu groß! | ||
+ | return null; | ||
} | } | ||
} | } | ||
Zeile 223: | Zeile 263: | ||
this.name = name; | this.name = name; | ||
} | } | ||
- | } | + | }</ |
- | </ | + | |
</ | </ | ||
Zeile 236: | Zeile 275: | ||
**Aufgabe 2:** \\ \\ | **Aufgabe 2:** \\ \\ | ||
Erweitern Sie die Klasse Warteschlange um eine Methode '' | Erweitern Sie die Klasse Warteschlange um eine Methode '' | ||
- | [[.letztesLoeschenLoesung: | + | [[.letztesLoeschenLoesung: |
+ | **Aufgabe 3:** \\ \\ | ||
+ | Erweitern Sie die Klasse Warteschlange um eine Methode '' | ||
+ | [[.hatKunde: | ||
</ | </ | ||
listen/trennungstrukturdaten/start.1726730498.txt.gz · Zuletzt geändert: 2024/09/19 07:21 von Martin Pabst