Markus Knauß, Entwurfsmuster. Markus Knauß Entwurfsmuster

Größe: px
Ab Seite anzeigen:

Download "Markus Knauß, Entwurfsmuster. Markus Knauß Entwurfsmuster"

Transkript

1 Markus Knauß 1

2 Motivation helfen nicht nur bei der Erstellung eines Entwurfs, sie sind auch nützlich, um ein bestehendes Programm neu zu strukturieren. In den kommenden zwei Vorlesungsterminen wird ein bestehendes Programm mit n neu strukturiert. 2

3 Ziele Praktische Anwendung eines s Erkennen der Vorteile und Nachteile von n Überblick über objektorientierte Konzepte und 3

4 Geburtstagskalender Nutzung einer Datenbank für die Speicherung der Eintragungen eines Geburtstagskalenders. 4

5 Inhalt Java Database Connectivity (JDBC) Objektorientierte Konzepte Template Method Pattern Geburtstagskalender mit n Zusammenfassung Literatur und Links 5

6 Java Database Connectivity (JDBC) JDBC bietet eine plattformunabhängige Schnittstelle für die Nutzung von Datenbanken in Java-Programmen. Das JDBC-API definiert Interfaces, welche die zentralen Datenbankfunktionen kapseln. Verbinden mit einer Datenbank Eine Anweisung ausführen Ergebnisse einer Anweisung auswerten 6

7 JDBC Übersicht ResultSet erzeugt erzeugt erzeugt Statement PreparedStatement CallableStatement erzeugt Connection implementiert erzeugt DriverManager java.sql.* implementiert herstellerspezifischer Datenbanktreiber Datenbank JDBC-ODBC Brücke ODBC Treiber greift zu auf greift zu auf 7

8 java.sql.driver Ein Datenbankanbieter, der eine JDBC-Implementierung anbieten möchte, muss eine eigene Implementierung für das Interface java.sql.driver liefern. Der JDBC DriverManager (java.sql.drivermanager) verwaltet in einer JVM verfügbare Datenbanktreiber (java.sql.driver) und bietet Zugriff auf die Funktionen der verfügbaren Treiber. Um einen Treiber in der JVM verfügbar zu machen, muss dessen implementierende Klasse mit dem Klassenlader geladen werden. Hinweis: Der DriverManager ist ein Broker, der Zugriff auf die Driver-Implementierungen erlaubt. Driver-Implementierungen sind Factories für den Zugriff auf eine Datenbank. 8

9 JDBC am Beispiel // Datenbanktreiber laden Class.forName( "org.apache.derby.jdbc.embeddeddriver"); // Verbindung zur Datenbank herstellen Connection con = DriverManager.getConnection( "jdbc:derby:/users/knaussms/tmp/address"); // Auszuführende Anweisung erstellen Statement stmt = con.createstatement(); // Anweisung ausführen ResultSet rs = stmt.executequery( "SELECT * FROM persons"); // Ergebnisse auswerten while (rs.next()) { int id = rs.getint("id"); String firstname = rs.getstring("first_name"); String lastname = rs.getstring("last_name"); Date dateofbirth = rs.getdate("date_of_birth"); DateFormat dateformat = DateFormat.getDateInstance(DateFormat.MEDIUM); System.out.println(Integer.toString(id) + ": " + firstname + " " + lastname + ", " + dateformat.format(dateofbirth)); // Verbindung zur Datenbank schließen con.close(); SimpleJDBC.java Die einzige herstellerspezifische Anweisung ist das Laden des Datenbanktreibers. Konfigurationsspezifische Anweisungen sind das Verbinden mit der Datenbank und der Zugriff auf Tabellen und Spalten. Alle weiteren Befehle sind unabhängig von der verwendeten Datenbank. 9

10 Einschub: PersonDB <<interface>> IPerson +setfirstname(firstname:string) +getfirstname():string +setlastname(lastname:string) +getlastname():string +setdateofbirth(dateofbirth:calendar) +getdateofbirth():calendar PersonBean -firstname:string -lastname:string -dateofbirth:calendar PersonDB <<interface>> IDBObject +getid():int Die Klasse PersonDB implementiert alle Funktionen für die Speicherung, das Laden, das Ändern und das Löschen von Geburtstagskalender- Einträgen in einer Datenbank. -id:int +create(person:iperson):persondb +read(id:int):persondb +select(qbe:iperson):list<persondb> +read() +update() +delete() implementiert erbt von 10

11 Aufgabe Markieren Sie die einzelnen Schritte für den Datenbankzugriff in den Methoden create, read, update, delete und select der Klasse PersonDB. Welche Anweisungssequenzen können Sie identifizieren? Welche Teile der Sequenzen sind gleich, wo unterscheiden sie sich? con = DriverManager.getConnection(DB_URL); PreparedStatement ps = con.preparestatement(delete_stmt); ps.setint(1, getid()); ps.execute(); con.close(); PersonDB.java Mit Datenbank verbinden Statement erstellen Statement intialisieren und ausführen Verbindung schließen 11

