11. Komponenten Grundlagen der Programmierung 1 (Java)

Ähnliche Dokumente
7. Komponenten Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

12. Rekursion Grundlagen der Programmierung 1 (Java)

7. Pakete Grundlagen der Programmierung 1 (Java)

8. Generics Grundlagen der Programmierung 1 (Java)

Komponentenbasierte Softwareentwicklung

6. Design-Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

17 Komponentenbasiertes Software-Engineering

2. Programmieren gegen Schnittstellen Advanced Programming Techniques

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Repetitorium Informatik (Java)

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Handbuch für die Erweiterbarkeit

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Remote Method Invocation

Teil V. Generics und Kollektionen in Java

Themen. Web Service - Clients. Kommunikation zw. Web Services

Vorlesung Informatik 2

Javakurs für Anfänger

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Programmieren mit Java

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Factory Method (Virtual Constructor)

Java Einführung Packages

Theorie zu Übung 8 Implementierung in Java

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Informationsverarbeitung im Bauwesen

Assoziation und Aggregation

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Teil 2: OOP und JAVA (Vorlesung 11)

Einführung in die Programmierung 1

Programmieren in Java

II.1.1. Erste Schritte - 1 -

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Typumwandlungen bei Referenztypen

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundlagen der Informatik für Ingenieure I

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Java TV. Seminar Medientechnik. Kristin Doppler Übersicht. Einleitung Umgebungen Java TV API - Kategorien. Service- und Selektions-APIs

Präsentation Interfaces

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Kapitel 5: Das Design

Systematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Software Engineering II

3 Objektorientierte Konzepte in Java

Schnittstellen implementieren am Beispiel Suchbaum

1.3 Charakteristische Eigenschaften von objektorientierten Systemen

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

1. Einführung Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Computeranwendung und Programmierung (CuP)

10. Berechtigungsverwaltung Grundlagen der Programmierung II (Java)

Model-View-Controller

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Java Einführung Abstrakte Klassen und Interfaces

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

2. Java Schnellkurs Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Software Engineering Klassendiagramme Assoziationen

Javakurs zu Informatik I. Henning Heitkötter

Hivemind Ein leichtgewichteter Container

Grundkonzepte java.util.list

wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken

4. Objektrelationales Mapping Grundlagen der Programmierung II (Java)

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Ziele und Tätigkeiten von Architekten

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Datenbank und Informationssysteme

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Java Generics & Collections

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Objektorientierte Software-Entwicklung

Eclipse und EclipseLink

Objekt-Orientierte Programmierung

Java für C++ Programmierer

JAVA 5 Generics. Proseminar Programmiersprachen Thema Java 5 Generics 1

12) Generische Datenstrukturen

Software Engineering II

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Session 1: Classes and Applets

Auszug aus JAX-WS Folien

Java RMI Remote Method Invocation

1. Java ist Stammbaum der Programmiersprachen 3. Die "Softwarekrise"

Algorithmen und Programmierung II

Objektorientierte und Funktionale Programmierung SS 2014

2. A reference architecture for business information systems Reference Architectures and Patterns

Assoziation und Aggregation

Objektorientierte Programmierung

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

2. A reference architecture for business information systems Reference Architectures and Patterns

Generische Datenstrukturen

Transkript:

11. Komponenten Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 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 7. Pakete 8. Parametrisierte Typen (Generics) 10. Gutes Programmieren 11. Komponenten 12. Algorithmen und Datenstrukturen II 13. Objektorientierung II 14. Rekursion 15. Design 16. Die Java Klassenbibliothek I 17. Die Java Klassenbibliothek II 9. Fehler und Ausnahmen 10.1.2006, Seite 2

Agenda Agenda Definition Konfiguration Anforderungs-Schnittstellen Beispiel Übersicht 10.1.2006, Seite 3

Definition Das Automobil: ein komplexes komponenten-orientiertes System Außensicht (Schnittstelle) des Fahrers: möglichst einfach Innensicht: komplex Außensicht (Schnittstelle) der Werkstatt: möglichst einfach 10.1.2006, Seite 4

