Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Asif Khan 1 SWT Seminar SS 05 – Pattern Creation Pattern Creation Seminar Softwaretechnik Veranstalter : Prof. Dr.-Ing. Stefan Jähnchen Dipl.-Inform. Susanne.

Ähnliche Präsentationen


Präsentation zum Thema: "Asif Khan 1 SWT Seminar SS 05 – Pattern Creation Pattern Creation Seminar Softwaretechnik Veranstalter : Prof. Dr.-Ing. Stefan Jähnchen Dipl.-Inform. Susanne."—  Präsentation transkript:

1 Asif Khan 1 SWT Seminar SS 05 – Pattern Creation Pattern Creation Seminar Softwaretechnik Veranstalter : Prof. Dr.-Ing. Stefan Jähnchen Dipl.-Inform. Susanne Jucknath-John SS Gehalten von Asif Khan

2 Asif Khan 2 SWT Seminar SS 05 – Pattern Creation Gliederung Was ist ein Pattern? - Kurze Einführung Was ist Pattern Creation? Einführendes Beispiel Was ist überhaupt eine Factory? Creation Methods und Factory Methods Abstract and Concrete Factory Extract Factory, Static Factory Method Visualisierung Fazit und Literatur

3 Asif Khan 3 SWT Seminar SS 05 – Pattern Creation Einführung Ein Entwurfsmuster (engl. design pattern) beschreibt eine Lösung für ein Entwurfsproblem und stellt eine wiederverwendbare Vorlage zur Problemlösung dar. Entstanden ist der Ausdruck in der Architektur. In den letzten Jahren hat der Ansatz der Entwurfsmuster auch zunehmendes Interesse im Bereich der Mensch-Computer-Interaktion gefunden. In den 1970er Jahren hatte Christopher Alexander eine Sammlung von Entwurfsmuster zusammengestellt.

4 Asif Khan 4 SWT Seminar SS 05 – Pattern Creation Was ist ein Pattern (Muster) Pattern bestehen aus drei Teilen – Problem – Lösung – Kontext Patterns sind Lösungen zu Problemen in einer Kontext(z.B. Objekt Erzeugung in Java) Ein Problem ist das Wichtigste Teil eines Patterns Pattern-Sprachen sind Sammlungen von Patterns zu einem gemeinsamen Thema

5 Asif Khan 5 SWT Seminar SS 05 – Pattern Creation Refactoring to Patterns Gemeinsame Ziele – Lesbarkeit – Wartbarkeit Lösungsvorschläge – Einsatz von Pattern anstelle normalen Refactorings – Beispiel: Simplification OO-Refactoring – Beispiel: Refactoring der Konstruktoren

6 Asif Khan 6 SWT Seminar SS 05 – Pattern Creation Pattern Creation Multiple Konstruktoren in einer Klasse machen es schwer den richtigen Konstruktor aufzurufen. Extract Class - wird benutzt, um die Anzahl der Konstruktoren durch Refactoring zu reduzieren. Creation Method – ist entweder eine statische oder eine nicht statische Methode, die ein Objekt erzeugt.

7 Asif Khan 7 SWT Seminar SS 05 – Pattern Creation Bsp. Creation Method Loan + Loan(commitment, riskRating, maturity) + Loan(commitment, riskRating, maturity, expiry) + Loan(commitment, outstanding, riskRating, maturity, expiry) + Loan(capitalStrategy, commitment, riskRating, maturity, expiry) + Loan(capitalStrategy, commitment, outstanding, riskRating, maturity, expiry) Loan - Loan(capitalStrategy, commitment, outstanding, riskRating, maturity, expiry) + createTermLoan(commitment, riskRating, maturity) : Loan + createTermLoan(capitalStrategy, commitment, outstanding, riskRating, maturity) : Loan + createRevolver(commitment, outstanding, riskRating, maturity, expiry) + Loan(capitalStrategy, commitment, riskRating, maturity, expiry) + Loan(capitalStrategy, commitment, outstanding, riskRating, maturity, expiry)

