Markus Knauß, Entwurfsmuster. Markus Knauß Entwurfsmuster
|
|
- Charlotte Krause
- vor 7 Jahren
- Abrufe
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: 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
Entwurfsmuster Eine Einführung Botond Draskoczy Marcus Vitruvius Pollio Überblick Historie, Literatur Das Flugapparat-Bildschirmschoner-Projekt (FBP) Das internetbasierte Solar-Netzwerk (SNW) Zusammenfassung
MehrEntwurfsmuster (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
MehrSoftware-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:
MehrDesign 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:
MehrEntwurfsprinzip. 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
MehrLukas 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
MehrStructural 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
MehrEntwurfsmuster 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
MehrBehavioral 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
MehrCreational 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
MehrSoftware 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
MehrSoftware 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.................................
MehrKapitel 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
MehrGrundlagen 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
MehrEntwurfsmuster. 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:
MehrUniversitä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
MehrObjektorientierte 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
MehrDaniel 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
MehrJava 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
MehrDesign 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?
MehrJDBC. 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
MehrDB-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
MehrVerhaltensmuster. 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
MehrJDBC. 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
MehrErzeugungsmuster. 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
Mehrseit 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
MehrJUnit 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
MehrDatenbankentwurf & 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
MehrAnalyse 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
MehrAnalyse 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
Mehr14 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
MehrWebbasierte 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)
MehrClient/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
MehrDesign 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
MehrUniversitä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
MehrEntwurfsmuster. 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
MehrBeispiel: 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
MehrVorlesung 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?
MehrEntwurfsmuster 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
MehrObjektorientierte 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
MehrSE 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
::Singleton ::Index Zweck & Motivation Anwendbarkeit Struktur Teilnehmer & Interaktionen Konsequenzen Implementierung Verwendung Verwandte Muster Erzeugungsmuster Glossar ::Zweck Sicherstellung, dass nur
MehrObjektorientierteund FunktionaleProgrammierung
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
MehrLambda 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
MehrSoftware 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
MehrDesign 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
MehrKlausur 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
MehrVorlesung 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
MehrDecorator 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
MehrInhalt. 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
MehrEinfü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
Mehr3. 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
MehrPaket 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
Mehrconst 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 =
MehrJava 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
MehrDatenbanksysteme 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
MehrOracle & 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
MehrWebbasierte 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)
Mehr12 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,
Mehr29.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?
MehrWillkommen. 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
MehrProgrammiermethodik 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
MehrProgrammieren 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
MehrWahlpflichtfach 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
MehrFH 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
MehrTutorium 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
MehrStrategy & 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
MehrSoftwaretechnik. Ü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
MehrProgrammieren 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
MehrJava 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
MehrAnalyse 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
MehrNeben 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
MehrEffizientes 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
MehrEffizientes 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
MehrSoftwaretechnik. 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
MehrProgrammieren 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)
MehrEntwurfsmuster 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
MehrEntwurfsmuster. 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
MehrEin 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
Mehr4.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
MehrJDBC. 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
MehrSoftware Engineering. 7. Entwurfsmuster
Software Engineering 7. Entwurfsmuster Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung
MehrModellarbeit 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
MehrProgrammieren 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
MehrPersistenz 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)
MehrSchnittstellen 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
MehrUniversitä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.*;
MehrUNIVERSITÄ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 //
MehrLehrplan: 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
Mehr3. 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,
Mehr3 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
MehrSoftware-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();
MehrEntwurfsmuster 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
MehrHauptschritte 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,
MehrProf. 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
Mehr14 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
MehrJavakurs 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:
Mehr14 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.
MehrKapitel 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