Definition Komplexe Software-Systeme werden komponentenorientiert entworfen (Beispiel: Berechtigungskomponente) Außensicht (Nutzungssicht): operative Schnittstelle des Anwendungsprogrammierers (möglichst einfach) operative Schnittstelle B Berechtigungskomponente Berechtigungskern Admin- Schnittstelle A Berechtigung GUI Außensicht (Nutzungssicht): Schnittstelle des Administrators (möglichst einfach) R S RACF- Adapter DB-Zugriff R JDBC RACF Oracle Innensicht: komplex 10.1.2006, Seite 5

Definition Definition 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 10.1.2006, Seite 6

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, Definition 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. 10.1.2006, Seite 7

Agenda Agenda Definition Konfiguration Anforderungs-Schnittstellen Beispiel Übersicht 10.1.2006, Seite 8

Konfiguration Komponenten, Schnittstellen und Konfiguration Jede Komponente exportiert (implementiert) eine oder mehrere Schnittstellen Jede Komponenten importiert beliebig viele Schnittstellen (NICHT Komponenten) 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 der importierten Schnittstellen 10.1.2006, Seite 9

Konfiguration Interface + Implementation + Konfiguration Beispiel: List MyMain (Konfiguration) 2 3 MyApplication 1 List ListImpl (z.b. ArrayList) 10.1.2006, Seite 10

Konfiguration 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(); 1 2 } } MyApplication appl = new MyApplication(list); appl.start(..);... 3 10.1.2006, Seite 11

Agenda Agenda Definition Konfiguration Anforderungs-Schnittstellen Beispiel Übersicht 10.1.2006, Seite 12

Anforderungs-Schnittstellen 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 10.1.2006, Seite 13

Anforderungs-Schnittstellen 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 Importeur Exporteur Adapter k s s h 10.1.2006, Seite 14

Agenda Agenda Definition Konfiguration Anforderungs-Schnittstellen Beispiel Übersicht 10.1.2006, Seite 15

Beispiel 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. 10.1.2006, Seite 16

javax.mail Hat alles, was man braucht. Aber Vor lauter Bäumen sieht man den Wald nicht Beispiel 10.1.2006, Seite 17

Beispiel Komponentendiagramm: javax.mail verbergen MyMain (Konfiguration) 4 2 3 1 MyApplication Mail MailImpl javax.mail MailAdmin 10.1.2006, Seite 18

Beispiel Interface und Verwendung public interface Mail { public void send(string subject, String content); } 1 public class MyApplication { private Mail port; public MyApplication(.. IMailPort p,..) { port = p;... }.. public void start() {... port.send("hi Otto", "alles klar?"); } } 2 10.1.2006, Seite 19

Beispiel Implementation des Interface public class MailImpl implements Mail { private String mailaddress; 3 public MailImpl(String address) { mailaddress = addr; } } public void send(string subject, String content) { // komplizierte Aufrufe an die echte Mail } 10.1.2006, Seite 20

Beispiel Konfiguration public class MyMain { public MyMain(.. ) { 4 } }.. Mail port = new MailImpl(...) (...); MyApplication appl = new MyApplication(port port); appl.start(); 10.1.2006, Seite 21

Agenda Agenda Definition Konfiguration Anforderungs-Schnittstellen Beispiel Übersicht 10.1.2006, Seite 22

Übersicht 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 10.1.2006, Seite 23

Übersicht Komponenten im Zusammenspiel Konfiguration U S A S' D C V T B T' E Das alles definiert C und das E und das D 10.1.2006, Seite 24

Übersicht Entkopplung über Schnittstellen: verschiedene Spielweisen Standardschnittstelle Importeur Exporteur angebotene Schnittstelle Importeur Exporteur angeforderte Schnittstelle Importeur Exporteur angeforderte Schnittstelle angebotene Schnittstelle Importeur Adapter Exporteur 10.1.2006, Seite 25