8 Asif Khan 8 SWT Seminar SS 05 – Pattern Creation Konstruktor Jeder Konstruktor sollte sicherstellen, daß das Objekt vollständig und sinnvoll initialisert ist Andersfalls, wirft er eine Exception Problem: Viele Klassen verlassen sich darauf, dass die Felder ihrer Instanzen bestimmte Bedingungen genügen Bsp. Lesen einer Datei, wenn es nicht existiert

9 Asif Khan 9 SWT Seminar SS 05 – Pattern Creation Bsp.: LizenzManager Klasse // unsichere Implementierung: Erzeugung und Initialisierung sind getrennt public class LizenzManager { private Date gueltigBis; private String typ; // Default-Konstruktor wird vom Compiler generiert, und neue // Instanzen werden nicht initialisiert public boolean istLizenzGueltig () { return gueltigBis.after (new Date ()); } public String getNachricht () { return "Lizenz " + typ +" gültig bis " + gueltigBis; } public void readLizenzDatei (String dateiname) throws IOException {... // Code zum Einlesen der Lizenzdatei }

10 Asif Khan 10 SWT Seminar SS 05 – Pattern Creation LizenzManager (2) LizenzManager mgr = new LizenzManager (); try { mgr.readLizenzDatei ("license.dat"); } catch (IOException exc) {...} Was passiert, wenn beim Lesen der Datei eine Exception auftaucht, so dass das mgr Objekt nur halb initialisiert ist? Lösung: Stelle sicher, dass jeder Konstruktor der Klasse das Objekt vollständig initialisiert und andernfalls eine Exception wirft.

11 Asif Khan 11 SWT Seminar SS 05 – Pattern Creation Erweiterte LizenzManager Klasse // sichere Implementierung: Konstruktor stellt die Initialisierung sicher public class LizenzManager { private Date _gueltigBis; private String _typ; // Initialisierender Konstruktor, weil kein Default-Konstruktor erzeugt wird, ist dies der einzige Konstruktor, und // das Objekt wird initialisiert public LizenzManager (String typ, Date gueltigBis) { _typ = typ; _gueltigBis = gueltigBis; } public boolean istLizenzGueltig () { return _gueltigBis.after (new Date ()); } public String getNachricht () { return "Lizenz " + _typ +" gültig bis " + _gueltigBis; } public void readLizenzDatei (String dateiname) throws IOException {... // Code zum Einlesen der Lizenzdatei }

12 Asif Khan 12 SWT Seminar SS 05 – Pattern Creation Creation Method Je mehr Konstruktoren, desto höher ist die Wahrscheinlichkeit den falschen Konstruktor aufzurufen. Zusammen mit nicht aufgerufenen Konstruktoren scheint der Code komplizierter zu sein (aus Sicht eines Entwicklers) Die Creation Method löst solche Probleme Konstrucktoren können explizit benannt werden – createTermLoan(......) // Konstruktor von Loan – createRevolver(.....) // Konstruktor von Loan

13 Asif Khan 13 SWT Seminar SS 05 – Pattern Creation Creation Methods und Factory Methods Creation Method – eine statische oder nicht statische Methode, die Objeke einer Klasse erzeugt Factory Method – ist eine nicht statische Methode in einer Basis Klasse (Base class) und wird für polymporph creation verwendet Alle Factory Methoden sind auch Creation Methoden aber nicht alle Creation Methoden sind auch Factory Methoden

14 Asif Khan 14 SWT Seminar SS 05 – Pattern Creation Factory : Abstract and Concrete > NodeFactory createStringNode(...) : StringNode StandardNodeFactory createStringNode(...) : StringNode DecodingNodeFactory createStringNode(...) : StringNode return new StringNode(...); return new DecodingStringNode(new StringNode(...));

