Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Allgemeine Befehle für die allgemeine Liste

Ähnliche Präsentationen


Präsentation zum Thema: "Allgemeine Befehle für die allgemeine Liste"—  Präsentation transkript:

1 Allgemeine Befehle für die allgemeine Liste

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

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

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

5 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);

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

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

8 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);

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


Herunterladen ppt "Allgemeine Befehle für die allgemeine Liste"

Ähnliche Präsentationen


Google-Anzeigen