SW-Archäologie mit AspectJ

Größe: px
Ab Seite anzeigen:

Download "SW-Archäologie mit AspectJ"

Transkript

1 SW-Archäologie mit AspectJ Ausgrabungen vergangener SW-Architekturen Java Forum Stuttgart

2 Agenda Die klassische Herangehensweise Ein kleiner Ausflug mit AOP Herangehensweise mit AOP Fazit Diskussion Es gibt zwei Arten von Programmen: Die einen laufen nicht, und die anderen sind veraltet. 09/24/13 2

3 1.0 Die klassische Herangehensweise Eigentlich waren wir noch nicht fertig, aber wir mussten liefern. 3

4 Wunsch! die Anwendung ist dokumentiert! die Doku ist aktuell! Test-System vorhanden! Unit-Tests u. Integrationstests! Testergebnisse reproduzierbar! Know-How vorhanden

5 Wunsch und Realität! die Anwendung ist dokumentiert! die Doku ist aktuell! Test-System vorhanden! Unit-Tests u. Integrationstests! Testergebnisse reproduzierbar! Know-How vorhanden! Doku? Welche Doku?! Doku wurde nie aktualisiert! Test-System = Produktivsystem! viele rote JUnit-Tests! agile Test-Daten! ehem. Entwickler verschwunden

6 Einstieg Dokumentation! Pflichtenheft! Architektur-Dokumente! hilfreich: Übersicht über die Architektur! Klassendiagramme und andere UML-Diagramme! Infrastruktur! beteiligte Systeme! Firewalls

7 Für wen? Aktualität? Wo? Ansprechpartner?

8 Realität Die aktuell gültige Quelle ist der Source-Code!

9 Alles was mir hilft, den Sourcecode zu verstehen, hilft mir das System zu verstehen. streng vertraulich, vertraulich, intern, öffentlich Autor / Thema der Präsentation 09/24/13 9

10 Testsysteme vorhanden?

11 Testfälle dokumentieren die dynamische Sicht des Systems 09/24/13 11

12 2.0 Ein kleiner Ausflug mit AOP Wir haben s nochmal neu geschrieben, weil 1.0 nicht wartbar war. 12

13 Ein kleiner Abstecher in AOP

