Datenstrukturen und Softwareentwicklung

Slides:



Advertisements
Ähnliche Präsentationen
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Advertisements

Kapitel 5. Stacks und Queues
Gliederung Motivation / Grundlagen Sortierverfahren
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)

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 Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
2. Die rekursive Datenstruktur Baum 2
1. Die rekursive Datenstruktur Liste 1.1 Warteschlange (Queue)
1.2 Trennung von Struktur und Inhalt
1.6 Die Datenstruktur Stapel Ein Stapel (Stack) ist ein Sonderfall einer Liste. Die Elemente werden nach dem Prinzip LIFO (Last In First Out) angefügt.
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Eine Vokabelschlange. Schlangen in Anwendungsprogrammen Die Piktogramme von Personen, mit denen wir ursprünglich die Datenstruktur Schlange eingeführt.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Anforderungen an die neue Datenstruktur
Objektorientiertes Modellieren und Programmieren mit Java
Anforderungen an die neue Datenstruktur
Schlange und Stapel.
Konstruktoren.
Zwei Denkansätze zur Klasse Schlange
Musterlösung zur Klausur "Diskrete Mathematik" vom
Der Abschluss einer Schlange
Einführung in die Programmierung mit Java
verkettete Strukturen
Informatik 10 – 3. Bedingte Anweisungen
Allgemeine Befehle für die allgemeine Liste
Grundkurs Informatik 11-13
November 18 Informatik Kurse
6. Wiederholungen und Zählschleifen
Raphael Fischer Informatik II - Übung 03 Raphael Fischer
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Informatik 10 – 3. Bedingte Anweisungen
4. Modellieren und Diagrammarten
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.
Polymorphie Überladen
Objektorientiertes Modellieren und Programmieren mit Java
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
2. Vererbung und Kapselung
Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein.
1. Die rekursive Datenstruktur Liste 1
2. Die rekursive Datenstruktur Baum 2.2 Suchen und Einfügen
9. Vererbung und Polymorphie
Implementieren von Klassen
Felder in der Informatik
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
2.4 Durchlaufen von Bäumen
1. Die rekursive Datenstruktur Liste 1
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
Informatik Softwareentwicklung – 4.2 Diagramme
Juli 19 Informatik Kurse
Informatik II – Übung 4 Gruppe 3
2. Die rekursive Datenstruktur Baum 2.3 Baum und Kompositum
 Präsentation transkript:

Datenstrukturen und Softwareentwicklung Informatik 11 Datenstrukturen und Softwareentwicklung

1. Die rekursive Datenstruktur Liste 1 1. Die rekursive Datenstruktur Liste 1.1 Die Datenstruktur Warteschlange In einer Warteschlange (französisch: Queue) an einer Kasse im Supermarkt geschieht das Verlassen und Einreihen nach dem Prinzip “First In, First Out“ (FIFO): Wer sich zuerst in die Schlange einreiht, verlässt sie auch als erster wieder. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange

Autos an einer Zapfsäule Taxis an einem Taxistand Andere Beispiele, bei denen das Prinzip FIFO möglich (aber nicht zwingend) ist: Autos an einer Zapfsäule Taxis an einem Taxistand Patienten im Wartezimmer Prozesse in einem Computerbetriebssystem Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange

Die Situation „Warteschlange mit Taxis“ soll mithilfe eines Feldes (Array) modelliert und implementiert werden. Erweitertes Klassendiagramm: Hinweis: Im Klassendiagramm kann ähnlich wie in JAVA der Datentyp,die Referenzklasse und der Rückgabebezeichner zuerst stehen int taxiAnzahl Taxi[] taxischlange void hintenAnstellen(Taxi) ... Aggregation, d.h. ein Objekt von TaxiWarteschlange referenziert mehrere Objekte von Taxi. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange

Übung 1 Implementieren einer Warteschlange als Array Implementiere nach dem Klassendiagramm die beiden Klassen Taxi und Taxischlange. Alle Attribute haben den Sichtbarkeitsmodifikator private. Im Konstruktor von TaxiWarteschlange wird ein leeres Feld mit 6 Plätzen erzeugt, für Taxi genügt der Standardkonstruktor. Die Methode schlangeAusgeben() listet in einer Zeile die Taxikennzeichen auf.  Erzeuge einige Objekte und teste dein Programm ausführlich. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange

