Prof. Dr. Wolfgang Schramm Vorlesung Zusatzmaterialien zu 3. Kapitel: Einsatz der erlernten Techniken: Abstrakte Klassen & Interfaces Techniken T h ik der d Programmentwicklung Einsetzen der erlernten Techniken Es gibt ein Entensimulationsspiel SimEnte: D S Das Spiel i l zeigt i t eine i Vi Vielzahl l hl von E Entenarten, t t di die h herumschwimmen h i und d Quak-Geräusche von sich geben. Das Klassenmodell von SimEnte: Ente quaken() schwimmen() anzeigen() // andere …. StockEnte anzeigen() anzeigen() // zeigt Stockente // zeigt Moorente Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 1 MoorEnte Weitere Enten [Freeman&Freeman: Entwurfsmuster von Kopf bis Fuß] © Prof. Dr. Wolfgang Schramm HS Mannheim Einsetzen der erlernten Techniken Erweiterung: Enten sollen auch fliegen können. Ente quaken() Problem? schwimmen() anzeigen() fliegen() // andere …. StockEnte MoorEnte anzeigen() anzeigen() // zeigt Stockente // zeigt Moorente Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 2 © Prof. Dr. Wolfgang Schramm HS Mannheim Einsetzen der erlernten Techniken Ente quaken() schwimmen() anzeigen() fliegen() // andere …. StockEnte MoorEnte GummiEnte anzeigen() anzeigen() quaken() { // zeigt Stockente // zeigt Moorente // zu quietschen // überschreiben } anzeigen() // zeigt Gummiente Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 3 © Prof. Dr. Wolfgang Schramm HS Mannheim Einsetzen der erlernten Techniken Idee: Überschreiben der Methode fliegen() – so wie bei quaken.(). GummiEnte Problem gelöst? quaken() { LockEnte // zu quietschen // überschreiben quaken() { } fli fliegen() () { // so überschreiben, // so überschreiben, } fliegen() { // dass sie nichts tun // dass sie nichts tun } anzeigen() // so überschreiben, g Gummiente // zeigt } anzeigen() // dass sie nichts tun … und immer so weiter? Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 4 // zeigt Lockente © Prof. Dr. Wolfgang Schramm HS Mannheim Einsetzen der erlernten Techniken Idee: Herausziehen der Methode fliegen() aus der Oberklasse Ente in ein Interface FlugFähig – ebenso bei quaken() Interface QuakFähig Ente Problem gelöst? schwimmen() FlugFähig fliegen() StockEnte anzeigen() // andere …. MoorEnte QuakFähig quaken() GummiEnte anzeigen() anzeigen() anzeigen() quaken() quaken() quaken() fliegen() fliegen() Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 5 © Prof. Dr. Wolfgang Schramm HS Mannheim Einsetzen der erlernten Techniken Bekannt: fliegen() und quaken() sind diejenigen Teile des Klasse Ente, die über die Enten hinweg variieren variieren. Idee: Diese beiden Verhalten müssen von der Klasse Ente getrennt werden Herausziehen der beiden Methoden aus der Klasse Ente und erstellen eines neuen Satzes von Klassen für das jeweilige Verhalten. Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 6 © Prof. Dr. Wolfgang Schramm HS Mannheim Einsetzen der erlernten Techniken <<Interface>> <<Interface>> FlugVerhalten g QuakVerhalten quaken() fliegen() FliegtMitFlügeln Quaken Q FliegtGarNicht Quietschen Qu e sc e fliegen() { fliegen() { quaken() { quaken() { // Implementiert // Entenfliegen // nichts tun – kann // nicht fliegen // Implementiert // Entenquaken } } } // Implementiert // Gummienten Gummienten// quietschen } StummesQuaken quaken() { // nichts tun } Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 7 © Prof. Dr. Wolfgang Schramm HS Mannheim Einsetzen der erlernten Techniken • • • • Andere Typen von Objekten können das Flug- und Quakverhalten wiederverwenden weil diese Verhalten nicht mehr in der Entenklasse wiederverwenden, verborgen sind. Man kann einfach neue Verhalten hinzufügen, ohne irgendeine bestehende Verhaltenklasse oder eine der Entenklassen zu ändern ändern, welche die Flugverhalten nutzen. Eine Ente delegiert ihr Flug- und Quakverhalten. Es ist möglich, ö das Verhalten einer Ente dynamisch zu verändern! ä Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 8 © Prof. Dr. Wolfgang Schramm HS Mannheim Einsetzen der erlernten Techniken Verhaltensvariablen werden d mit it Interface-Typ deklariert Ente FlugVerhalten flugVerhalten Instanzenvariablen halten zurr Laufzeit La f eit eine Referenz auf ein spezifisches Verhalten QuakVerhalten quakVerhalten Diese Methode ersetzen fliegen() und quaken() tuQuaken() ttuFliegen() Fli () schwimmen() anzeigen() // andere …. Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 9 © Prof. Dr. Wolfgang Schramm HS Mannheim Einsetzen der <<Interface>> erlernten Techniken Gekapseltes G k lt Flugverhalten FlugVerhalten Strategy-Pattern fliegen() Ente FlugVerhalten flugVerhalten QuakVerhalten quakVerhalten fliegen() g () { fliegen() g () { // Implementiert // Entenfliegen // nichts tun – kann // nicht fliegen } } tuQuaken() tuFliegen() schwimmen() anzeigen() setQuakVerhalten() setFlugVerhalten () StockEnte anzeigen() FliegtGarNicht FliegtMitFlügeln Client MoorEnte anzeigen() Gekapseltes Quakverhalten <<Interface>> QuakVerhalten quaken() Quaken Quietschen GummiEnte quaken() { quaken() { anzeigen() // Implementiert // Entenquaken // Implementiert // Gummienten// quietschen } } Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 10 Algorithmen © Prof. Dr. Wolfgang Schramm HS Mannheim Strategy-Pattern • • Das Strategy-Pattern definiert eine Familie von Algorithmen, kapselt sie einzeln und macht sie austauschbar austauschbar. Das Strategy-Pattern ermöglicht es, den Algorithmus unabhängig von den Clients, die ihn einsetzen, variieren zu lassen. Techniken der Programmentwicklung Kapitel 3 (Zusatz) Folie 11 © Prof. Dr. Wolfgang Schramm HS Mannheim
© Copyright 2025 ExpyDoc