Ziele. Kapitel 15: Systemarchitektur und Packages. Grundprinzipien der Systemarchitektur. Grundprinzipien der Systemarchitektur (2)

Ähnliche Dokumente
Kapitel 15. Systemarchitektur

Kapitel 14. Systemarchitektur

Modularisierung in Java: Pakete Software Entwicklung 1

Pakete Software Entwicklung 1

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Software Entwicklung 1

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2)

Zugriffsrechte und Packages

Einstieg in die Informatik mit Java

Kapitel 8: Grafische Benutzerschnittstellen

Geschachtelte Klassen

Einführung in die Programmierung

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Funktionale und Objekt-Orientierte Programmierkonzepte

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Vgl. Oestereich Kap 2.4 Seiten

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

Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

EINFÜHRUNG IN DIE PROGRAMMIERUNG

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

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

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

Kapitel 12: Ausnahmen und Ausnahmebehandlung

Kapitel 4: Anweisungen und Kontrollstrukturen

10. Pakete. Ein Paket (package) bündelt thematisch zusammengehörige Klassen und Schnittstellen zu einer Klassenbibliothek.

Pakete. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Klassen und Konstruktoren in Java

Grundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete

Grafische Benutzeroberflächen

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Das ISO / OSI -7 Schichten Modell

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Benutzeroberflächen. Java Teil 4

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse

Grafische Benutzeroberflächen

Teil 2: OOP und JAVA (Vorlesung 11)

Einführung in die Objektorientierte Programmierung Vorlesung 10: Zugriffskontrolle. Sebastian Küpper

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Praktikum 1: Einführung, BMI Rechner

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Programmieren in Java

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Java I Vorlesung Generics und Packages

Grundlagen der Informatik für Ingenieure I

Kapitel 1: Einführung

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden.

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

1. In welchen Formen (mindestens zwei) kann man durch das Ersetzbarkeitsprinzip Wiederverwendung erzielen?

Übung Einführung in die Softwaretechnik

Java für Computerlinguisten

7. Objektorientierung. Informatik II für Verkehrsingenieure

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp

Autoboxing - Nachtrag

1. Welche Programmzeilen definieren die main-methode richtig?

Objekt-Orientierte Programmierung

Objektdiagramm Komponentendiagramm Paketdiagramm. 6. Weitere Strukturdiagramme

Programmiertechnik GUI Programmierung mit Java Swing

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung. Kapitel 16: Pakete, Zugriffsschutz

Einstieg in die Informatik mit Java

JUnit. Unit testing unter Java

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Kapitel 5: Interfaces

Einstieg in die Informatik mit Java

Objektorientierte Programmierung Studiengang Medieninformatik

Konstruktoren, Packages und Scopes

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

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

Vorbereitende Aufgaben

Javakurs für Fortgeschrittene

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1

Einführung in GUI-Programmierung. javax.swing

Arrays von Objekten. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Vererbung, Polymorphie

Einstieg in die Informatik mit Java

Objektorientierte Programmierung

Info B VL 11: Innere Klassen/Collections

Objektorientierte Software-Entwicklung

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Das ISO/OSI Referenzmodell Internet (TCP/IP) Referenzmodell. Standard Elemente Schichten im ISO/OSI Referenzmodell.

Einführung in die Programmierung: Tutorium

All People Seem To Need Data Processing: Application Presentation - Session Transport Network Data-Link - Physical

Einführung: Verteilte Systeme - Remote Method Invocation -

Polymorphie und UML Klassendiagramme