Probleme bei der Modellierung als Feld (Array): Die Anzahl der Feldlänge ist nicht variabel. Nicht benötigte Feldplätze beanspruchen Speicherplatz. Die Umsortierung (z.B. bei remove) der Referenzen auf die Feldplätze kann unnötig komplex werden. Modellierung nicht ganz korrekt, da es Referenzen auf alle Elemente gibt. (eigentlich benötigt man nur den Anfang und evt. das Ende der Schlange) Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange

„hat als Nachfolger“ ist eine rekursive Beziehung. Modellierung der Situation „Patienten im Wartezimmer“ als Warteschlange: hat als Ende > 0..1 Warteschlange Patient hat als Anfang > 0..1 hat als Nachfolger > 0..1 „hat als Nachfolger“ ist eine rekursive Beziehung. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange

Übung 2 Implementieren einer Warteschlange Implementiere nach dem Klassendiagramm die beiden Klassen Warteschlange und Patient. Die Methode informationAusgeben() von Warteschlange soll die Methode informationAusgeben() des ersten Patienten in der Schlange aufrufen. Erzeuge einige Objekte und teste dein Programm ausführlich. Ergänze die Klasse Warteschlange um eine Methode alleInformationenAusgeben(), die die Namen aller Patienten in der Schlange in ihrer Reihenfolge ausgibt. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange

Übung 2 Implementieren einer Warteschlange – Beschreibung der Klassen Klasse Patient String name (eindeutiger) Nachname des Patienten Patient nachfolger Referenz auf den Nachfolger in der Warteschlange Patient(String name) Konstruktor mit dem Übergabeparameter name. Der Nachfolger ist noch unbestimmt und wird auf null gesetzt. void nachfolgerSetzen(Patient nf) Setzt den Nachfolger des Patienten in der Warteschlange fest. Patient nachfolgerGeben() Sondierende Methode, die den Nachfolger des Patienten zurückgibt. void informationAusgeben() Schreibt den Namen des Patienten in ein Textfenster. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange

Übung 2 Implementieren einer Warteschlange – Beschreibung der Klassen Klasse Warteschlange Patient anfang, ende Referenzen auf den Anfang und auf das Ende der Warteschlange. Die Referenz auf das Ende ist dabei nicht zwingend notwendig. (Übung 2c) Warteschlange() Konstruktor; anfang und ende werden auf null gesetzt. void einfuegen(Patient patientNeu) Fügt die Referenz auf einen neuen Patienten am Ende der Wartschlange ein. Ist die Warteschlange nicht leer, erhält ende patientNeu als neuen Nachfolger. Ist die Warteschlange leer, werden anfang und ende auf patientNeu gesetzt. Patient entfernen() Entfernt den ersten Patienten in der Warteschlange und gibt ihn zurück. Ist die Warteschlange nicht leer, so wird anfang neu gesetzt und zwar auf seinen Nachfolger. Für den Fall, dass nur ein Patient vor dem Entfernen in der Schlange war, muss ende auf null gesetzt werden. void informationAusgeben() Ruft die Methode informationAusgeben() des ersten Patienten in der Schlange auf. void alleInformationenAusgeben() Ruft der Reihe nach jeweils die Methode informationAusgeben() des Patienten in der Schlange auf. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange

Übung 2 Testen der Implementierung Erzeuge einige Objekte von Patient, ein Objekt von Warteschlange und teste deine Methoden. Überprüfe auch die Sonderfälle leere Schlange und Schlange mit einem Patienten. Der folgende Sonderfall kann zu einem Fehler in der Schlange führen: Der aus der Schlange entfernte Patient reiht sich gleich wieder ein. Was passiert dann beim Aufruf der Methode alleInformationenAusgeben() ? Wie lässt sich dieser Fehler leicht beheben? Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange

Übung 2 Ändern der Modellierung, Implementierung c) Das Verwalten des Endes der Warteschlange ist nicht zwingend notwendig. Das Klassendiagramm zeigt die geänderte Modellierung. Die Methode endeGeben() durchläuft die Schlange solange bis der Nachfolger des aktuellen Elements null ist. Passe die Implementierung an die neue Modellierung an und teste ausführlich. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.1 Die Datenstruktur Warteschlange