Anforderungen an die neue Datenstruktur

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Imperative Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Kapitel 5. Stacks und Queues
der Universität Oldenburg
der Universität Oldenburg
Sequentielle Liste - Array
Gliederung Motivation / Grundlagen Sortierverfahren
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
Sortierverfahren Richard Göbel.
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (06 - Anwendungen von Stapeln und Schlangen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (15 Hashverfahren: Verkettung der Überläufer) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Verkettete Liste Visualisierung. New-Operator Mit dem New-Operator kann zur Laufzeit (dynamisch) Speicherplatz reserviert und angelegt werden Vorteil:
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
1. Die rekursive Datenstruktur Liste 1.1 Warteschlange (Queue)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
1.5 Das Entwurfsmuster Kompositum
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung Blue J. Inhaltsverzeichnis  Definition  Vokabeln.
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Diskrete Mathematik I Vorlesung 2 Arrays.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Anforderungen an die neue Datenstruktur
Schlange und Stapel.
Konstruktoren.
verkettete Strukturen
Dynamisches Array als "verkettete Liste"
Einführung in die Programmierung mit Java
November 18 Informatik Kurse
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein.
1. Die rekursive Datenstruktur Liste 1
Datenstrukturen und Softwareentwicklung
Implementieren von Klassen
Felder in der Informatik
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
1. Die rekursive Datenstruktur Liste 1
2. Die rekursive Datenstruktur Baum 2.3 Baum und Kompositum
 Präsentation transkript:

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)

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.

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?

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.

1) Der Patient als eigene Kasse Objektstruktur (Achtung: Kein Klassendiagramm)

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.

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)!

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.

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!

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

2) Dynamische lineare Datenstrukturen nextNode content nextNode null content null nachName “Cloeters“ vorName null alter 0

2) Dynamische lineare Datenstrukturen nextNode content nextNode null content null nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0

2) Dynamische lineare Datenstrukturen nextNode content nextNode null content nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0

2) Dynamische lineare Datenstrukturen nextNode content nextNode null content nextNode null content null nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0

2) Dynamische lineare Datenstrukturen nextNode content nextNode content nextNode null content null nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0

2) Dynamische lineare Datenstrukturen nextNode content nextNode content nextNode null content null nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0 nachName “Bongartz“ vorName null alter 0

2) Dynamische lineare Datenstrukturen nextNode content nextNode content nextNode null content nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0 nachName “Bongartz“ vorName null alter 0

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...

2) Dynamische lineare Datenstrukturen nextNode content nextNode null content null node1 nachName “Cloeters“ vorName null alter 0

2) Dynamische lineare Datenstrukturen nextNode content nextNode null content null node1 nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0 Patient x=new Patient(“Lommetz“);

2) Dynamische lineare Datenstrukturen nextNode content nextNode null content node1 nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0 node1.nextNode.content=x;

2) Dynamische lineare Datenstrukturen nextNode content nextNode null content nextNode null content null node1 nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0 Node y=new Node();

2) Dynamische lineare Datenstrukturen nextNode content nextNode content nextNode null content null node1 nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0 Node y=new Node(); node1.nextNode.nextNode=y;

2) Dynamische lineare Datenstrukturen nextNode content nextNode content nextNode null content null node1 nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0 nachName “Bongartz“ vorName null alter 0 x=new Patient(“Bongartz“);

2) Dynamische lineare Datenstrukturen nextNode content nextNode content nextNode null content node1 nachName “Cloeters“ vorName null alter 0 nachName “Lommetz“ vorName null alter 0 nachName “Bongartz“ vorName null alter 0 x=new Patient(“Bongartz“); node1.nextNode.nextNode.content=x;

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

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)

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:http://www.schulentwicklung.nrw.de/lehrplaene/ lehrplannavigator-s-ii/gymnasiale-oberstufe/informatik/ hinweise-und-beispiele/

3) Lineare Datenstruktur: Liste

3) Lineare Datenstruktur: Liste

3) Lineare Datenstruktur: Liste

3) Lineare Datenstruktur: Liste

3) Lineare Datenstruktur: Liste

3) Lineare Datenstruktur: Liste Sie erhalten jetzt die Klassendokumentation von List als Fotokopie Aufgabe: Die fogende Tabelle vervollständigen! Aktuelles Objekt Listenelemente

3) Lineare Datenstruktur: Liste

3) Lineare Datenstruktur: Liste