15 Asif Khan 15 SWT Seminar SS 05 – Pattern Creation Extract Factory Eine Klasse mit mehreren Creation Methoden kann die Klasse schnell von seiner Hauptaufgaben ablenken. Eine mögliche Refactoring sieht so aus: Loans Loan #Loan(...) +newAdvisor(...) +newRCTL(...) +newTermLoan(...) +newVariable(...) +newRevolver(...) +calcCapital(...) +calcIncome(...) +calcROC(...) +setOutstanding(...) Loans LoanFactory Loan #Loan(...) +calcCapital(...) +calcIncome(...) +calcROC(...) +setOutstanding(...) +newAdvisor(...) +newRCTL(...) +newTermLoan(...) +newVariable(...) +newRevolver(...)

16 Asif Khan 16 SWT Seminar SS 05 – Pattern Creation Static Factory Method Oft bieten statische create – Methoden eine bessere Kapselung der Erzeugung von Instanzen als die Konstruktoren Problem: Um neue Objekte zu erzeugen, benutzt man das Schlüsselwort new. Im folgenden Beispiel wird verschiedene Arten von Personen erzeugt. Person boss = new Manager ("Bill Gates"); Person mitarbeiter = new Mitarbeiter ("John Smith") Es gibt eine Vererbungshierarchie. Manager und Mitarbeiter Klassen sind aus der Klasse Person vererbt Das ist aus Perspektive des Creation Interface keine gute Lösung -> mangelnde Übersichtlichkeit

17 Asif Khan 17 SWT Seminar SS 05 – Pattern Creation Static Factory Method... Lösung: Füge statische create- Methode ein. Die Namen der Methoden können so ausgewählt werden, dass sie den Quellcode zusätzlich Dokumentieren Der code, der Objekte erzeugt, kann sich nur auf die Absicht konzentrieren public class Person {... public static Person createManager (String name) { return new Manager (name); }

18 Asif Khan 18 SWT Seminar SS 05 – Pattern Creation Static Factory Method... public static Person createMitarbeiter (String name) { return new Mitarbeiter (name); }... } Der code sieht jetzt etwas anders aus.... Person boss = Person.createManager("Bill Gates"); Person mitarbeiter = Person.createMitarbeiter("John Smith");

19 Asif Khan 19 SWT Seminar SS 05 – Pattern Creation Visualisierung und Creation Pattern Bei wenigen Klassen: – UML Klassenmodell (mit Methoden) Bei grossen Systemen: – Klassenmodell allgemein als Graph – Knotengröße abhängig von der Anzahl der Methoden oder der Konstruktoren

20 Asif Khan 20 SWT Seminar SS 05 – Pattern Creation Visualisierung – Java API Quelle: swt.cs.tu-berlin.de/lehre/vsp/ss04

21 Asif Khan 21 SWT Seminar SS 05 – Pattern Creation Fazit Patterns sind Lösungen zu Problemen in einer Kontext Refactoring spielt eine wichtige Rolle in Softwareentwicklung Gemeinsame Ziele sind Wartbarkeit und Lesbarkeit Eine Creation Method ist eine statische / nicht statische Methode, die Objekte einer Klasse erzeugt Factory Methoden sind nicht statische Methoden und werden für polymorph creation verwendet

22 Asif Khan 22 SWT Seminar SS 05 – Pattern Creation Links und Literatur Refactoring To Patterns: Joshua Kerievsky, Addison-Wesley, ISBN Refactoring Home Page, Eine Pattern Sprache zur Erzeugung von Objekten, Arno Haase Consulting,


Herunterladen ppt "Asif Khan 1 SWT Seminar SS 05 – Pattern Creation Pattern Creation Seminar Softwaretechnik Veranstalter : Prof. Dr.-Ing. Stefan Jähnchen Dipl.-Inform. Susanne."

Ähnliche Präsentationen


Google-Anzeigen