Upload
danganh
View
217
Download
1
Embed Size (px)
Citation preview
11. Komponenten
Prof. Dr. Bernhard HummFH Darmstadt, 10. Januar 2006
Grundlagen der Programmierung 1 (Java)
Fachhochschule DarmstadtHaardtring 100 D-64295 Darmstadt
Seite 210.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Einordnung im Kontext der Vorlesung
1. Einführung
2. Einfache Programme
3. Kontrollstrukturen
4. Objekt-Orientierung I
5. Algorithmen und Datenstrukturen I
6. Interfaces
8. Parametrisierte Typen (Generics)
7. Pakete
14. Rekursion
9. Fehler und Ausnahmen
12. Algorithmen und Datenstrukturen II
13. Objektorientierung II
11. Komponenten
15. Design
16. Die Java Klassenbibliothek I
17. Die Java Klassenbibliothek II
10. Gutes Programmieren
Definition
Konfiguration
Anforderungs-Schnittstellen
Beispiel
Übersicht
Seite 310.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
� Definition
Agenda
Agenda
Seite 410.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Das Automobil: ein komplexes komponenten-orientiertes System
Außensicht(Schnittstelle)des Fahrers:
möglichst einfach
Außensicht(Schnittstelle)
derWerkstatt:
möglichst einfachInnensicht: komplex
Definition
Seite 510.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Komplexe Software-Systeme werden komponenten-orientiert entworfen (Beispiel: Berechtigungskomponente)
Berechtigungs-kern
B
Admin-Schnittstelle
A
operativeSchnittstelle
SR‘
RACF-Adapter
DB-Zugriff
RACF
BerechtigungGUI
Oracle
JDBCR
Berechtigungskomponente
Außensicht(Nutzungssicht):
operative Schnittstelle des
Anwendungs-programmierers
(möglichst einfach)
Außensicht(Nutzungssicht):Schnittstelle desAdministrators
(möglichst einfach)
Innensicht: komplex
Definition
Seite 610.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
A software component is a unit of composition with
* contractually specified interfaces and
* explicit context dependencies only.
A software component can be
* deployed independently and is
* subject to composition by third parties.
C. Szyperski, Component Software, p. 34. Addison-Wesley, 1998
Definition
Definition
Seite 710.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Komponente: die wesentliche Einheit des Design und der Implementierung
� Komponenten
– bieten Dienste mit klar definierten Schnittstellen an,
– haben definierte Abhängigkeiten von Diensten anderer Komponenten,
– können unabhängig von anderen Komponenten entwickelt werden,
– können unabhängig von anderen Komponenten verwendet werden,
– sind beim Zusammenbau konfigurierbar,
– machen definierte Annahmen (Wenn sich Grundannahmen ändern, wird der Aufwand hoch sein),
– können mit anderen Komponenten zu größeren Einheiten (z.B. Anwendungen) zusammengebaut werden, ohne die Implementierung der Komponenten zu verändern.
Definition
Definition
Konfiguration
Anforderungs-Schnittstellen
Beispiel
Übersicht
Seite 810.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
� Konfiguration
Agenda
Agenda
Seite 910.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Komponenten, Schnittstellen und Konfiguration
� Jede Komponente exportiert (implementiert) eine oder mehrere Schnittstellen
� Jede Komponenten importiert beliebig viele Schnittstellen (NICHTKomponenten)
� Schnittstelle definiert Operationen
– mit Syntax, Semantik, Protokoll
– kann nicht-funktionale Eigenschaften fordern: Performance, Robustheit, Rechengenauigkeit
– beschreibt das beobachtbare Verhalten einer Komponente
� Konfiguration versieht eine Komponente mit Implementierungen derimportierten Schnittstellen
Konfiguration
Seite 1010.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Interface + Implementation + KonfigurationBeispiel: List
MyApplicationListImpl
(z.B. ArrayList)List
1
MyMain
(Konfiguration)2
3
Konfiguration
Seite 1110.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Interface + Implementation + Konfiguration
public class MyApplication {
private List myList;
public MyApplication(List list) { myList = list; }
...
public start() { ... }
}
public class MyMain {
...
public void doSomething() {
List list = new ArrayList();
MyApplication appl = new MyApplication(list);
appl.start(..);
...
}
}
1
2
3
Konfiguration
Definition
Konfiguration
Anforderungs-Schnittstellen
Beispiel
Übersicht
Seite 1210.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
� Anforderungs-Schnittstellen
Agenda
Agenda
Seite 1310.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Anforderungsschnittstellen
� Selbst bei vorbildlicher Verwendung von Schnittstellen bleiben Nachteile:
� Durch jedes Import-Statement handelt sich eine Komponente eine explizite Abhängigkeit zu einer anderen Komponente ein. Import der Schnittstelle!
� Die importierte Schnittstelle unterliegt i.A. nicht der Kontrolle des Entwicklers!
� Die importierte Schnittstelle ist i.A. viel breiter als die von der Komponente benötigte Funktionalität.
⇒ Anforderungsschnittstellen
Anforderungs-Schnittstellen
Seite 1410.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
k s‘ h
Importeur Exporteur
Adapter
s
Anforderungsschnittstellen
� Eine Anforderungsschnittstelle
– enthält genau die importierte Funktionalität einer Komponente (k),
– ist ein Teil der importierenden Komponente,
– wird mit der Schnittstelle (s) der exportierenden Komponente (h) über einen Adapter (Glue-Code) verknüpft.
– Der Adapter wird während der Initialisierung der Anwendung konfiguriert.
Konfiguration
Anforderungs-Schnittstellen
Definition
Konfiguration
Anforderungs-Schnittstellen
Beispiel
Übersicht
Seite 1510.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
� Beispiel
Agenda
Agenda
Seite 1610.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Verschicken von Mail
Anforderungen:
� Eine Anwendung soll Mails an eine feste Adresse senden.
� Eine Mail besitzt nur zwei Parameter:
– Betreff und
– Textkörper
� Keine Verteiler, kein Empfang, keine Anhänge, keine Verwaltung der versandten Mails.
Beispiel
Seite 1710.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
javax.mailHat alles, was man braucht. Aber…Vor lauter Bäumen sieht man den Wald nicht
Beispiel
Seite 1810.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Komponentendiagramm:javax.mail verbergen
MyApplication
MyMain(Konfiguration)
MailImpl
2 31
4
Mail javax.mail
MailAdmin
Beispiel
Seite 1910.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
public class MyApplication {private Mail Mail Mail Mail portportportport;public MyApplication( .. IMailPort p, ..) {
portportportport = p= p= p= p;...
}..public void start() {
...port.sendport.sendport.sendport.send("Hi Otto", "alles klar?");
}}
Interface und Verwendung
public interface MailMailMailMail {public void sendsendsendsend(String subject, String content);
}
1
2
Beispiel
Seite 2010.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Implementation des Interface
public class MailImplMailImplMailImplMailImpl implements MailMailMailMail {private String mailAddress;
public MailImplMailImplMailImplMailImpl(String address) {mailAddress = addr;
}
public void sendsendsendsend(String subject, String content) {// komplizierte Aufrufe an die echte Mail
}}
3
Beispiel
Seite 2110.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Konfiguration
public class MyMainMyMainMyMainMyMain {
public MyMain( .. ) {
Mail port = newnewnewnew MailImplMailImplMailImplMailImpl(...)(...)(...)(...);
MyApplication appl = new MyApplication(portportportport); appl.start();
}..
}
4
Beispiel
Definition
Konfiguration
Anforderungs-Schnittstellen
Beispiel
Übersicht
Seite 2210.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
� Übersicht
Agenda
Agenda
Seite 2310.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Komponenten und Packages
� Java bietet (wie die meisten aktuellen Programmiersprachen) keine explizite Unterstützung für Komponenten
� Packages können für die Implementierung von Komponenten verwenden werden
Übersicht
Seite 2410.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
C
S D
T E
A
B
S'
T'V
U
Das alles definiert C und das E und das D
Konfiguration
Komponenten im Zusammenspiel
Übersicht
Seite 2510.1.2006,Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006
Importeur Exporteur
Standardschnittstelle
Adapter
angeforderte Schnittstelle
Exporteur
angebotene Schnittstelle
Importeur
Importeur Exporteur
angebotene Schnittstelle
Exporteur
angeforderte Schnittstelle
Importeur
Entkopplung über Schnittstellen: verschiedene Spielweisen
Übersicht