Transkript:

Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Ziele Kapitel 15: Systemarchitektur und Packages Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische Informatik Institut für Informatik, LMU München Grundprinzipien der Systemarchitektur verstehen Schichtenarchitekturen kennenlernen Modelle und Programme mit Paketen strukturieren Beispiel: Architektur für eine einfache Bankanwendung WS 2018/19 Stand der Folien: 6. Februar 2019 Die Inhalte dieser Folien basieren mit freundlicher Genehmigung tlw. auf Folien von Prof. Dr. Rolf Hennicker aus dem WS 2017/18 und auf Folien von PD Dr. Ulrich Schöpp aus dem WS 2010/11 D. Sabel 15 Systemarchitektur WS 2018/19 2/42 Grundprinzipien Schichtenarchitekturen Pakete Grundprinzipien der Systemarchitektur Große Softwaresysteme bestehen aus mehr als 50.000 Lines of Code (LoC) und benötigen i.a. mehr als 10 Personenjahre für die Entwicklung Sehr große Softwaresysteme mehr als 1 Million LoC Beispiele: 10 Mio LoC 40 Mio LoC 86 Mio LoC 238 Mio LoC Grundprinzipien der Systemarchitektur (2) Große Softwaresysteme bestehen aus vielen Teilsystemen, Modulen, Komponenten Die Systemarchitektur beschreibt die Struktur eines Softwaresystems durch Angabe seiner Teile und deren Verbindungen (häufig über Schnittstellen) Windows 95 Windows XP Mac OS X 2004 SAP NetWeaver 2007 SAP NetWeaver: Plattform für Geschäftsanwendungen mit zahlreichen Komponenten D. Sabel 15 Systemarchitektur WS 2018/19 3/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 4/42 Grundprinzipien Schichtenarchitekturen Pakete

Grundregeln bei der Erstellung von Systemarchitekturen A C Hohe Kohärenz (high cohesion): Zusammenfassung logisch zusammengehörender Elememente in einem Teilsystem Geringe Kopplung (low coupling): Möglichst wenige Abhängigkeiten zwischen den einzelnen Teilsystemen (insbesondere keine zyklischen Abhängigkeiten) B F H I G E D A C = hängt ab B F H I G E D Grundregeln bei der Erstellung von Systemarchitekturen (2) A B D C E F G H I Vorteile bei geringer Kopplung: leichte Änderbarkeit und leichte Ausstauschbarkeit der einzelnen Teile Niedrige Kohärenz & starke Kopplung Hohe Kohärenz & geringe Kopplung D. Sabel 15 Systemarchitektur WS 2018/19 5/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 6/42 Grundprinzipien Schichtenarchitekturen Pakete Grundregeln bei der Erstellung von Systemarchitekturen (3) Beachte: Wird ein Teil T geändert, so müssen alle Teile, die auf T verweisen, auf etwaige nötige Änderungen geprüft werden. A C B F H I G E D A C B F H I G E D Schichtenarchitekturen Oft baut man ein System als Schichtenarchitektur auf Die untere Schicht stellt Dienste für darüberliegende Schichten bereit Beispiel: Das OSI-Schichtenmodell für Netzwerkprotokolle besteht aus 7 Schichten: Schicht 7 Schicht 6 Schicht 5 Schicht 4 Schicht 3 Schicht 2 Schicht 1 OSI = Open Systems Interconnection Anwendungsschicht (Application Layer) Darstellungsschicht (Presentation Layer) Sitzungsschicht (Session Layer) Transportschicht (Transport Layer) Vermittlungsschicht (Network Layer) Sicherungsschicht (Data Link Layer) Bitübertragungsschicht (Physical Layer) Beispiele: Betriebssystemschichten, 3-Ebenen-Datenbankarchitektur,... D. Sabel 15 Systemarchitektur WS 2018/19 7/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 8/42 Grundprinzipien Schichtenarchitekturen Pakete

Schichtenarchitekturen (2) Drei-Schichten-Architektur für betriebliche Informationssysteme (1) Geschlossene Architekturen Eine Schicht darf nur auf die direkt darunterliegende Schicht zugreifen Offene Architekturen Eine Schicht darf auf alle darunterliegende Schichten zugreifen Client/Server-Systeme Verschiedene Schichten sind auf verschiedene Rechner verteilt. Beachte: Eine Schicht kann selbst wieder aus verschiedenen Teilsystemen bestehen Layer 1 Layer 2... Layer n Anwendungskern Datenbank D. Sabel 15 Systemarchitektur WS 2018/19 9/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 10/42 Grundprinzipien Schichtenarchitekturen Pakete Drei-Schichten-Architektur für betriebliche Informationssysteme (2) Drei-Schichten-Architektur für betriebliche Informationssysteme (3) Anwendungskern Anwendungskern Datenbank Datenbank Behandlung von Terminalereignissen (Maus-Klick, Tastendruck,... ) Ein-/Ausgabe von Daten, Diaglogkontrolle D. Sabel 15 Systemarchitektur WS 2018/19 11/42 Grundprinzipien Schichtenarchitekturen Pakete Anwendungskern (Fachkonzept) Zuständig für die Anwendungslogik (die eigentlichen Aufgaben des Problembereichs) D. Sabel 15 Systemarchitektur WS 2018/19 12/42 Grundprinzipien Schichtenarchitekturen Pakete

