Anforderungen an die neue Datenstruktur

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Imperative Programmierung
der Universität Oldenburg
Sequentielle Liste - Array
Gliederung Motivation / Grundlagen Sortierverfahren
Java: Dynamische Datentypen
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
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (06 - Anwendungen von Stapeln und Schlangen) Prof. Th. Ottmann.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
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 in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
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.
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.
Java-Kurs Übung Besprechung der Hausaufgabe
Durbusch.de Inhalte ändern. Allgemeines Die Inhalte der Homepage treten in verschiedenen Formaten auf. Die Startseite besteht im wesentlichen aus dem.
Vererbung. Klassen - Vererbung  Eine Klasse kann von einer Basisklasse abgeleitet werden  Die abgeleitete Klasse erbt die Eigenschaften und Methoden.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Tutorium Software-Engineering SS14 Florian Manghofer.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Eine Vokabelschlange. Schlangen in Anwendungsprogrammen Die Piktogramme von Personen, mit denen wir ursprünglich die Datenstruktur Schlange eingeführt.
Anforderungen an die neue Datenstruktur
Schlange und Stapel.
Konstruktoren.
Zwei Denkansätze zur Klasse Schlange
Musterlösung zur Klausur "Diskrete Mathematik" vom
Einführung in die Programmierung mit Java
Zufall in Java Zwei Möglichkeiten.
Einführung in die Programmierung mit Java
verkettete Strukturen
Abfragesprache SQL in ORACLE
Allgemeine Befehle für die allgemeine Liste
Constraints anlegen und löschen, Data Dictionary Tabellen
Create Table, Rechte und Rollen
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
SS 04 Christiane Rauh Christian Hellinger
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
7. Arrays Gelegentlich braucht man für ein Programm mehrere Attribute desselben Datentyps oder derselben Klasse. Beispiel: In der Highscore-Liste eines.
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.3 Rekursive Funktionen
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
2. Vererbung und Kapselung
Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein.
«Delegierter» Methoden Schablone Funktionszeiger
1. Die rekursive Datenstruktur Liste 1
2. Die rekursive Datenstruktur Baum 2.2 Suchen und Einfügen
Datenstrukturen und Softwareentwicklung
9. Vererbung und Polymorphie
Implementieren von Klassen
Felder in der Informatik
Grundlagen der OO-Programmierung in C#
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
Datentyp- umwandlung.
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
Juli 19 Informatik Kurse
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: ContentType -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 AUFGABE: Überlege, wie eine Schlange (Queue) unter Benutzung dynamischer Datenstrukturen zu implementieren ist!

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.

2) Dynamische lineare Datenstrukturen AUFGABE 1: Implementiere eine dynamische Queue, die Daten vom Typ Object speichert, und teste ausführlich! Hilfe: Klassendiagramm Arbeitsblatt

2) Dynamische lineare Datenstrukturen AUFGABE 2: Implementiere nun eine dynamische, generische Queue, der bei der Erzeugung ein Typparameter übergeben wird, sodass sie Daten des angegebenen Datentyps speichert.

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 realisieren, 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