Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Robert Schenck Geändert vor über 7 Jahren
1
Anforderungen an die neue Datenstruktur
Anforderungen, die im Unterricht wiederholt vorgeschlagen wurden, um die bisherige Implementation der Queue zu verbessern: Mitverwaltung von Patientendaten (z.B. Alter, Krankheitsverlauf etc.) Realisierung als dynamische Datenstruktur (immer nur so viel Speicher belegt, wie gerade benötigt) Möglichkeit einer Prioritätenverwaltung (Priority-Queue, z.B. für Notfälle oder fest vereinbarte Termine)
2
1) Der Patient als eigene Klasse
Bisher: Nachname des Patienten als String gespeichert. Besser: Klasse Patient definieren, von der dann Objekte für die einzelnen Patienten erzeugt werden können.
3
1) Der Patient als eigene Klasse
Arbeitsauftrag: Implementieren Sie eine Klasse Patient! Es sollen mindestens die Datenfelder für Nachname, Vorname und Alter vorhanden sein. Erzeugen Sie ein Patientenobjekt. Testen Sie es (inspect)! Wie kann man die Datenfelder füllen?
4
1) Der Patient als eigene Klasse
Um Objekte vom Typ Patient in die Queue einfügen zu können, muss die Datenstruktur geringfügig geändert werden. Das Array und die Parameter und Rückgabetypen der Methoden, bisher vom Typ String, müssen den Typ Object bekommen. Von der Klasse Object erbt jede andere Klasse in Java, so dass jede Klasse auch vom Typ Object ist. Die Queue kann nun jede Art von Daten aufnehmen. Nur die elementaren Datentypen wie boolean, int, char, double (Fließkommazahl) erben nicht von Object.
5
1) Der Patient als eigene Kasse
Objektstruktur (Achtung: Kein Klassendiagramm)
6
1) Der Patient als eigene Klasse
Der Referenzpfeil Referenz: im betreffenden Datenfeld ist nicht der Wert gespeichert. Abgelegt ist im Datenfeld die Speicheradresse, an der sich das referenzierte Objekt befindet. Im Diagramm führt der Referenzpfeil vom Datenfeld zum referenzierten Objekt Eine leere Referenz hat den Wert null. In JAVA werden nur die elementaren Datentypen: boolean, int, char, double (Fließkommazahl) nicht als Referenz gespeichert, sondern direkt in der Variablen / im Datenfeld. Alle anderen Daten werden über Referenzen adressiert.
7
1) Der Patient als eigene Klasse
Arbeitsauftrag: Ändern Sie die Klasse Queue so, dass sie beliebige Objekte aufnehmen kann! Erzeugen Sie nun Objekte vom Typ Patient und stellen Sie sie in die Queue! Prüfen und testen Sie ausführlich (inspect)!
8
2) Dynamische lineare Datenstrukturen
Nachteile statischer Datenstrukturen Die Größe eines Arrays muss vor seiner Erzeugung festgelegt werden: z.B. qArray = new Object[100] Wird das Array erzeugt, wird Speicherplatz für 100 Objektreferenzen reserviert 2 Nachteile: 1) Ggf. wird umsonst reserviert, 2) Ggf. reicht die Größe nicht.
9
2) Dynamische lineare Datenstrukturen
Lösung: Dynamische Datenstrukturen Es wir immer nur so viel Speicherplatz verbraucht, wie gerade benötigt. Erst wenn neue Daten gespeichert werden, wird für sie Speicherplatz reserviert. Wenn Daten gelöscht werden, kann der Speicherplatz sofort wieder freigegeben werden. Insbesondere bei großen Datenmengen (z.B. Filmen notwendig) Außer der Platzersparnis noch weitere Vorteile!
10
2) Dynamische lineare Datenstrukturen
Die Klasse Node (=Knoten) enthält 2 Datenfelder: content ist eine Referenz auf ein beliebiges Inhaltsobjekt, z.B. Patient. nextNode ist eine Referenz auf den nächsten Knoten. Implementationdiagramm: Node -content: Object -nextNode: Node
11
2) Dynamische lineare Datenstrukturen
nextNode content nextNode null content null nachName “Cloeters“ vorName null alter
12
2) Dynamische lineare Datenstrukturen
nextNode content nextNode null content null nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter
13
2) Dynamische lineare Datenstrukturen
nextNode content nextNode null content nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter
14
2) Dynamische lineare Datenstrukturen
nextNode content nextNode null content nextNode null content null nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter
15
2) Dynamische lineare Datenstrukturen
nextNode content nextNode content nextNode null content null nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter
16
2) Dynamische lineare Datenstrukturen
nextNode content nextNode content nextNode null content null nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter nachName “Bongartz“ vorName null alter
17
2) Dynamische lineare Datenstrukturen
nextNode content nextNode content nextNode null content nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter nachName “Bongartz“ vorName null alter
18
2) Dynamische lineare Datenstrukturen
Nun das ganze noch einmal! Dieses Mal mit einer Hilfe für die Implementation in JAVA Aufgeführt sind die JAVA-Befehle zum bewerkstelligen der gezeigten Modifikationen in der Objektstruktur...
19
2) Dynamische lineare Datenstrukturen
nextNode content nextNode null content null node1 nachName “Cloeters“ vorName null alter
20
2) Dynamische lineare Datenstrukturen
nextNode content nextNode null content null node1 nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter Patient x=new Patient(“Lommetz“);
21
2) Dynamische lineare Datenstrukturen
nextNode content nextNode null content node1 nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter node1.nextNode.content=x;
22
2) Dynamische lineare Datenstrukturen
nextNode content nextNode null content nextNode null content null node1 nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter Node y=new Node();
23
2) Dynamische lineare Datenstrukturen
nextNode content nextNode content nextNode null content null node1 nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter Node y=new Node(); node1.nextNode.nextNode=y;
24
2) Dynamische lineare Datenstrukturen
nextNode content nextNode content nextNode null content null node1 nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter nachName “Bongartz“ vorName null alter x=new Patient(“Bongartz“);
25
2) Dynamische lineare Datenstrukturen
nextNode content nextNode content nextNode null content node1 nachName “Cloeters“ vorName null alter nachName “Lommetz“ vorName null alter nachName “Bongartz“ vorName null alter x=new Patient(“Bongartz“); node1.nextNode.nextNode.content=x;
26
2) Dynamische lineare Datenstrukturen
Zur Implementierung einer Schlange mit Hilfe der Klasse Node müssen die Datenfelder head und tail vom Typ Node sein Die Methoden isEmpty, enqueue, front, dequeue müssen entsprechend umgeschrieben werden. → hier Verzicht auf genaue Implementierung
27
3) Lineare Datenstruktur: Liste
Ausgangsproblem: Wie kann ich Patienten mit Priorität, d.h. z.B. Notfälle in die Schlange einfügen? Neue Anwendung: Verwaltung der Playlist eines Mediaplayers Aufgabe: Was muss so eine Playlist mindestens für Funktionen (Methoden) anbieten? (Think-Pair- Share, 5min)
28
3) Lineare Datenstruktur: Liste
Mit der Klasse List der Abiturvorgaben lässt sich ein solcher Player realiseren, genauso gut kann aus List aber auch eine Priority-Queue (z.B. für Notfallpatienten) aufgebaut werden. Mit der Klasse List der Abiturvorgaben lässt sich ein solcher Player realiseren, genauso gut kann aus List aber auch eine Priority-Queue (z.B. für Notfallpatienten) aufgebaut werden. Die Klasse List wird im Folgenden erklärt und dokumentiert. Quelle: lehrplannavigator-s-ii/gymnasiale-oberstufe/informatik/ hinweise-und-beispiele/
29
3) Lineare Datenstruktur: Liste
30
3) Lineare Datenstruktur: Liste
31
3) Lineare Datenstruktur: Liste
32
3) Lineare Datenstruktur: Liste
33
3) Lineare Datenstruktur: Liste
34
3) Lineare Datenstruktur: Liste
Sie erhalten jetzt die Klassendokumentation von List als Fotokopie Aufgabe: Die fogende Tabelle vervollständigen! Aktuelles Objekt Listenelemente
35
3) Lineare Datenstruktur: Liste
36
3) Lineare Datenstruktur: Liste
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.