14 public class Konto { private double kontostand = 0.0; public double abfragen() { return kontostand; public void einzahlen(double betrag) { kontostand = kontostand + betrag; public void abheben(double betrag) { kontostand = kontostand - betrag; public void ueberweisen(double betrag, Konto andereskonto) { abheben(betrag); andereskonto.einzahlen(betrag);

15 public class Konto { private double kontostand = 0.0; alle Kontobewegungen müssen protokolliert werden public double abfragen() { return kontostand; public void einzahlen(double betrag) { kontostand = kontostand + betrag; public void abheben(double betrag) { kontostand = kontostand - betrag; public void ueberweisen(double betrag, Konto andereskonto) { abheben(betrag); andereskonto.einzahlen(betrag);

16 public class Konto { private static Logger log = Logger.getLogger(Konto.class); private double kontostand = 0.0; werden public double abfragen() { return kontostand; public void einzahlen(double betrag) { kontostand = kontostand + betrag; log.info("neuer Kontostand: " + kontostand); public void abheben(double betrag) { kontostand = kontostand - betrag; alle Kontobewegungen müssen protokolliert public void ueberweisen(double betrag, Konto andereskonto) { abheben(betrag); andereskonto.einzahlen(betrag); log.info("neuer Kontostand: " + kontostand);

17 fachliche Concerns Einzahlung Auszahlung Überweisung Dauerauftrag technische Concerns Authorisierung Sicherheit Logging GUI Transaktionen

18 fachliche Concerns Einzahlung Auszahlung Überweisung Dauerauftrag technische Concerns Authorisierung Sicherheit Logging GUI Transaktionen Konto kontostand abfragen einzahlen + logging abheben + logging überweisen

19 fachliche Concerns Einzahlung Auszahlung Überweisung Dauerauftrag technische Concerns Authorisierung Sicherheit Logging GUI Transaktionen Konto kontostand abfragen einzahlen abheben überweisen LogAspect logging

20 public aspect LogAspect { wenn sich der Kontostand ändert, gib eine Log- Meldung aus private static Logger log = Logger.getLogger(LogAspect.class); pointcut setkontostand() : set(double bank.konto.kontostand); after(double neu) : setkontostand() && args(neu) { log.info("neuer Kontostand: " + neu);

21 Program Execution JoinPoints

22 Pointcuts Program Execution JoinPoints

23 Pointcuts Program Execution Advice

24 JoinPoints können sein call execution initialization set/get handler

25 Konto konto = new Konto(); konto.einzahlen(500.0); 1. call 2. initialization 3. call 4.execution

26 pointcut setkontostand() : set(double bank.konto.kontostand); pointcut callbankmethods() : call(* bank.*konto.*(*)) call(* bank..*konto.*(..));

27 Program Execution before Advice after Advice around Advice

28 after(double neu) : setkontostand() && args(neu) { log.info("neuer Kontostand von " + thisjoinpoint.getthis() + ": " + neu); before() : callbankmethods() { log.debug("test: " + thisjoinpoint);

29 Object around() : loginrequiredexecutions() { if (!AccessControl.loggedIn()) { log.info("anmeldung notwendig"); try { AccessControl.login(); catch (LoginException e) { throw new AccessControlException("login failed"); return proceed();

30 public aspect AccessControlAspect { pointcut loginrequiredexecutions() : execution(@loginrequired * bank.konto.*(..));

31 private double kontostand = 0.0; Konto public void einzahlen(double betrag) { kontostand = kontostand + betrag; public void abheben(double betrag) { kontostand = kontostand - betrag; public void ueberweisen(double betrag, Konto andereskonto) { this.auszahlen(betrag); andereskonto.einzahlen(betrag); KontoAspect pointcut kontobewegung(double betrag): (call(public void bank.konto.einzahlen(double)) call(public void bank.konto.abheben(double))) && args(betrag); before(double betrag) : kontobewegung(betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); Konto.class private double kontostand = 0.0; public void einzahlen(doube betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); kontostand = kontostand + betrag; public void abheben(double betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); kontostand = kontostand - betrag; public void ueberweisen(double betrag, Konto andereskonto) { this.auszahlen(betrag); andereskonto.einzahlen(betrag);

32 3.0 Herangehensweise mit AOP Jetzt kann man damit arbeiten.

33 Herangehensweise mit AOP Schnittstellen beobachten

34 Schnittstellen beobachten Webbrowser Blackbox System X DB-Host java.net.socketexception: Übersicht java.net.connectexception: (Beispiel) Connection refused at com.mysql.jdbc.standardsocketfactory.connect(standardsocketfactory.java:156) at com.mysql.jdbc.mysqlio.<init>(mysqlio.java:283) at com.mysql.jdbc.connection.createnewio(connection.java:2541) at com.mysql.jdbc.connection.<init>(connection.java:1474) at com.mysql.jdbc.nonregisteringdriver.connect(nonregisteringdriver.java:264) at java.sql.drivermanager.getconnection(drivermanager.java:525) at java.sql.drivermanager.getconnection(drivermanager.java:193) at bank.archiv.init(archiv.java:25)...

35 DB-Verbindungen after() returning(object ret) : call(* java.sql.*.*(..)) { log.trace(joinpointhelper.getasstring(thisjoinpoint) + " = " + ret); java.sql.drivermanager.getconnection("jdbc:mysql://miniserver07:3306/test") = com.mysql.jdbc.connection@16a9d42 java.sql.connection.preparestatement("select kontostand from konto WHERE kontonr =?") = com.mysql.jdbc.serverpreparedstatement[1] - SELECT kontostand from konto WHERE kontonr = nu java.sql.preparedstatement.setint(1, 1) = (null) java.sql.preparedstatement.executequery() = com.mysql.jdbc.resultset@183f74d java.sql.resultset.next() = true java.sql.resultset.getdouble(1) = java.sql.resultset.close() = (null)

36 Aufruf von außen (1) public pointcut executepublic() : (execution(public * bank..*.*(..)) execution(public bank..*.new(..))) &&!within(environmentaspect); public pointcut executeframework() : execution(* bank..*.*(..)) execution(bank..*.new(..)); public pointcut calledfromoutside() : executepublic() &&!cflowbelow(executeframework()); before() : calledfromoutside() { Signature sig = thisjoinpoint.getsignature(); String caller = getcaller(thread.currentthread().getstacktrace(), sig); log.info(caller + " calls " + sig);

37 Aufruf von außen (2) Webbrowser org.apache.jsp.index_jsp._jspservice(index_jsp.java:54) calls bank.konto(int) org.apache.jsp.index_jsp._jspservice(index_jsp.java:58) calls void bank.konto.einzahlen(double) org.apache.jsp.index_jsp._jspservice(index_jsp.java:60) calls double bank.konto.abfragen() org.apache.jsp.index_jsp._jspservice(index_jsp.java:54) calls bank.konto(int) org.apache.jsp.index_jsp._jspservice(index_jsp.java:58) calls void bank.konto.einzahlen(double) org.apache.jsp.index_jsp._jspservice(index_jsp.java:60) calls double bank.konto.abfragen() Blackbox System X Übersicht (Beispiel) DB-Host

38 Daten-Recorder (Objekt-Log aufzeichnen) after() returning(object ret) : sqlcall() { objlogger.log(thisjoinpoint, ret);

39 Daten-Recorder (Objekt-Log einspielen) Object around() : sqlcall() { Object logged = loganalyzer.getreturnvalue(thisjoinpoint); return logged;

40 Demo?

41 Ergebnis! zusätzliches Logging! Tests laufen ohne DB! Auslagerung von Code-Änderungen

42

43 UMLGraph BankRepositoryTest 0:Account 1:Account BankRepository getbalance() 0 transfer(account 1, Account 0... transfer(200, Account 0) debit(200) deposit(200) getbalance() 200

44 4.0 Fazit Wir halten uns an den Standard.

45 Fazit! Dokumentation ist Teil des Problems! Source ist die einzig aktuelle Dokumentation! Einarbeiten heißt Ausprobieren! Testfälle = Problemfälle! zusätzliche Erkenntnisse durch AOP

46 AOP kann helfen! beim Logging! beim Capture & Replay! beim Zeit zurückdrehen! Trennung Code - Änderungen aber: AOP kann keine Tests ersetzen AOP ist kein Allheilmittel

47 Links & Literatur! Oliver Böhm Aspektorientierte Programmierung mit AspectJ 5 Media-Streamer in Java ein Fallbeispiel mit AOP UMLGraph websequence diagrams ObjectRecorder, SequenceGrapher Java aktuell

48 Fragen! 5.0 Fragen? Oliver Böhm

AOP by Examples. JavaLand, 25. März 2015, Oliver Böhm. Photo from

AOP by Examples. JavaLand, 25. März 2015, Oliver Böhm. Photo from AOP by Examples JavaLand, 25. März 2015, Oliver Böhm Photo from http://www.ukaop.org.uk/ 1 Wie alles begann U.S. Army Photo 1960 1980 2000 Assembler 1960 1980 2000 FORTRAN COBOL C Assembler 1960 1980 2000

Mehr

SW-Archäologie mit AOP (Praxisbericht)

SW-Archäologie mit AOP (Praxisbericht) SW-Archäologie mit AOP (Praxisbericht) Ausgrabungen vergangener SW-Architekturen 9. Workshop SW-Reengineering Bad Honnef Mail 2007 Oliver.Boehm@agentes.de agentes AG 2006 Aktionäre Pironet NDH AG (Hauptaktionär)

Mehr

AOP by Examples A P. 3. August Folie 1. AOP by Examples. agentes GmbH

AOP by Examples A P. 3. August Folie 1. AOP by Examples. agentes GmbH O A P 3. oliver.boehm@agentes.de Folie 1 Inhalt von Assember bis AspectJ Hello-World-Beispiel Begrifflichkeiten noch mehr Beispiele Was ist neu in AspectJ 1.6? Zusammenfassung Folie 2 von Assembler bis

Mehr

Die NullPointerException-Falle

Die NullPointerException-Falle Die NullPointerException-Falle If we were able to understand it, we wouldn't call it code! (aus http://www.michael-puff.de/ablage/signaturen.php) 5. Juli 2007 Java Forum Stuttgart Oliver.Boehm@agentes.de

Mehr

Ist AOP reif für die Praxis? (AOP = Aspektorientierte Programmierung) aop. Juli agentes AG

Ist AOP reif für die Praxis? (AOP = Aspektorientierte Programmierung) aop. Juli agentes AG Ist AOP reif für die Praxis? (AOP = Aspektorientierte Programmierung) aop Juli 2006 Oliver.Boehm@agentes.de agentes AG Wir über uns Aktiengesellschaft mit Sitz in Stuttgart Ausgründung aus FIDUCIA IT AG

Mehr

ung AOP und AspectJ 2005 agentes AG

ung AOP und AspectJ 2005 agentes AG t ung 1 in AOP und AspectJ Inhalt von Assember bis AspectJ Das Architektur-Dilemma Freie Sicht auf die Businesslogik Do you speak Aschbegt-Dschei? Zusammenfassung 2 von Assembler bis AspectJ 3 AspectC++

Mehr

AOP Day 07. eine Veranstaltung der SIG AspectJ. organisiert vom AOP-Komitee. und der guten Fee. powered by. Oliver Böhm Darko Palic Ludger Solbach

AOP Day 07. eine Veranstaltung der SIG AspectJ. organisiert vom AOP-Komitee. und der guten Fee. powered by. Oliver Böhm Darko Palic Ludger Solbach AOP Day 07 eine Veranstaltung der SIG AspectJ organisiert vom AOP-Komitee Oliver Böhm Darko Palic Ludger Solbach und der guten Fee Bori Gerhardt powered by Historisches (1) Dez. 2005: AspectJ Winter Camp

Mehr

spectj AOP mit Java, Konzepte und Beispiele

spectj AOP mit Java, Konzepte und Beispiele A spectj AOP mit Java, Konzepte und Beispiele AspectJ Ist eine Erweiterung von Java Ist eine aspektorientierte Sprache (wie Java eine objektorientierte Sprache ist) Ist frei verfügbar der Compiler ist

Mehr

OOP. Tagesprogramm. Aspektorientierte Programmierung. Annotationen

OOP. Tagesprogramm. Aspektorientierte Programmierung. Annotationen 1 2014-12-03 Tagesprogramm Aspektorientierte Programmierung Annotationen 2 Aspektorientierte Programmierung Programmierparadigma AspectJ separation of concerns Modularisierung Aspekte kapseln Verhalten

Mehr

Aspektorientierte Programmierung

Aspektorientierte Programmierung Aspektorientierte Programmierung Programmierparadigma AspectJ separation of concerns Modularisierung Aspekte kapseln Verhalten das mehrere Klassen betrifft Objektorientierte Programmiertechniken: Aspektorientiertheit,

Mehr

Advanced Software Engineering WS0910 Kapitel4. Dr. Dominik Haneberg

Advanced Software Engineering WS0910 Kapitel4. Dr. Dominik Haneberg Advanced Software Engineering WS0910 Kapitel4 Dr. Dominik Haneberg ASPEKT-ORIENTIERTE ENTWICKLUNG 08.02.2010 Advanced Software Engineering 2 Einführung Aspektorientierte Programmierung (AOP) ist ein Programmierparadigma,

Mehr

Analyse der Klasse Konto

Analyse der Klasse Konto Klasse Konto erzeugt Objekte vom Typ Konto mit gleichen Eigenschaften mit gleichen Fähigkeiten Welche Eigenschaften hat ein Konto? Attribute Datenfelder - Konto hat eine Nummer - Konto hat Inhaber - Konto

Mehr

Aspekt Orientierte Programmierung

Aspekt Orientierte Programmierung Kapitel 13 Aspekt Orientierte Programmierung 13.1 Aspekte in Apache Wir betrachten den Quellcode des Apache-Servers: Der Code zum XML-Parsen steckt in einer eigenen Klasse (rot) Quelle: aspectj.org 0 ausgearbeitet

Mehr

Einführung in AOP. Rico Schiekel - 012816 rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung

Einführung in AOP. Rico Schiekel - 012816 rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung Einführung in AOP Informatikseminar Rico Schiekel - 012816 rschiekel@web.de Fachhochschule Ravensburg Weingarten Hochschule für Technik und Sozialwesen Einführung in AOP Agenda Kernproblem der Objekt Orientierung

Mehr

Javaaktuell. Sonderdruck. in Höchstform. iii iii iii ijug. iii. Java EE 6: GlassFish, JBoss und Geronimo, Seite 11

Javaaktuell. Sonderdruck. in Höchstform. iii iii iii ijug. iii. Java EE 6: GlassFish, JBoss und Geronimo, Seite 11 D: 4,90 EUR A: 5,60 EUR CH: 9,80 CHF Benelux: 5,80 EUR ISSN 2191-6977 Java in Höchstform Java EE 6: GlassFish, JBoss und Geronimo, Seite 11 Android: Wissenschaftliche Applikationen der nächsten Generation

Mehr

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

Arrays von Objekten. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Arrays: Wiederholung Ein

Mehr

Testen mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Whitebox-Test. Unit-Test

Testen mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Whitebox-Test. Unit-Test 2 Ziele Testen mit JUnit Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 12/04 3 4 Testen

Mehr

Testen mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen

Testen mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen 2 Ziele Testen mit JUnit Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 12/04 3 4 Testen

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Teil 8: Vererbung Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 1. Dezember 2015 Martin

Mehr

Einführung in die Aspect Orientierte Programmierung (AOP) Arno Schmidmeier, AspectSoft JUGS Zürich, Januar 2003

Einführung in die Aspect Orientierte Programmierung (AOP) Arno Schmidmeier, AspectSoft JUGS Zürich, Januar 2003 Einführung in die Aspect Orientierte Programmierung (AOP) Arno Schmidmeier, AspectSoft JUGS Zürich, Januar 2003 Inhalt AOP Einführung Meine Erfahrungen Fragen und Antworten AOP Einführung Arno Schmidmeier

Mehr

Aspektorientierte Programmierung (aspect-oriented programming, AOP)

Aspektorientierte Programmierung (aspect-oriented programming, AOP) Aspektorientierte Programmierung (aspect-oriented programming, AOP) Abstract Die aspektorientierte Programmierung ist ein neues Programmierparadigma, das die Probleme und Nachteile, die aus der prozeduralen

Mehr

6. Übung zu Software Engineering

6. Übung zu Software Engineering 6. Übung zu Software Engineering WS 2009/2010 Henning Heitkötter Entwurfsmuster AUFGABE 15 1 Vorgabe 2 public class DictionaryProcessor extends Processor { private Map dict = new HashMap

Mehr

Instrumentation von Android Anwendungen mit ExplorViz

Instrumentation von Android Anwendungen mit ExplorViz Instrumentation von Android Anwendungen mit ExplorViz Jan Witzany 28. September 2016 Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 1 / 19 Gliederung 1. Motivation

Mehr

3.2 Objekte und Klassen. Wir werden uns in diesem Kapitel näher mit Objekten und Klassen in Java beschäftigen.

3.2 Objekte und Klassen. Wir werden uns in diesem Kapitel näher mit Objekten und Klassen in Java beschäftigen. 3.2 Objekte und Klassen Wir werden uns in diesem Kapitel näher mit Objekten und Klassen in Java beschäftigen. Praktische Informatik I Wolfgang Effelsberg 3. Die Programmiersprache Java 3.2-1 Objektorientierte

Mehr

3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen zu Schnittstellen Was bedeutet Orthogonalität / Separation of Concerns?

Mehr

Beispiel: DB-Mock (1/7)

Beispiel: 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

Mehr

Aspekt-orientierte Programmierung

Aspekt-orientierte Programmierung 1/100 Aspekt-orientierte Programmierung Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Separation der Interessen 2/100 Die Separation der Interessen (separation of concerns)

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Ich liebe Java && Ich liebe C# Rolf Borst

Ich liebe Java && Ich liebe C# Rolf Borst Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String

Mehr

UML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich

UML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich UML / Fujaba Generierung von Java-Quellcode aus UML-Diagrammen Marcel Friedrich Agenda Einleitung Struktur Verhalten Klassendiagramme Storydiagramme Statecharts Action methods 2 Thema Codegenerierung mit

Mehr

Programmieren. JUnit-Tests. Heusch -- Ratz -- Institut für Angewandte Informatik

Programmieren. JUnit-Tests. Heusch -- Ratz --   Institut für Angewandte Informatik Programmieren JUnit-Tests Heusch -- Ratz -- KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development

Mehr

Application Frameworks

Application Frameworks Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung

Mehr

Kapitel 15. Systemarchitektur

Kapitel 15. Systemarchitektur Kapitel 15 Systemarchitektur Systemarchitektur 1 Ziele Grundprinzipien der Systemarchitektur verstehen Schichtenarchitekturen kennenlernen Modelle und Programme mit Paketen strukturieren Eine Architektur

Mehr

Einführung in die Programmierung für NF. Vererbung

Einführung in die Programmierung für NF. Vererbung Einführung in die Programmierung für NF Vererbung Ziele Vererbungsprinzip der objektorien=erten Programmierung verstehen und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden

Mehr

Arrays Fortgeschrittene Verwendung

Arrays Fortgeschrittene Verwendung Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung

Mehr

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck Unit Tests Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.

Mehr

Advices enthalten den eigentlichen Code, der vom AspectJ-Compiler über die Pointcuts an den entsprechenden Stellen eingeflochten wird.

Advices enthalten den eigentlichen Code, der vom AspectJ-Compiler über die Pointcuts an den entsprechenden Stellen eingeflochten wird. 117 5 Advice Programme sind wie Kinder: Sie machen nie das, was sie sollen. (Oli B.) Wir sind in den vorigen Kapiteln schon mit Advices in Berührung gekommen, um die Wirkungsweise von Pointcuts kennen

Mehr

Behutsame Modernisierung

Behutsame Modernisierung Software Evolution mit Legacy Systemen Forum Forschungsförderung / ViSEK Trends im Software Engineering Software Evolution mit Legacy Systemen Behutsame Modernisierung Jan Wloka

Mehr

Fifty Shades of Red. Oder wie man es schafft, dass Entwickler (endlich) unter Ihrer eigenen (schlechten) Software leiden müssen

Fifty Shades of Red. Oder wie man es schafft, dass Entwickler (endlich) unter Ihrer eigenen (schlechten) Software leiden müssen Oder wie man es schafft, dass Entwickler (endlich) unter Ihrer eigenen (schlechten) Software leiden müssen Mirko Seifert, DevBoost GmbH JUG Saxony Day 02.10.2015 Dresden Unser Leben als Softwareentwickler

Mehr

Testen mit JUnit. Martin Wirsing. Ziele. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang

Testen mit JUnit. Martin Wirsing. Ziele. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang Testen mit JUnit Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 12/04 2 Ziele Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen 3 Testen Da

Mehr

Programmieren I. Dr. Klaus Höppner. Hochschule Darmstadt Wintersemester 2009/ / 22

Programmieren I. Dr. Klaus Höppner. Hochschule Darmstadt Wintersemester 2009/ / 22 Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2009/2010 1 / 22 Design von Klassen 2 / 22 Strategie zum Entwurf von Klassen Objektorientierte Sichtweise: Mit welchen Objekten habe

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 11. Fehler und Ausnahmen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Ziele 2 Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen können Ausnahmen behandeln können Fehlerhafte

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 13/14. Kapitel 11. Fehler und Ausnahmen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 13/14. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Ziele 2 Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen können Ausnahmen behandeln können Fehlerhafte

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung in Java Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception

Mehr

Einführung in die Programmierung für NF. Fehler und Ausnahmen

Einführung in die Programmierung für NF. Fehler und Ausnahmen Einführung in die Programmierung für NF Fehler und Ausnahmen Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java- Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen

Mehr

Oracle & Java HOW TO

Oracle & 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

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Objekte und Klassen. Eigene Definition von Klassen. Methoden. Konstruktoren. Instanzvariablen. UML Notation. Gleichheit von Objekten

Objekte und Klassen. Eigene Definition von Klassen. Methoden. Konstruktoren. Instanzvariablen. UML Notation. Gleichheit von Objekten Objekte und Klassen Eigene Definition von Klassen Methoden Konstruktoren Instanzvariablen UML Notation Gleichheit von Objekten Der spezielle Wert null- Informatik II: Objektorientierte SW-Entwicklung,

Mehr

Web-Testen mit JUnit und HttpUnit. Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum

Web-Testen mit JUnit und HttpUnit. Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum 1 Web-Testen mit JUnit und HttpUnit Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum 2 Inhalt Entwicklertests in der Praxis Unit-Testing JUnit HttpUnit Praktisches Beispiel Bewertung

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen

Mehr

4.2 Workshop EJB. Entwicklung von EJB-Anwendungen

4.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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

Mehr

5.2 Workshop EJB. Entwicklung von EJB-Anwendungen. Das JOnAS-System

5.2 Workshop EJB. Entwicklung von EJB-Anwendungen. Das JOnAS-System 5.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

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Ausnahmen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Ausnahmen Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Ausnahmen Motivation Anwendungsbeispiel 1: java Excep1 a: 15 b: 3 a / b = 5 Job done. Konsole Anwendungsbeispiel 2: Konsole java

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Programmieren. JUnit-Tests. Heusch -- Ratz -- Institut für Angewandte Informatik

Programmieren. JUnit-Tests. Heusch -- Ratz --  Institut für Angewandte Informatik Programmieren JUnit-Tests Heusch -- Ratz -- KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test-driven development

Mehr

JUnit. Software-Tests

JUnit. Software-Tests JUnit Software-Tests Übersicht Einleitung JUnit Jia Li Grundlegendes Diana Howey Hendrik Kohrs Praktische Einbindung Benjamin Koch Zili Ye Einleitung in allgemeines Testen Automatische Tests Testen ist

Mehr

Software-Engineering Software-Management

Software-Engineering Software-Management Software-Engineering Software-Management 12.3 Unit-Tests mit JUnit - Wissen, was der Sourcecode macht! Lösung Prof. Dr. Rolf Dornberger Software-Engineering: 12.3 Unit-Tests mit JUnit 30.04.2006 1 12.3

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

UNIVERSITÄ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 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 //

Mehr

Anwendung der Aspektorientierung : Security

Anwendung der Aspektorientierung : Security Seminar AOSD Anwendung der Aspektorientierung : Security Miao Tang Betreuer: Dipl.-Inform. Dirk Wischermann 1. Motivation Anwendung der AO: Security 2 Sicherheitsprobleme beim Design und bei der Programmierung

Mehr

Verifikation und AO Florian Wagner

Verifikation und AO Florian Wagner Verifikation und Aspektorientierung Inhalt Klassifikation und Analyse von Adivces AOP-Fehlermodell und Testkriterien Verifikation Model-Checking State-Based Incremental Testing 2 KLASSIFIKATION UND ANALYSE

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Ersetzbarkeit und Verhalten

Ersetzbarkeit und Verhalten Ersetzbarkeit und Verhalten U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Struktur der Typen für Ersetzbarkeit nicht ausreichend Beispiel: void

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10. Institut für Angewandte Informatik

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10.  Institut für Angewandte Informatik Programmieren I Fehlerbehandlung Exceptions Heusch 2. Bd, 3 Ratz 10 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Exceptions und ihre Behandlung Exception - Ausnahmebedingung

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Java Übung. Übung Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Java Übung. Übung Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Java Übung Übung 3 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 2. Mai 2006 (UniDUE) 2. Mai 2006 1 / 22 Aufgabe 1 Anforderungen: 1 bis max 3 Konten. Möglichkeit Konten anzulegen. Ausgabe aller

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber Konsequent agile Entwicklung mit funk4onaler Programmierung Michael Sperber Individualso4ware branchenunabhängig Scala, Clojure, Erlang, Haskell, F# Schulungen, Coaching www.acave- group.de funkaonale-

Mehr

1 Einführung in Aspektorientierung

1 Einführung in Aspektorientierung Teil I Einleitung 3 1 Einführung in Aspektorientierung Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Martin Fowler in»refactoring«) Neue

Mehr

System.out.println("TEXT");

System.out.println(TEXT); Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class

Mehr

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept Testkonzept 1.Einführung Um die Zuverläsigkeit und die Qualität der Software und des gesamten Systems zu verbessern, sind Tests durchzuführen. Die Testreihe läst sich in drei Stufen einteilen, nülich Komponententest,

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Lernteam OOP2 SW Programmieren 1 - H1103 Felix Rohrer

Lernteam OOP2 SW Programmieren 1 - H1103 Felix Rohrer Aufgabe 1. Klasse Balloon In der Vorlesung wurde bruchstückhaft eine Klasse Balloon eingeführt. Programmieren Sie eine entsprechende Klasse mit BlueJ bzw. fügen Sie nun die "Bruchstücke" zusammen. Kommentieren

Mehr

Kapitel 14. Systemarchitektur

Kapitel 14. Systemarchitektur 1 Kapitel 14 Ziele 2 Grundprinzipien der verstehen Schichtenarchitekturen kennenlernen Modelle und Programme mit Paketen strukturieren Eine Architektur für eine einfache Bankanwendung konstruieren Grundprinzipien

Mehr

JUnit 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. 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

Mehr

Hauptseminar AOSD. Aspektorientierte Programmierung am Beispiel AspectJ

Hauptseminar AOSD. Aspektorientierte Programmierung am Beispiel AspectJ Hauptseminar AOSD Aspektorientierte Programmierung am Beispiel Seite 1 Aspektorientierte Programmierung Umfeld - eine Definition Elemente in Introduction Pointcut Join Point Advice Aspect Errors and Warnings

Mehr

Aspekt-orientierte Programmierung

Aspekt-orientierte Programmierung Aspekt-orientierte Programmierung Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken 2006-01-09 Separation der Interessen Die Separation der Interessen (separation of

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 - ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete II.4.2 Abstrakte Klassen und Interfaces - 1 - Ähnliche Programmteile public class Bruchelement { Bruch wert;

Mehr

Programmiertechnik Ausnahmen

Programmiertechnik Ausnahmen Programmiertechnik Ausnahmen Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation public class Excep1 { public void doyourjob() { Scanner scanner = new Scanner(System.in); System.out.print("a:

Mehr

1 Motivation und Einleitung

1 Motivation und Einleitung AspectJ - AOP für Java Georg Blaschke (georg.blaschke@stud.informatik.uni-erlangen.de) Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Betriebssysteme und Verteilte Systeme 3. Mai 2003

Mehr

Synchronisation in Java. Invisible Web

Synchronisation in Java. Invisible Web Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

2. Übung zu Software Engineering

2. Übung zu Software Engineering 2. Übung zu Software Engineering WS 2007/2008 Organisatorisches [SE] als Teil des E-Mail-Betreffs nicht: SE, Software Engineering, Blatt 01 etc. Abgabe: EINE pdf-datei, spätestens 11:30 Uhr nicht: xls,

Mehr

SS 2010. Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.

SS 2010. Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof. SS 2010 Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1 Übungsblatt 1 Übung - Probeklausur SS 2010 Typ Prof.Humm Aufgabe : Bank-Verwaltungs-System In dieser Klausur werden

Mehr

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

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 10.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 10.12.07 1 / 15

Mehr

Erste Java-Programme (Scopes und Rekursion)

Erste Java-Programme (Scopes und Rekursion) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

// Zeigt den insgesamt einbezahlten Betrag auf der Bank. // Muss 1600 GE sein. System.out.println("Current Bank balance: " + b.

// Zeigt den insgesamt einbezahlten Betrag auf der Bank. // Muss 1600 GE sein. System.out.println(Current Bank balance:  + b. / Testtreiberklasse, welche das Bankensystem testet. Es werden neue Bankkonten angelegt und Geld deponiert, abgehoben und transferiert. public class Main { / Main Methode fuehrt bestimmte Testfaelle aus.

Mehr