Drei-Schichten-Architektur für betriebliche Informationssysteme (4) Drei-Schichten-Architektur für betriebliche Informationssysteme (5) Anwendungskern Anwendungskern Datenbank Datenbank Sorgt für die Speicherung von und den Zugriff auf persistente Daten der Anwendung D. Sabel 15 Systemarchitektur WS 2018/19 13/42 Grundprinzipien Schichtenarchitekturen Pakete z.b. Kommunikationsdienste, Dateiverwaltung, Bibliotheken (APIs, GUI, math. Funktionen,... ) D. Sabel 15 Systemarchitektur WS 2018/19 14/42 Grundprinzipien Schichtenarchitekturen Pakete Thin vs. Thick-Client Pakete Bei Client/Server-Architekturen (z.b. Web-Anwendungen) spricht man von einem Thick-Client, wenn und Anwendungskern auf demselben Rechner ausgeführt werden. Thin-Client, wenn und Anwendungskern auf verschiedene Rechner verteilt sind. Pakete dienen zur Gruppierung von Elementen größerer Systeme. Sie können sowohl in der Modellierung (UML) als auch in der Programmierung (Java) verwendet werden. D. Sabel 15 Systemarchitektur WS 2018/19 15/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 16/42 Grundprinzipien Schichtenarchitekturen Pakete

Pakete in UML-Notation Sichtbarkeiten und Elemente von Paketen Pakete ohne Anzeigen der Inhalte Paketname Pakete mit Anzeigen der Inhalte Paketname +A -B Klassen in Paketen sind öffentlich oder nur im selben Paket sichtbar Pakete können Unterpakete enthalten Die öffentlichen Elemente eines Pakets sind außerhalb des Pakets (immer) zugreifbar unter Verwendung ihres qualifizierten Namens z.b. Paketname::A in UML und Paketname.A in Java Paketname +A -B +A1 +A2 Unterpaket +A1 +A2 Unterpaket D. Sabel 15 Systemarchitektur WS 2018/19 17/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 18/42 Grundprinzipien Schichtenarchitekturen Pakete Importieren von Paketen Durch Importieren können die Namen von öffentlichen Elementen eines (importierten) Pakets in den Namensraum eines anderen (importierenden) Pakets übernommen werden. Privater Import in UML: Paket 2 Paket 1 Privater Import: Importierte Elemente können nicht weitergegeben werden. Ihre Sichtbarkeit wird im importierenden Paket auf privat gesetzt. MyGUI -Window (from awt) awt +Window Importieren von Modellelementen Klassen (und Interfaces) können auch einzeln aus anderen Paketen importiert werden Paket 2 +A -B b Paket 1 +B -C c Die öffentliche Klasse B (und ihre öffentlichen Elemente) sind außerhalb des Paket 1 zugreifbar, und zwar direkt mit ihrem Namen (ohne Qualifizierung), wenn die Klasse importiert wird. -C +MyWindow D. Sabel 15 Systemarchitektur WS 2018/19 19/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 20/42 Grundprinzipien Schichtenarchitekturen Pakete