12 Beispiel einer Lösung: Gleichbleibende Anweisungssequenzen public void read() { Connection con = null; try { con = DriverManager.getConnection(DB_URL); PreparedStatement ps = con.preparestatement(read_stmt); ps.setint(1, getid()); ResultSet rs = ps.executequery(); while (rs.next()) { setfirstname(rs.getstring("fist_name")); setlastname(rs.getstring("last_name")); setdateofbirth(tocalendar(rs.getdate("date_of_birth"))); catch (SQLException e) { log.log(level.severe, e.getmessage(), e); finally { if (con!= null) { try { con.close(); catch (SQLException e) { log.log(level.severe, e.getmessage(), e); Verbindung herstellen Statement erstellen und initialisieren Statement ausführen Resultate auswerten Verbindung schließen 12

13 Beispiel einer Lösung: Unterschiede public void read() { Connection con = null; try { con = DriverManager.getConnection(DB_URL); PreparedStatement ps = con.preparestatement(read_stmt); ps.setint(1, getid()); ResultSet rs = ps.executequery(); while (rs.next()) { setfirstname(rs.getstring("fist_name")); setlastname(rs.getstring("last_name")); setdateofbirth(tocalendar(rs.getdate("date_of_birth"))); catch (SQLException e) { log.log(level.severe, e.getmessage(), e); finally { if (con!= null) { try { con.close(); catch (SQLException e) { log.log(level.severe, e.getmessage(), e); Statements Initialisierung Auswertung 13

14 Inhalt Java Database Connectivity (JDBC) Objektorientierte Konzepte Template Method Pattern Geburtstagskalender mit n Zusammenfassung Literatur und Links 14

15 Klassen ModelFactory -instance:modelfactory +getinstance():modelfactory Eine Klasse ist eine Schablone für Objekte, die aus der Klasse erzeugt werden können. Jede Klasse existiert nur einmal in einem laufenden Programm. Eine Klasse kann einen Zustand haben und Methoden anbieten. 15

16 Objekte Person -firstname:string -lastname:string -dateofbirth:calendar +getfirstname():string +setfirstname(firstname:string) +getlastname():string +setlastname(lastname:string) +getdateofbirth():calendar +setdateofbirth(dateofbirth:calendar) JaggerMick:Person RichardsKeith:Person Objekte werden aus Klassen erzeugt (instantiiert). Aus jeder Klassen können beliebig viele Objekte erzeugt werden. Jedes Objekt hat eine Identität und einen Zustand. -firstname= Mick -lastname= Jagger -dateofbirth=' ' -firstname= Keith -lastname= Richards -dateofbirth=' ' 16

17 Vererbung Person -firstname:string -lastname:string -dateofbirth:calendar +getfirstname():string +setfirstname(firstname:string) +getlastname():string +setlastname(lastname:string) +getdateofbirth():calendar +setdateofbirth(dateofbirth:calendar) PersonBean -id:int PersonDB Vererbung drückt eine ist ein - Beziehung aus. Objekte von erbenden Klassen können an Stelle von Objekten der vererbenden Klasse verwendet werden. List<Person> persons = new ArrayList<Person>(); public void store(person person) { persons.add(person); +create(person:iperson):persondb +read(id:int):persondb +select(qbe:iperson):list<persondb> +read() +update() +delete() public static void main(string[] args) { PersonBean personbean = new PersonBean(); PersonDB persondb = new PersonDB(); store(personbean); store(persondb); 17

18 Polymorphie Erbende Klassen können Methoden überschreiben. Durch das Überschreiben kann das Verhalten einer Methode verändert werden. Polymorphie = Vielgestaltigkeit, Verschiedengestaltigkeit 18

19 Polymorphie Person -firstname:string +getfirstname():string +setfirstname(firstname:string) public String getfirstname() { read(); return firstname; public void setfirstname(string firstname) { this.firstname = firstname; update(); public String getfirstname() { return firstname; PersonBean +getfirstname():string +setfirstname(firstname:string) PersonDB +getfirstname():string +setfirstname(firstname:string) +read() +update() public void setfirstname(string firstname) { this.firstname = firstname; 19

20 Abstrakte Klassen, abstrakte Methoden Person +getfirstname():string +setfirstname(firstname:string) +getlastname():string +setlastname(lastname:string) +getdateofbirth():calendar +setdateofbirth(dateofbirth:calendar) PersonBean -firstname:string -lastname:string -dateofbirth:calendar -id:int PersonDB DBObject +getid():int +read() +update() +delete() +create(person:iperson):persondb +read(id:int):persondb +select(qbe:iperson):list<persondb> Von abstrakten Klassen können keine Objekte erzeugt werden. Abstrakte Methoden haben keine Implementierung, sie müssen in der erbenden Klasse überschrieben werden. Abstrakte Methoden können nur in abstrakten Klassen deklariert werden. 20

21 Aufgabe Kapseln Sie die spezifischen Anweisungsteile der read- Methode in eigenen Methoden. Skizzieren Sie die Klasse DBStatement, in der die Methoden, in denen die spezifischen Anweisungsteile der read-methode zusammengefasst sind, mit einer Standardimplementierung realisiert sind. Skizzieren Sie die von DBStatement erbende Klasse ReadStatement, in der die Methoden mit den spezifischen Anweisungsteilen der read-methode enthalten sind. Überarbeiten Sie die Implementierung der read-methode so, dass nur die Methoden mit den spezifischen Anweisungsteilen aus der Klasse ReadStatement verwendet werden. 21

22 Beispiel einer Lösung: Klasse DBStatement public abstract class DBStatement { public abstract String getstatement(); public void initparameter(preparedstatement stmt) throws SQLException { public void evaluateresults(resultset rs) throws SQLException { DBStatement.java 22

23 Beispiel einer Lösung: Klasse ReadStatement public class ReadStatement extends DBStatement { private int id; private String firstname; private String lastname; private Calendar public String getstatement() { return "SELECT * FROM persons WHERE id public void initparameter(preparedstatement stmt) throws SQLException { stmt.setint(1, public void evaluateresults(resultset rs) throws SQLException { firstname = rs.getstring("fist_name"); lastname = rs.getstring("last_name"); dateofbirth = CalendarUtils.toCalendar(rs.getDate("date_of_birth")); // Get and set methods for attributes. ReadStatement.java 23

24 Beispiel einer Lösung: read()-methode private ReadStatement readstatement = new ReadStatement(); public void read() { Connection con = null; try { con = DriverManager.getConnection(DB_URL); PreparedStatement ps = con.preparestatement(readstatement.getstatement()); readstatement.setid(getid()); readstatement.initparameter(ps); ResultSet rs = ps.executequery(); while (rs.next()) { readstatement.evaluateresults(rs); catch (SQLException e) { log.log(level.severe, e.getmessage(), e); finally { if (con!= null) { try { con.close(); catch (SQLException e) { log.log(level.severe, e.getmessage(), e); PersonDB.java 24

25 Was wurde erreicht? Die Implementierung der speziellen Teile einer Datenbank- Anweisung können in eigenen Klassen gekapselt werden. Der Algorithmus für die Ausführung einer Anweisung ist in allen Methoden gleich! DBStatement +getstatement():string +initparameter(stmt:preparedstatement) +evaluateresults(rs:resultset) CreateStatement ReadStatement UpdateStatement DeleteStatement 25

26 Inhalt Java Database Connectivity (JDBC) Objektorientierte Konzepte Template Method Pattern Geburtstagskalender mit n Zusammenfassung Literatur und Links 26

27 Beobachtungen Die Abfolge der Schritte für den Datenbankzugriff via JDBC ist immer gleich. Verbindung zur Datenbank öffnen Anweisung erstellen Parameter initialisieren Anweisung ausführen Ergebnisse auswerten Verbindung zur Datenbank schließen Die Schritte unterscheiden sich in der ausgeführten Anweisung, den Parametern und der Auswertung der Ergebnisse. 27

28 Template Method Zweck Definiere einen Algorithmus in einer Methode. Delegiere einzelne Schritte an erbende Klassen. Die Verwendung einer Template Method ermöglicht es erbenden Klassen, bestimmte Schritte eines Algorithmus zu überschreiben, ohne die Struktur des Algorithmus zu ändern. 28

29 Template Method Motivation Zum Beispiel Datenbankzugriff via JDBC: Die Abfolge der Schritte für den Datenbankzugriff mit JDBC ist immer gleich. Die Inhalte der einzelnen Schritte, zum Beispiel die konkrete Anweisung oder die Auswertung der Ergebnisse, sind verschieden. 29

30 Template Method Anwendbarkeit Invariante Teile eines Algorithmus sollen genau einmal implementiert werden. Gemeinsames Verhalten soll in einer Klasse zusammengefasst werden. Kontrolle der Erweiterungen durch Vererbung 30

31 Template Method Lösung CreateStatement DBStatement +getstatement():string +initparameter(stmt:preparedstatement) +evaluateresults(rs:resultset) +execute() ReadStatement UpdateStatement DeleteStatement SelectStatement NextPrimaryKeyStatement -id:int PersonDB +create(person:iperson):persondb +read(id:int):persondb +select(qbe:iperson):list<persondb> +read() +update() +delete() 31

32 Template Method Lösung public final void execute() { Connection con = null; try { con = DriverManager.getConnection(DB_URL); PreparedStatement ps = con.preparestatement(getstatement()); initparameter(ps); ps.execute(); ResultSet rs = ps.getresultset(); if (rs!= null) { while (rs.next()) { evaluateresults(rs); catch (SQLException e) { log.log(level.severe, e.getmessage(), e); finally { if (con!= null) { try { con.close(); catch (SQLException e) { log.log(level.severe, e.getmessage(), e); DBStatement.java 32

33 Template Method Lösung public class PersonDB extends PersonBean implements IPerson, IDBObject { private static final CreateStatement createstatement = new CreateStatement(); private static final ReadStatement readstatement = new ReadStatement(); private static final NextPrimaryKeyStatement nextprimarykeystatement = new NextPrimaryKeyStatement(); //... public static PersonDB create(iperson person) { nextprimarykeystatement.execute(); int nextpk = nextprimarykeystatement.getnextprimarykey(); createstatement.setid(nextpk); createstatement.setfirstname(person.getfirstname()); createstatement.setlastname(person.getlastname()); createstatement.setdateofbirth(person.getdateofbirth()); createstatement.execute(); return new PersonDB(nextPK, person); public static PersonDB read(int id) { readstatement.setid(id); readstatement.execute(); return new PersonDB( id, readstatement.getfirstname(), readstatement.getlastname(), readstatement.getdateofbirth()); //... PersonDB.java 33

34 Template Methode Konsequenzen Gemeinsames Verhalten wird in einer Klasse gekapselt. Der Kontrollfluss wird invertiert, die vererbende Klasse ruft Methoden der erbenden Klasse auf. Es muss klar sein, welche Methoden überschrieben werden dürfen bzw. überschrieben werden müssen. 34

35 Template Methode Ähnliche und Verwandte Muster Factory, Factory Method: nutzt Template Method zur Objekterzeugung Strategy: Kapselung eines Algorithmus 35

36 Inhalt Java Database Connectivity (JDBC) Objektorientierte Konzepte Template Method Pattern Geburtstagskalender mit n Zusammenfassung Literatur und Links 36

37 Gamma et al. (1995) Das Buch der Gang of Four : Design Patterns: Elements of Reusable Object-Oriented Software, hat die bekannt gemacht und eine -Bewegung initiiert. Gamma, E., R. Helm, R. Johnson und J. Vlissides (1995): Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. In ihrem Buch dokumentieren die Autoren

38 Klassifizierung der Erzeugungsmuster Verstecken die Erzeugung von Objekten, wodurch ein Programm unabhängig von der Erzeugung, der Zusammensetzung und der Initialisierung seiner Objekte wird. Strukturmuster Fassen Klassen und Objekte in größeren Strukturen zusammen, wodurch ein zusammenhängendes System entsteht. Verhaltensmuster Kapseln Algorithmen und Zuständigkeiten, wodurch deren Nutzung unabhängig von der Implementierung wird. 38

39 Klassifizierung nach Gamma et al. (1995) Gültigkeitsbereich klassenbasiert objektbasiert Aufgabe Erzeugungsmuster Strukturmuster Verhaltensmuster Factory Method Adapter Interpreter (klassenbasiert) Template Method Abstract Factory Builder Prototyp Singleton Adapter (objektbasiert) Bridge Decorator Facade Flyweight Composite Proxy Command Observer Visitor Iterator Memento Strategy Mediator State Chain of Responsibility 39

40 Dokumentation eines s Name und Klassifizierung, Alternative Namen Zweck, Motivation Anwendbarkeit Struktur, Teilnehmer, Interaktion Konsequenzen Implementierung, Beispiel-Programmcode, Bekannte Verwendungen Verwandte 40

41 Erzeugungsmuster Abstract Factory: Definiert eine Schnittstelle, mit der Objekte abstrakter Klassen erzeugt werden können. Die Implementierung der abstrakten Klassen ist verborgen. Builder: Trennt die Erzeugung eines Objekts von dessen Repräsentation. Factory Method: Deklariert eine Schnittstelle für die Erzeugung von Objekten. Welche Objekte erzeugt werden, entscheidet die implementierende Klasse. Prototyp: Erzeugt Objekte durch kopieren eines Prototyps. Singleton: Garantiert, dass von einer Klasse nur ein Objekt erzeugt wird. 41

42 Strukturmuster Adapter: Passt die Schnittstelle einer Klasse an eine andere Schnittstelle an. Bridge: Entkoppelt eine Struktur von ihrer Implementierung. Decorator: Erweitert ein Objekt um Funktionen/Zuständigkeiten. Facade: Bietet eine einheitliche Schnittstelle für die Nutzung eines Teilsystems. Flyweight: Stellt Objekte zur gemeinsamen Verwendung zur Verfügung. Composite: Kombiniert Objekte in Baum-Strukturen. Proxy: Kontrolliert den Zugriff auf ein Objekt. 42

43 Verhaltensmuster Command: Kapselt einen Algorithmus in einem Objekt. Observer: Beobachtet den Zustand eines Objekts. Visitor: Kapselt die Operationen, die auf einer Objektstruktur ausgeführt werden, in einem Objekt. Interpreter: Wertet Ausdrücke, die entsprechend einer definierten Grammatik formuliert sind, aus. Iterator: Bietet sequenziellen Zugriff auf die Elemente einer Struktur. Memento: Speichert den Zustand eines Objekts. 43

44 Verhaltensmuster Template Method: Definiert das Skelett eines Algorithmus und bietet Erweiterungspunkte für die spezifische Anpassung. Strategy: Kapselt die Implementierung eines Algorithmus in einer Klasse. Mediator: Definiert ein Objekt, welches das Zusammenspiel mehrerer Objekte regelt. State: Definiert das Verhalten eines Objekts abhängig von seinem Zustand. Chain of Responsibility: Entkoppelt den Aufrufer einer Routine vom ausführenden Objekt. 44

45 Inhalt Java Database Connectivity (JDBC) Objektorientierte Konzepte Template Method Pattern Geburtstagskalender mit n Zusammenfassung Literatur und Links 45

46 im Geburtstagskalender Singleton Facade Abstract Factory Observer Flyweight Adapter 46

47 Singleton /** * Holds an instance of this class. */ private static Application instance = null; /** * Provides access to an instance of this class. */ public static Application getinstance() { if (instance == null) { instance = new Application(); return instance; Application.java Klassenvariable speichert einziges Objekt der Klasse. Auf die Klassenvariable kann unterschiedlich zugegriffen werden. Bei konkurrierenden Zugriffen muss darauf geachtet werden, dass nur ein Thread das Objekt erzeugen kann. 47

48 Singleton mit Thread-Synchronisation /** * Holds an instance of this class. */ private static Application instance = null; /** * Provides access to an instance of this class. */ public static Application getinstance() { if (instance == null) { synchronized (Application.class) { if (instance == null) { instance = new Application(); return instance; Application.java Double Checked Locking Muster Threads werden nur synchronisiert, wenn noch kein Objekt erzeugt wurde. Im synchronisierten Block kann sich nur ein Thread befinden. Im synchronisierten Block wird noch einmal geprüft, ob bereits ein Objekt erzeugt wurde. 48

49 Singletons im Geburtstagskalender Application.java BirthdayIOFactory UI.java ActionRegistry.java DBStatementRegistry.java 49

50 Facade Die Klasse PersonDB bietet einen einheitlichen Zugriff auf das Teilsystem, das den Datenbankzugriff implementiert. PersonDB Registry +register(value:valuetype) +get(key:string):valuetype ValueType DBStatement -id:int +create(person:iperson):persondb +read(id:int):persondb +select(qbe:iperson):list<persondb> +read() +update() +delete() DBStatementRegistry CreateStatement DeleteStatement ReadStatement SelectStatement UpdateStatement 50

51 Abstract Factory Skizzieren Sie die Beziehungen der Klassen BirthdayIO, BirthdayIOFactory, CSVBirthdayIO, CSVBirthdayIOFactory, DBBirthdayIO und DBBirthdayIOFactory. Wie wird ein Objekt einer Klasse erzeugt, die das Interface BirthdayIO implementiert? Welche Klassen muss ein Nutzer des IO-Teilsystems kennen, um Geburtstage zu speichern bzw. zu laden? Wie kann zwischen der Speicherung in einer Datenbank und der Speicherung in CSV formatierten Dateien gewechselt werden? 51

52 Abstract Factory BirthdayIO BirthdayIOFactory +load():list<birthday> +store(birthdays:list<birthday>) +getioprovider(): BirthdayIO DBBirthdayIO CSVBirthdayIO public static BirthdayIOFactory getinstance() { if (instance == null) { // instance = new CSVBirthdayIOFactory(); instance = new DBBirthdayIOFactory(); return instance; Application.java DBBirthdayIOFactory CSVBirthdayIOFactory Wechsel des IO-Teilsystems durch ändern des IO-Factory-Objekts 52

53 Observer Die Klasse BirthdaysTableModel speichert die Geburtstage, die in der Tabelle der graphischen Benutzungsschnittstelle angezeigt werden. Die Klasse Application speichert die Geburtstage. BirthdaysTableModel Application Birthday Wie wird ein Objekt der Klasse BirthdaysTableModel über eine Änderung der Daten in einem Objekt der Klasse Application informiert? 53

54 Observer PropertyChangeListener +propertychange() PropertyChangeSupport +addpropertychangelistener(listener:propertychangelistener) +firepropertychangeevent() BirthdaysTableModel Application public void propertychange( PropertyChangeEvent evt) { getbirthdays().clear(); Birthdays birthdays = Application.getInstance().getBirthdays(); for (int birthdayidx = 0; birthdayidx < birthdays.numberofbirthdays(); birthdayidx++) { getbirthdays().add(birthdays.get(birthdayidx)); firetabledatachanged(); public void editbirthday( Birthday oldbirthday, Birthday newbirthday) { int indexofold = birthdays.getindexof(oldbirthday); birthdays.set(indexofold, newbirthday); getpropertychangesupport().firepropertychange( "birthdays", oldbirthday, newbirthday); 54

55 Flyweight Registry +register(value:valuetype) +get(key:string):valuetype ValueType AddAction Action DeleteAction DBStatementRegistry ActionRegistry Die DBStatementRegistry ist gleich aufgebaut. EditAction ExitAction HelpAboutAction OpenAction SaveAction 55

56 Adapter (objektbasiert) OpenAction BirthdayIO PersonDB SaveAction +load():list<birthday> +store(birthdays:list<birthday>) DBBirthdayIO -id:int +create(person:iperson):persondb +read(id:int):persondb +select(qbe:iperson):list<persondb> +read() +update() +delete() Ein Objekt der Klasse DBBirthdayIO adaptiert die Schnittstelle der Klasse PersonDB auf die Schnittstelle des Interface BirthdayIO. 56

57 Geburtstagskalender Weitere : Die Benutzungsschnittstelle ist entsprechend dem Model View Controller Muster augebaut (UI-, Model- und Action-Klassen). Der Algorithmus für die Erzeugung des Primärschlüssels für das Speichern von Einträgen in der Datenbank kann mit einem Strategy Muster implementiert werden. Der Programmcode des Geburtstagskalenders steht auf der Webseite zur Vorlesung zum Download zur Verfügung. 57

58 Inhalt Java Database Connectivity (JDBC) Objektorientierte Konzepte Template Method Pattern Geburtstagskalender mit n Zusammenfassung Literatur und Links 58

59 Vorteile und Nachteile sind wiederverwendbare Lösungen für wiederkehrende Entwurfsprobleme auf Klassen- und Objektebene., wie sie hier behandelt wurden, setzen ein solides Verständnis objektorientierter Konzepte voraus. Vor allem Vererbung und Polymorphie müssen verstanden sein. Die Verwendung von n macht die Teile eines Programms unabhängiger voneinander, wodurch sie einfacher austauschbar und wiederverwendbar sind. Verständlicher wird ein Programm für den unerfahrenen -Anwender nicht. 59

60 Praktische Anwendung Im Rahmen dieses Vorlesungsteils wurde die praktische Anwendung der Singleton, Facade, Abstract Factory, Observer, Flyweight, Adapter und Template Method im Geburtstagskalender vorgestellt. Die Anwendung und Implementierung des Template Method Musters wurde praktisch geübt. Der Programmcode des Geburtstagskalenders, in dem die Muster implementiert sind, steht auf der Webseite zur Vorlesung zum Download zur Verfügung. 60

61 OO-Konzepte und Wichtige objektorientierte Konzepte, die für das Verstehen von n notwendig sind, wurden besprochen. Die Klassifizierung von n und ihre Dokumentation nach Gamma et al. (1995) wurde vorgestellt. Die 23, die in Gamma et al. (1995) dokumentiert sind, wurden kurz vorgestellt. 61

62 Ausblick Muster gibt es für verschiedene Abstraktionsebenen eines Programms, zum Beispiel für die Architektur oder den Programmcode, aber auch für verschiedenste Einsatzzwecke, zum Beispiel für Java Enterprise Anwendungen. Architekturmuster: Bass, L., P. Clements und R. Kazman (1998): Software Architecture in Practice. Addison Wesley Longman, Inc. Java Blueprints: Außerdem gibt es noch Anti-Patterns, RE-Patterns, UI-Patterns,... 62

63 Inhalt Java Database Connectivity (JDBC) Objektorientierte Konzepte Template Method Pattern Geburtstagskalender mit n Zusammenfassung Literatur und Links 63

64 Literatur und Links Das Buch der Gang of Four mit den bekanntesten : Gamma, E., R. Helm, R. Johnson und J. Vlissides (1995): Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. Wikipedia Artikel mit Links und Hintergrundinformationen für den Einstieg ins Themengebiet ( ): 64

65 Inhalt Java Database Connectivity (JDBC) Objektorientierte Konzepte Template Method Pattern Datenbankzugriff mit n Zusammenfassung Literatur und Links 65

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26 Design Patterns (Software-Architektur) Prof. Dr. Oliver Braun Letzte Änderung: 11.07.2017 15:12 Design Patterns 1/26 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides:

Mehr

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio Entwurfsmuster Eine Einführung Botond Draskoczy Marcus Vitruvius Pollio Überblick Historie, Literatur Das Flugapparat-Bildschirmschoner-Projekt (FBP) Das internetbasierte Solar-Netzwerk (SNW) Zusammenfassung

Mehr

Entwurfsmuster (Design Patterns)

Entwurfsmuster (Design Patterns) Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder

Mehr

Software-Architektur Design Patterns

Software-Architektur Design Patterns Design Patterns Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides: Design Patterns:

Mehr

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff Design Patterns II Der Design Muster Katalog Prof. Dr. Nikolaus Wulff Wiederverwendung Wiederverwendung ist das Schlagwort von OOP zur Erhöhung der Produktivität. Es gibt im Prinzip drei Methoden hierzu:

Mehr

Entwurfsprinzip. Entwurfsprinzip

Entwurfsprinzip. Entwurfsprinzip Die Komposition (hat ein Beziehung) ist der Vererbung (ist ein Beziehung) vorzuziehen. Es können Familien von Algorithmen in eigenen Klassensätzen gekapselt werden. Das Verhalten lässt sich zu Laufzeit

Mehr

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster Entwurfsmuster Lukas Klich Projektgruppe SHUTTLE Seminar: 28.11.2002 Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1 Motivation Die Menschheit löst Probleme, indem sie beobachtet, Beobachtungen

Mehr

Structural Patterns. B. Sc. Andreas Meißner

Structural Patterns. B. Sc. Andreas Meißner Structural Patterns B. Sc. Andreas Meißner Seminar Software-Entwurf Fachgebiet Software Engineering, Institut für Angewandte Systeme, Universität Hannover 11/16/2004 Gliederung 1. Wiederholung Entwurfsmuster

Mehr

Entwurfsmuster Martin Fesser 00IN

Entwurfsmuster Martin Fesser 00IN Entwurfsmuster Martin Fesser 00IN Inhalt Was sind Entwurfsmuster? Vorteile, Nachteile Entwurfsmusterkatalog (nach GoF) Variation von Entwurfsaspekten Wie Entwurfsmuster Entwurfsprobleme lösen Beispiele

Mehr

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul Behavioral Patterns Seminar Software-Entwurf WS 04/05 Przemyslaw Dul Gliederung Design Pattern (Wiederholung) Einordnung Übersicht über die Kategorien: Creational,Structural,Behavioral Übersicht über die

Mehr

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05. Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational

Mehr

Software Engineering II (IB) Design Patterns

Software Engineering II (IB) Design Patterns Software Engineering II (IB) Design Patterns Prof. Dr. Oliver Braun Letzte Änderung: 16.05.2017 20:56 Software Engineering II (IB), Design Patterns 1/43 Standardwerk Gang of Four: Erich Gamma, Richard

Mehr

Software Engineering II (IB) Design Patterns

Software Engineering II (IB) Design Patterns Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 16.05.2017 20:56 Inhaltsverzeichnis Standardwerk.................................... 2 Erzeugungsmuster.................................

Mehr

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1 Kapitel 10 JDBC und SQLJ 1 JDBC und SQLJ Bisher: Einbettung von SQL (statisch bzw. dynamisch) in C, C++, COBOL, ADA (embedded SQL) bzw. prozedurale Erweiterungen für SQL in Oracle (PL/SQL) Was ist mit

Mehr

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher

Mehr

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr Entwurfsmuster Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr Was sind Entwurfsmuster (1) Muster (allg.) sind schematische Lösungen für eine Klasse verwandter Probleme Beschreibung:

Mehr

Universität Bremen. Entwurfsmuster. Thomas Röfer. Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster

Universität Bremen. Entwurfsmuster. Thomas Röfer. Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Entwurfsmuster Thomas Röfer Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Mein Rückblick: RoboCup 2 Euer Rückblick: Textsuche Naive Suche abrakadabra Boyer-Moore abrakadabra

Mehr

Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierte und Funktionale Programmierung SS 2014 Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen

Mehr

Design Patterns. 3. Juni 2015

Design Patterns. 3. Juni 2015 Design Patterns 3. Juni 2015 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Taentzer Softwarequalität 2015 138 Was sind Design Patterns?

Mehr

JDBC. Java DataBase Connectivity

JDBC. Java DataBase Connectivity JDBC Java DataBase Connectivity JDBC-Schichten JDBC besteht aus 2 Teilen, 1. aus Datenbanktreibern, die den Anschluß von Java-Anwendungen an Datenbanksysteme wie Sybase, DB/2, Oracle, MS ACCESS oder Mini

Mehr

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren DB-Programmierung Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele static SQL verstehen Build-Prozess / Art des Datenzugriffs Host-Variablen Vor- / Nachteile dynamic SQL verstehen

Mehr

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik Entwurfsmuster - Design Patterns HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik 27. November 2009 Gliederung 1 Einführung 2 Strategie-Muster 3 Beobachter-Muster

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Erzeugungsmuster. Kapselung der Objekt-Erzeugung Erzeugungsmuster Kapselung der Objekt-Erzeugung Definition Erzeugungsmuster dienen für die Lose Koppelung, bei der erst zur Laufzeit der Typ des zu erzeugenden Objekts festgelegt wird. Abstract Factory

Mehr

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql JDBC inoffizielle Abkürzung für: Java Database Connectivity seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql ist eine Menge von Klassen und Methoden, um aus Java-Programmen relationale Datenbanken

Mehr

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite!

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite! JUnit a Cook s Tour Ziel des Frameworks Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren Design des Frameworks Beginne bei Nichts Schritt für Schritt aus passenden Mustern

Mehr

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen Datenbankentwurf & Datenbankzugriff mit JDBC Georg Köster Sven Wagner-Boysen 6. November 2007 Gliederung 2 Datenbankentwurf für ProminentPeople.info ER-Modell Relationaler Entwurf Normalisierung Datenbankzugriff

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

14 Design Patterns. 14.1 Einführung 14.2 Composite Pattern

14 Design Patterns. 14.1 Einführung 14.2 Composite Pattern 14 Design Patterns 14.1 Einführung 14.2 Composite Pattern 14.1 Einführung 14.1.1 Motivation 14.1.2 Was ist ein Design Pattern? 14.1.3 Beschreibung eines Design Patterns 14.1.4 Katalog von Design Patterns

Mehr

Webbasierte Informationssysteme

Webbasierte Informationssysteme SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn - SS 2004 - Prof. Dr. Stefan Böttcher Folie 1 Was ist eine relationale Datenbank? Menge von Relationen (=Tabellen) und Constraints (=Integritätsbedingungen)

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 20. November 2015 Betriebssysteme / verteilte

Mehr

Design Patterns I. Observer, Listener & MVC

Design Patterns I. Observer, Listener & MVC Design Patterns I Observer, Listener & MVC Design Patterns I - Gliederung - Was sind Design Patterns? - Definition von Design Patterns - Entstehung - Nutzen & Verwendung - MVC - Model, View, Controller

Mehr

Universität Bremen. Entwurfsmuster. Thomas Röfer. Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster

Universität Bremen. Entwurfsmuster. Thomas Röfer. Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Entwurfsmuster Thomas Röfer Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Rückblick UML Motivation Historie Spracheinheiten Strukturdiagramme Verhaltensdiagramme 2 Motivation Idee Einige

Mehr

Entwurfsmuster. Marc Monecke

Entwurfsmuster. Marc Monecke Entwurfsmuster Marc Monecke monecke@informatik.uni-siegen.de Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068 Siegen 20. Mai 2003 Inhaltsverzeichnis 1 Grundlagen

Mehr

Beispiel: DB-Mock (1/7)

Beispiel: DB-Mock (1/7) Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Software Design Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Software Design Wie schreibe ich gute Software?

Mehr

Entwurfsmuster in Java

Entwurfsmuster in Java Entwurfsmuster in Java Das Observer- und das Decorator-Pattern Friederike Löwe 13. März 2011 Inhaltsverzeichnis Einleitung Wozu eigentlich Entwurfsmuster? Die Grundlage: Design-Prinzipien Das Decorator-Pattern

Mehr

Objektorientierte Programmierung OO mit Ada 2005

Objektorientierte Programmierung OO mit Ada 2005 Objektorientierte Programmierung mit Ada 2005 Markus Knauß 8. Januar 2010 1/33 Motivation Erstellen Sie ein Programm, mit dem Sie Literaturverweise verwalten können. Die Literaturverweise sollen in einer

Mehr

SE Besprechung. Übung 4 Architektur, Modulentwurf

SE Besprechung. Übung 4 Architektur, Modulentwurf SE Besprechung Übung 4 Architektur, Modulentwurf SE, 22.11.11 Mengia Zollinger 2.1 Architekturstile (6 Punkte) 2.1.A Ausgabe eines Monatsabos an Angestellte Lösung: Pipe-and-Filter Beispiel Lösung [Benz,

Mehr

::Zweck. Sicherstellung, dass nur eine Instanz einer bestimmten Klasse existiert

::Zweck. Sicherstellung, dass nur eine Instanz einer bestimmten Klasse existiert ::Singleton ::Index Zweck & Motivation Anwendbarkeit Struktur Teilnehmer & Interaktionen Konsequenzen Implementierung Verwendung Verwandte Muster Erzeugungsmuster Glossar ::Zweck Sicherstellung, dass nur

Mehr

Objektorientierteund FunktionaleProgrammierung

Objektorientierteund FunktionaleProgrammierung Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

Lambda Expressions in Java 8

Lambda Expressions in Java 8 Sie sind da Lambda Expressions in Java 8 Rolf Borst Lambda Expressions sind cool Aus dem Internet Stimmt das? Das total uncoole Beispiel Person nachname : String vorname : String alter : int plz : String

Mehr

Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering 10. Entwurfsmuster II Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: 10. Entwurfsmuster II 2 Die Entwurfsmuster der Gang of Four Die 23 GoF Pattern sind in 3 Gruppen

Mehr

Design Patterns. 5. Juni 2013

Design Patterns. 5. Juni 2013 Design Patterns 5. Juni 2013 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Refactoring und Design Patterns: Welchen Zusammenhang gibt es

Mehr

Klausur Datenbanken II

Klausur Datenbanken II Klausur Datenbanken II 8.3.2001 Name Vorname Semester Matrikelnr Aufgabe Punkte maximal 1 8 2 8 3 3 4 3 5 4 6 6 7 6 8 6 9 [Zusatz] [4] Summe 44 Punkte erreicht Bitte geben Sie die Lösungen möglichst direkt

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Sommersemester 2011 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 10. Java: Datenhaltung mit Datenbanken 1 Datenbank-Programme Derby (Hersteller: Apache

Mehr

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer Decorator Pattern Analyse- und Design-Pattern CAS SWE FS14 Roland Müller Samuel Schärer Entwurfsmuster der «Gang of Four» Strukturmuster fassen Klassen und Objekte zu grösseren Strukturen zusammen Adapter

Mehr

Inhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator

Inhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator Inhalt Gute OOP-Programmierung ist schwer Objekte Objekte, wird aber so vermittelt (siehe jede Einführung in OOP) Ansprüche an gutes Design diametral welche Ansprüche haben wir überhaupt? Fehler im Design

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II SS 2012 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Einführung in die Informatik II 1 Prüfungstermine EI II im Sommersemester 2012 Klausurtermine

Mehr

3. Entwurfsmuster zur Entkopplung von Modulen

3. Entwurfsmuster zur Entkopplung von Modulen 3. Entwurfsmuster zur Entkopplung von Modulen OOP-3.1 Entwurfsmuster (Design Patterns): Software-Entwicklungsaufgaben, die in vielen Ausprägungen häufig auftreten. Objektorientierte Schemata, die als Lösungen

Mehr

Paket Kommando. Command Command Processor Visitor

Paket Kommando. Command Command Processor Visitor Paket Kommando Command Command Processor Visitor Command Command [kə'mænd] aka: Action ['ækʃən] aka: Transaction [træn'zækʃən] Verhaltensmuster Zweck: Anfragen/Methodenaufrufe als Objekte kapseln 01.07.09

Mehr

const Zwei Schlüsselwörter bei der Deklaration von Variablen und Member-Funktionen haben wir noch nicht behandelt: const und static.

const Zwei Schlüsselwörter bei der Deklaration von Variablen und Member-Funktionen haben wir noch nicht behandelt: const und static. const Zwei Schlüsselwörter bei der Deklaration von Variablen und Member-Funktionen haben wir noch nicht behandelt: const und static. Eine const Variable kann ihren Wert nicht ändern: const double pi =

Mehr

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Java und Datenbanksysteme Datenbankanbindung mit JDBC Java und Datenbanksysteme Datenbankanbindung mit JDBC 30.05.2001 Stefan Niederhauser sn@atelier-w.ch 1-Einführung Datenbanksysteme Java und Datenbanken: JDBC Geschichte der JDBC-Versionen Vergleich von

Mehr

Datenbanksysteme 2 Fachbereich Angewandte Informatik WS 11/12 Dipl.-Inf. Christian Pape. 6. Übung

Datenbanksysteme 2 Fachbereich Angewandte Informatik WS 11/12 Dipl.-Inf. Christian Pape. 6. Übung Datenbanksysteme 2 Fachbereich Angewandte Informatik WS 11/12 Dipl.-Inf. Christian Pape 6. Übung Aufgabe 1: In dieser Übung sollen Sie eine kleine Java-Anwendung schreiben, die auf die Oracle-Datenbank

Mehr

Oracle & Java HOW TO

Oracle & Java HOW TO Oracle & Java HOW TO Helge Janicke, Niels-Peter de Witt, Karsten Wolke 21. Januar 2002 Inhaltsverzeichnis 1 Java-Anbindung an Oracle-DB 2 2 Benötigte Programme und Daten 2 3 Einbinden der Klassen 2 4 Aufbau

Mehr

Webbasierte Informationssysteme

Webbasierte Informationssysteme SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn - SS 2004 - Prof. Dr. Stefan Böttcher Folie 1 Was ist eine relationale Datenbank? Menge von Relationen (=Tabellen) und Constraints (=Integritätsbedingungen)

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

29.01.2013. Vorlesung Programmieren. Software Design. Software Design. Entwurfsmuster

29.01.2013. Vorlesung Programmieren. Software Design. Software Design. Entwurfsmuster Vorlesung Programmieren Software Design Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Software Design Wie schreibe ich gute Software?

Mehr

Willkommen. Datenbanken und Anbindung

Willkommen. Datenbanken und Anbindung Willkommen Datenbanken und Anbindung Welche stehen zur Wahl? MySQL Sehr weit verbreitetes DBS (YT, FB, Twitter) Open-Source und Enterprise-Version Libs in C/C++ und Java verfügbar Grundsätzlich ist ein

Mehr

Programmiermethodik 3. Klausur Lösung

Programmiermethodik 3. Klausur Lösung Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

Wahlpflichtfach Design Pattern

Wahlpflichtfach Design Pattern Wahlpflichtfach Design Pattern Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik miwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Tutorium Softwaretechnik I

Tutorium Softwaretechnik I Tutorium Softwaretechnik I Moritz Klammler 11. Juli 2017 Fakultät für Informatik, IPD Tichy Titelfoto: Copyright (C) 2010 Multimotyl CC BY-SA 3.0 1 11. Juli 2017 Moritz Klammler - Tutorium Softwaretechnik

Mehr

Strategy & Decorator Pattern

Strategy & Decorator Pattern Strategy & Decorator Pattern Design Patterns Nutzen Wouldn t it be dreamy if only there were a way to build software so that when we need to change it, we could do so with the least possible impact on

Mehr

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009 Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Sommersemester 2009 Überblick I 1 Entwurfsmuster Entwurfsmuster: Entwurfsmuster

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Java Database Connectivity-API (JDBC)

Java Database Connectivity-API (JDBC) Java Database Connectivity-API (JDBC) Motivation Design Grundlagen Typen Metadaten Transaktionen Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Motivation Problem: Zugriff auf ein DBMS ist Herstellerabhängig

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/15 1 / 24 Singleton-Muster 2 / 24 Das Singleton Im einfachsten Fall wird ein Singleton über

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Effizientes Programmieren

Effizientes Programmieren Effizientes Programmieren Praktikum smuster (09.05.2016) Christopher Pietsch Agenda 1 2 smuster 3 4 1 / 23 smuster (09.05.2016) smuster Teil 1 2 / 23 smuster (09.05.2016) smuster Definition: [...] alle

Mehr

Effizientes Programmieren

Effizientes Programmieren Effizientes Programmieren Praktikum smuster (04.07.2017) Christopher Pietsch Agenda 1 2 smuster 3 4 1 / 23 smuster (04.07.2017) smuster Teil 1 2 / 23 smuster (04.07.2017) smuster Definition: [...] alle

Mehr

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Wintersemester 2010/11 Überblick I Entwurfsmuster Entwurfsmuster: Entwurfsmuster

Mehr

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008 Programmieren II Datenbanken Dr. Klaus Höppner SQL Hochschule Darmstadt SS 2008 JDBC 1 / 20 2 / 20 Relationale Datenbanken Beispiele für RDBMS Ein Datenbanksystem ist ein System zur Speicherung von (großen)

Mehr

Entwurfsmuster und Frameworks Singleton

Entwurfsmuster und Frameworks Singleton Entwurfsmuster und Frameworks Singleton Oliver Haase Oliver Haase Emfra Singleton 1/20 Beschreibung I Klassifikation: objektbasiertes Erzeugungsmuster Zweck: sicherstellen, dass eine Klasse nur genau einmal

Mehr

Entwurfsmuster. Rainer Schmidberger

Entwurfsmuster. Rainer Schmidberger Entwurfsmuster Rainer Schmidberger schmidrr@informatik.uni-stuttgart.de Copyright 2004, Rainer Schmidberger, Universität Stuttgart, Institut für Softwaretechnologie, Abt. Software Engineering Was sind

Mehr

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008 Ein Entwurfsmuster der GoF vorgestellt von Sigrid Weil 16. Januar 2008 Einleitung 2 Entwurfsmuster (Design Patterns) beschreiben Probleme, die wiederholt in unterschiedlichsten Zusammenhängen aufreten

Mehr

4.2 Workshop EJB. Entwicklung von EJB-Anwendungen

4.2 Workshop EJB. Entwicklung von EJB-Anwendungen 4.2 Workshop EJB Entwicklung von EJB-Anwendungen Welche Schritte werden benötigt, bis eine verteilte EJB-Anwendung einsatzbereit ist? Was muss alles implementiert werden? An welchen Stellen unterstützt

Mehr

JDBC. Allgemeines ODBC. java.sql. Beispiele

JDBC. Allgemeines ODBC. java.sql. Beispiele JDBC Java Data Base Connectivity Programmierschnittstelle für relationale Datenbanken Sammlung von Klassen, welche zum Aufbau einer Verbindung zwischen einem Java-Programm und einer Datenbank dienen Verwendet

Mehr

Software Engineering. 7. Entwurfsmuster

Software Engineering. 7. Entwurfsmuster Software Engineering 7. Entwurfsmuster Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung

Mehr

Modellarbeit I: Entwurfsgerechte Klassenmodellierung

Modellarbeit I: Entwurfsgerechte Klassenmodellierung Modellarbeit I: Entwurfsgerechte Klassenmodellierung Vom Analysemodell zum Entwurfsmodell Nach der Etablierung der Techologien: Überarbeitung des Fachlichen Modells zu einem geeigneten Entwurfsmodell Navigationen

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1

Mehr

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda Schnittstellen und Abstrakte Klassen 1 Hauptziel der objektorientierten Programmiertechniken ist es, die Flexibilität leichte Anpassbarkeit und Wiederverwendbarkeit von Software zu vereinfachen. 2 Kapselung

Mehr

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 11. Dez M. Endres, A. Huhn, T. Preisinger Lösungsblatt 7

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 11. Dez M. Endres, A. Huhn, T. Preisinger Lösungsblatt 7 Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 11. Dez. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 7 Aufgabe 2 + 3: Datenbanksysteme I import java.sql.*; import oracle.jdbc.driver.*;

Mehr

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme 8. Übung zur Vorlesung Datenbanksysteme WS 08/09 Musterlösung Aufgabe 8-1: SQLJ //

Mehr

Lehrplan: Architektur und Design. paluno

Lehrplan: Architektur und Design. paluno Lehrplan: Architektur und Design Gliederung 1 Grundlagen der industriellen So9ware Entwicklung 2 Ebenen von Architektur und Design 3 KernakAvitäten von So9ware- Architekten 4 Architekturtypologien von

Mehr

3. Entwurfsmuster zur Entkopplung von Modulen. Übersicht zu Entwurfsmustern

3. Entwurfsmuster zur Entkopplung von Modulen. Übersicht zu Entwurfsmustern 3. Entwurfsmuster zur Entkopplung von Modulen OOP-3.1 Vorlesung Objektorientierte Programmierung WS 2013/2014 / Folie 301 Entwurfsmuster (Design Patterns): Idee der Entwurfsmuster verstehen Software-Entwicklungsaufgaben,

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 1 185.A01 OOP Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 2 OOP Vererbung versus Delegation class A { public void x() { z();

Mehr

Entwurfsmuster Design Patterns by Erich Gamma et al.

Entwurfsmuster Design Patterns by Erich Gamma et al. Entwurfsmuster Design Patterns by Erich Gamma et al. Detlef Streitferdt Technische Universität Ilmenau TU-Ilmenau, Softwaresysteme / Prozessinformatik, KBSE Entwurfsmuster 1 Frühe Muster Christopher Alexander

Mehr

Hauptschritte einer JDBC-App

Hauptschritte einer JDBC-App JDBC Java DataBase Connectivity Sammlung von Klassen und Interfaces zur Arbeit mit Datenbanken auf Basis von SQL Package java.sql Datenbankmanagementsystem und eine oder mehrere Datenbanken Jdbc Driver,

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

Kapitel DB:VI (Fortsetzung)

Kapitel DB:VI (Fortsetzung) Kapitel DB:VI (Fortsetzung) VI. Die relationale Datenbanksprache SQL Einführung SQL als Datenanfragesprache SQL als Datendefinitionssprache SQL als Datenmanipulationssprache Sichten SQL vom Programm aus

Mehr