Allgemeine Befehle für die allgemeine Liste

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Klassen - Verkettete Liste -
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Konzepte objektorientierter Systeme
Threads Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
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.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
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.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Command Pattern Karola Schäuble,
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
Informatikunterricht mit Java
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
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,
1.2 Attribute und Methoden Aufbau einer Java-Klasse:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
1.3 Klassen und Beziehungen
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Abstrakte Klassen und das Interface-Konzept
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Dr. Wolfram Amme, Generisches Programmieren, Informatik II, FSU Jena, SS Generisches Programmieren.
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.
Grafische Benutzeroberflächen mit Swing (2) Christoph Broschinski, Alexander Sczyrba Jan Krüger
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Die allgemeine Liste.
Anforderungen an die neue Datenstruktur
Schnittstellen.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Vererbung.
Venusspiegel und Marsschild
Zwei Denkansätze zur Klasse Schlange
Aufgaben zu Rückgabewerten
Der Abschluss einer Schlange
Wiederholungen mit Zähler
Einführung in die Programmierung mit Java
Die Klasse Vielfrass in Java
Klassen selbst programmieren
Felder in Java.
Grundkurs Informatik 11-13
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
SS 04 Christiane Rauh Christian Hellinger
Raphael Fischer Informatik II - Übung 08 Raphael Fischer
Grundkurs Informatik mit Java
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Polymorphie Überladen
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
Interfaces Definition von Interfaces Verwendung von Interfaces
2. Vererbung und Kapselung
«Delegierter» Methoden Schablone Funktionszeiger
1. Die rekursive Datenstruktur Liste 1
9. Vererbung und Polymorphie
Implementieren von Klassen
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
Juli 19 Informatik Kurse
 Präsentation transkript:

Allgemeine Befehle für die allgemeine Liste

Einträge können zum Beispiel Personen sein. Grundidee Eintrag Eigenschaft Befehl IstPerson IstWeiblich Schwebe FaerbeHaare Setze Kleiderfarbe Person Wir wollen Befehle programmieren, die auf die Einträge der Liste wirken. Manchmal wollen wir die Befehle nicht für alle, sondern nur für bestimmte Listeneinträge ausführen und brauchen daher Eigenschaften, die die Einträge kennzeichnen. Einträge können zum Beispiel Personen sein. Dann müssen wir für Personen alle gewünschten Befehle und Eigenschaften als Unterklassen der Schnittstellen Befehl und Eigenschaft implementieren.

Die Schnittstelle Eigenschaft public interface Eigenschaft { boolean hatEigenschaft (Eintrag dieserEintrag); } Die Schnittstelle stellt die Methode hatEigenschaft () zur Verfügung, mit der geprüft wird, ob dieserEintrag eine bestimmte Eigenschaft hat oder nicht.

Eine konkrete Eigenschaft von Personen public class IstBlondine implements Eigenschaft { public boolean hatEigenschaft (Eintrag dieserEintrag) if (dieserEintrag instanceof Person) return ((Person) dieserEintrag).istBlondine (); } else return false; Die Eigenschaft IstBlondine programmieren wir nun als Unterklasse der Schnittstelle Eigenschaft. Unsere einzige Aufgabe ist dabei, die Methode hatEigenschaft () zu implementieren. Dazu prüfen wir zuerst, ob dieserEintrag eine Person ist, betrachten dieserEintrag als Person und rufen die Methode istBlondine () der Klasse Person auf.

Die Eigenschaft beim Zählen in der Liste Liste: public int zaehle (Eigenschaft eigenschaft) { return erstesListenelement.zaehle (eigenschaft); } Listenelement: public abstract int zaehle (Eigenschaft eigenschaft); Abschluss: public int zaehle (Eigenschaft eigenschaft) return 0; Knoten: public int zaehle (Eigenschaft eigenschaft) if (eigenschaft.hatEigenschaft (inhalt)) return 1 + nachfolger.zaehle (eigenschaft); else return nachfolger.zaehle (eigenschaft);

Die Schnittstelle Befehl public interface Befehl { void fuehreAus (Eintrag dieserEintrag, String[] zeichenkette); } Die Schnittstelle stellt die Methode fuehreAus () zur Verfügung, mit der dieserEintrag den Befehl erhält. Als Parameter wird noch ein Feld von Zeichenketten mitgeschickt. Dadurch ist es möglich, den Befehl durch 0; 1; 2; 3; … zusätzliche Zeichenketten zu präzisieren.

Ein konkreter Befehl für Personen public class SetzeKleiderfarben implements Befehl { public void fuehreAus (Eintrag dieserEintrag, String[] neueFarben) if (dieserEintrag instanceof Person) if (neueFarben.length >= 3) ((Person) dieserEintrag).setzeKleiderfarben (neueFarben[0], neueFarben[1], neueFarben[2]); } Den Befehl SetzeKleiderfarben programmieren wir als Unterklasse der Schnittstelle Befehl. Wir müssen die Methode fuehreAus () implementieren. Dazu prüfen wir zuerst, ob dieserEintrag eine Person ist und ob mindestens drei neue Farben genannt sind. Dann betrachten wir dieserEintrag als Person und rufen die Methode setzeKleiderfarben () der Klasse Person mit den ersten drei neuen Farben auf.

Die Befehlsausführung in der Liste Liste: public void fuehreAusFuer (Eigenschaft eigenschaft, Befehl befehl, String[] zeichenkette) { erstesListenelement.fuehreAusFuer (eigenschaft, befehl, zeichenkette); } Listenelement: public abstract void fuehreAusFuer (Eigenschaft eigenschaft, Befehl befehl, String[] zeichenkette); Abschluss: public void fuehreAusFuer (Eigenschaft eigenschaft, Knoten: public void fuehreAusFuer (Eigenschaft eigenschaft, if (eigenschaft.hatEigenschaft (inhalt)) befehl.fuehreAus (inhalt, zeichenkette); nachfolger.fuehreAusFuer (eigenschaft, befehl, zeichenkette);

Beispiele für Eigenschaften und Befehle zaehle (new IstBlondine ()); fuehreAusFuer (new IstWeiblich (), new Schwebe (), {}); fuehreAusFuer (new IstMaennlich (), new Sinke (), {}); fuehreAusFuer (new IstWeiblich (), new FaerbeHaare (), {"rot"}); fuehreAusFuer (new IstPerson (), new SetzeKleiderfarben (), {"rot", "gelb", "gruen"}); fuehreAusFuer (new IstAnzugtraeger (), new SetzeSchuhfarbe (), {"schwarz"}); Theoretisch bräuchten wir nicht jedesmal ein Eigenschafts- oder Befehlsobjekt mit new neu erzeugen, sondern könnten es auch wiederverwerten, um Speicherplatz zu sparen. Die Grundidee, Eigenschaften und Befehle in eigenen Klassen zu speichern, um sie austauschen zu können, bezeichnet man als das Entwurfsmuster „Strategie“.