Java: Verwendung vorhandener Pakete (1) Wir haben bereits mehrfach Standardbibliotheken in Java importiert. Dafür steht die import-anweisung zur Verfügung. Beispiel: import java. util. NoSuchElementException ; Hierbei ist: java ein Paket util ein Unterpaket (von java) NoSuchElementException eine Klasse des Unterpakets util java util +NoSuchElementException Java: Verwendung vorhandener Pakete (2) Verwendung von Klassen aus Paketen ist auch ohne import-anweisung möglich: Verwende voll-qualifizierten Namen Beispiel: java. util. NoSuchElementException e = new java. util. NoSuchElementException (" Fehler "); java util +NoSuchElementException Nach dem Import kann die Klasse NoSuchElementException verwendet werden. D. Sabel 15 Systemarchitektur WS 2018/19 21/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 22/42 Grundprinzipien Schichtenarchitekturen Pakete Konflikte beim Import Alle Klassen und Interfaces eines Pakets importieren Annahme: Die Pakete meinpaket1 und meinpaket2 exportieren jeweils eine Klasse MeineKlasse. Importiert man beide Klassen, so führt das zum Compilierfehler. import meinpaket1. MeineKlasse ; import meinpaket2. MeineKlasse ; error: a type with the same simple name is already defined by the single-type-import of MeineKlasse import meinpaket2.meineklasse; Mit import Paketname.*; werden alle (sichtbaren) Klassen und Interfaces des Pakets importiert. Beachte: Unterpakete und deren Klassen und Interfaces werden dadurch nicht importiert. Diese müssen mit import Paketname.Unterpaketname.*; importiert werden. Richtig ist in diesem Fall Verwende die Klassen mit voll qualifizierten Namen (ohne Import-Anweisungen) D. Sabel 15 Systemarchitektur WS 2018/19 23/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 24/42 Grundprinzipien Schichtenarchitekturen Pakete

