25
11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt

11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

  • Upload
    danganh

  • View
    217

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

11. Komponenten

Prof. Dr. Bernhard HummFH Darmstadt, 10. Januar 2006

Grundlagen der Programmierung 1 (Java)

Fachhochschule DarmstadtHaardtring 100 D-64295 Darmstadt

Page 2: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 3: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 4: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 5: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 6: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 7: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 8: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 9: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 10: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 11: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 12: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 13: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 14: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 15: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 16: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 17: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 18: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 19: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 20: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 21: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 22: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 23: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 24: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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

Page 25: 11. Komponenten Grundlagen der Programmierung 1 (Java) · PDF file11. Komponenten Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Grundlagen der Programmierung 1 (Java) Fachhochschule

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