Eigene Pakete deklarieren Die Zugehörigkeit einer Quelldatei zu einem Paket meinpaket wird durch die Zeile package meinpaket ; gekennzeichnet. Die Zeile muss vor den import-anweisungen stehen. Die Quelldatei muss im Verzeichnis meinpaket im Dateisystem abgelegt werden. Name der Quelldatei: MyClass.java, wenn sie die Klasse MyClass als öffentliche Klasse definiert (mit public gekennzeichnet). Pro.java-Datei darf nur eine Klasse als public definiert werden. Eigene Pakete deklarieren (2) Unterpakete werden durch die Punkt-Notation deklariert, z.b. package meinpaket. meinunterpaket ; deklariert meinunterpaket als Unterpaket von meinpaket Die Quelldateien des Unterpakets müssen im Verzeichnis meinunterpaket liegen, welches selbst im Verzeichnis paket liegt. meinpaket MyClass.java meinpaket MyClass.java meinunterpaket MyClass.java D. Sabel 15 Systemarchitektur WS 2018/19 25/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 26/42 Grundprinzipien Schichtenarchitekturen Pakete Beispiel: Falsche Verzeichnisstruktur Annahme: Die Dateien ClassInSubSubSubPackage.java und Main.java liegen im selben Verzeichnis im Dateisystem. ClassInSubSubSubPackage.java Main.java Datei Main.java import top.sub.sub.subpackage.*; public class Main { public static void main(string[] args) { ClassInSubSubSubPackage test = new ClassInSubSubSubPackage(); Kompilieren ergibt einen Fehler: Datei ClassInSubSubSubPackage.java package top.sub.sub.subpackage; public class ClassInSubSubSubPackage { Main.java:1: error: package top.sub.sub.subpackage does not exist import top.sub.sub.subpackage.*; ^ D. Sabel 15 Systemarchitektur WS 2018/19 27/42 Grundprinzipien Schichtenarchitekturen Pakete Beispiel mit richtiger Verzeichnisstruktur Die Datei ClassInSubSubSubPackage.java liegt im Verzeichnis top/sub/sub/sub/ und Main.java liegt im aktuellen Verzeichnis, das top enthält top sub Main.java sub sub ClassInSubSubSubPackage.java Nun sind die Konventionen eingehalten und die Kompilierung ist erfolgreich. D. Sabel 15 Systemarchitektur WS 2018/19 28/42 Grundprinzipien Schichtenarchitekturen Pakete

Sichtbarkeiten: Klassenebene Beispiel: Sichtbarkeit auf Klassenebene Datei: paket1/publicclass1.java Auf Klassenebene kennt Java nur zwei Sichtbarkeiten: Öffentlich (Klasse ist mit public class definiert.) Package-private (die Klasse ist ohne public definiert). Öffentliche Klassen sind überall sichtbar Package-private Klassen können nur innerhalb desselben Pakets verwendet werden. package paket1; public class PublicClass1 { PublicClass1() { PackagePrivateClass1 m = new PackagePrivateClass1(); Datei: paket1/packageprivateclass1.java package paket1; class PackagePrivateClass1 { PackagePrivateClass1() { Kompilierung javac paket1/publicclass1.java ist erfolgreich (da PublicClass1 auf PackagePrivateClass1 zugreifen darf, da beide in Paket paket1 sind) D. Sabel 15 Systemarchitektur WS 2018/19 29/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 30/42 Grundprinzipien Schichtenarchitekturen Pakete Beispiel: Sichtbarkeit auf Klassenebene (2) Sichtbarkeiten auf Attribut- und Methodenebene Datei: paket2/publicclass2.java package paket2; import paket1.publicclass1; import paket1.packageprivateclass1; public class PublicClass2 { PublicClass2() { Kompilierung schlägt fehl: >javac paket2/publicclass2.java paket2\publicclass2.java:3: error: PackagePrivateClass1 is not public in paket1; cannot be accessed from outside package import paket1.packageprivateclass1; ^ Modifier Zugriff von selber Klasse selbes Paket Unterklasse irgendwo public erlaubt erlaubt erlaubt erlaubt protected erlaubt erlaubt erlaubt verboten ohne erlaubt erlaubt verboten verboten private erlaubt verboten verboten verboten Ohne Modifier nennt man auch package-private In UML-Notation werden package-private Methoden durch voranstehendes Symbol gekennzeichnet D. Sabel 15 Systemarchitektur WS 2018/19 31/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 32/42 Grundprinzipien Schichtenarchitekturen Pakete

Pakete in UML und Java: Beispiel Beispiel: Banksystem P Q +A + void op1() void op2() - void op3() -A (from P) Wir restrukturieren das Banksystem aus Zentralübung 10. -B -C -D -E - void do() - void do() - void do() - void do() package P; public class A { public void op() { void op2() { private void op3() { package P; class B extends A { private void do() { this.op1(); this.op2(); this.op3(); package P; class C { private void do() { A a = new A(); a.op1(); a.op2(); a.op3(); package Q; import P.*; class D extends A { private void do() { this.op1(); this.op2(); package Q; import P.*; class E { private void do() { A a = new A(); a.op1(); a.op2(); B a = new B(); D. Sabel 15 Systemarchitektur WS 2018/19 33/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 34/42 Grundprinzipien Schichtenarchitekturen Pakete Banksystem als 2-Schichtenarchitektur (1) Banksystem als 2-Schichtenarchitektur (2) bankgui (bankgui) +BankFrameMain +void main(string[] args) +BankFrame -Bank bank bankkern Anwendungskern (bankkern) +Bank -BankKonto konten BankKonto D. Sabel 15 Systemarchitektur WS 2018/19 35/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 36/42 Grundprinzipien Schichtenarchitekturen Pakete

Verzeichnisstruktur und Quelltextdateien Java-Klasse BankFrameMain Hauptverzeichnis BankFrameMain.java bankgui //Import aller oeffentlichen Klassen des Pakets bankgui import bankgui.*; public class BankFrameMain { bankkern BankFrame.java Bank.java BankKonto.java public static void main(string[] args) { BankFrame frame = new BankFrame(); frame.setvisible(true); D. Sabel 15 Systemarchitektur WS 2018/19 37/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 38/42 Grundprinzipien Schichtenarchitekturen Pakete Java-Klasse BankFrame Java-Klasse Bank // Zugehoerigkeit zum Paket bankgui package bankgui; // Import der oeffentlichen Klassen des Pakets bankkern import bankkern.*; import java.awt.container; public class BankFrame extends JFrame implements ActionListener { private Bank bank; // Zugehoerigkeit zum Paket bankkern package bankkern; public class Bank { private BankKonto[] konten; D. Sabel 15 Systemarchitektur WS 2018/19 39/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 40/42 Grundprinzipien Schichtenarchitekturen Pakete

Java-Klasse BankKonto Zusammenfassung // Zugehoerigkeit zum Paket bankkern package bankkern; public class BankKonto { Systemarchitektur: Struktur des Softwaresystems (Teile und Verbindungen) Hohe Kohärenz und Geringe Kopplung Schichtenarchitekturen Pakete: UML und Java D. Sabel 15 Systemarchitektur WS 2018/19 41/42 Grundprinzipien Schichtenarchitekturen Pakete D. Sabel 15 Systemarchitektur WS 2018/19 42/42 Grundprinzipien Schichtenarchitekturen Pakete