Wann soll ich mocken? XP Days Germany David Völkel

Größe: px
Ab Seite anzeigen:

Download "Wann soll ich mocken? XP Days Germany David Völkel"

Transkript

1 Wann soll ich mocken? XP Days Germany David Völkel

2 @davidvoelkel TDD & Design

3 SCHICHTEN TESTEN?

4 INTEGRIERTER TEST

5 Unittest MOCKING Mock

6 Unittest MOCKING Mock

7 Unittest MOCKING Mock

8 TRADE-OFF ZU GROSS vs ZU KLEIN aufwendiges Setup Fehlerfindung # Testfällen Langsames Feedback Refactorability sinkt Isolationsaufwand Zu wenig Nutzen Lesbarkeit

9 Woran orientieren?

10 IDEOLOGIEN MOCKISTS CLASSICISTS "Mocks Aren't Stubs", Martin Fowler

11 TRADE-OFFS statt IDEOLOGIEN!

12 USE CASES Anbindung Drittsysteme MOCKISTS CLASSICISTS

13 USE CASES Bedingte Interaktionen Anbindung Drittsysteme MOCKISTS CLASSICISTS

14 USE CASES Bedingte Interaktionen SWEETSPOT Anbindung Drittsysteme MOCKISTS CLASSICISTS

15 USE CASES Geringer Nutzen Bedingte Interaktionen SWEETSPOT Anbindung Drittsysteme MOCKISTS CLASSICISTS

16 USE CASES Geringer Nutzen Bedingte Interaktionen VERMEIDEN SWEETSPOT Anbindung Drittsysteme MOCKISTS CLASSICISTS

17 MOCKING VERMEIDEN SWEETSPOT BEST PRACTICES

18 VERMEIDEN

19 DONT MOCK VALUES!

20 DON T MOCK VALUES! new Value()

21 DON T MOCK VALUES! new Value() TestDataBuilderForValue.withDefaults().withField( 1 )

22 INTEGRATION OPERATION SEGREGATION PRINCIPLE "Integration Operation Segregation Principle", Ralf Westphal "Die kniffligen Fälle beim Testen - Sichtbarkeit", Stefan Lieser

23 INTEGRATION OPERATION SEGREGATION PRINCIPLE public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; String content = "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service"; mailservice.sendmail( , content);

24 INTEGRATION OPERATION SEGREGATION PRINCIPLE public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; String content = "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service"; mailservice.sendmail( , content);

25 INTEGRATION OPERATION SEGREGATION PRINCIPLE public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; String content = "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service"; mailservice.sendmail( , content);

26 INTEGRATION OPERATION SEGREGATION PRINCIPLE public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String content = rendercontent(customer); mailservice.sendmail( , content); private String rendercontent(customer customer) { String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; return "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service";

27 TESTS? public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String content = rendercontent(customer); mailservice.sendmail( , content); private String rendercontent(customer customer) { String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; return "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service"; N Unittests

28 TESTS? public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String content = rendercontent(customer); mailservice.sendmail( , content); 1 Integrierter Test private String rendercontent(customer customer) { String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; return "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service"; N Unittests

29 PUSH LOGIC DOWN THE STACK Siehe "The Failures of Intro to TDD " - Justin Searls

30 PUSH LOGIC DOWN THE STACK

31 SWEETSPOT

32 BEDINGTE INTERAKTION public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) { userdb.createuser(new User(username)); return "Welcome " + username; else { return "Username ' " + username + "' " + "already taken, please choose another";

33 SYSTEM GRENZEN Adapter 3rd Party Service

34 SYSTEM GRENZEN Mock 3rd Party Service

35 OUTSIDE-IN DESIGN

36 OUTSIDE-IN DESIGN Alternative Fake it

37 BEST PRACTICES

38 NO OVERSPECIFICATION!

39 NO OVERSPECIFICATION! Specify exactly what should happen but no more

40 REIHENFOLGE?

41 COMMAND & QUERY SEPARATION REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?

42 COMMAND & QUERY SEPARATION REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?

43 COMMAND & QUERY SEPARATION REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?

44 COMMAND & public SEPARATION void signup() throws Exception {... when(userdb.finduserby(anystring())).thenreturn(null); mailingservice.signup(username); verify(userdb).createuser(new User(username)); REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?

45 COMMAND & public SEPARATION void signup() throws Exception {... when(userdb.finduserby(anystring())).thenreturn(null); mailingservice.signup(username); verify(userdb).createuser(new User(username)); REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?

46 COMMAND & public SEPARATION void signup() throws Exception {... when(userdb.finduserby(anystring())).thenreturn(null); mailingservice.signup(username); verify(userdb).createuser(new User(username)); REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?

47 COMMAND & public SEPARATION void signup() throws Exception {... when(userdb.finduserby(anystring())).thenreturn(null); mailingservice.signup(username); verify(userdb).createuser(new User(username)); public String REIHENFOLGE signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... IMMER NÖOTWENDIG? userdb.createuser(new User(username)); Allow Queries, expect Commands!

48 LISTEN TO YOUR TESTS! Image by M.J. Moneymaker

49 LISTEN TO YOUR TESTS! # Verifications Image by M.J. Moneymaker

50 LISTEN TO YOUR TESTS! # Verifications Overspecification! Image by M.J. Moneymaker

51 LISTEN TO YOUR TESTS! # Verifications Overspecification! # Dependencies Image by M.J. Moneymaker

52 LISTEN TO YOUR TESTS! # Verifications Overspecification! # Dependencies Extract Class! Image by M.J. Moneymaker

53 LISTEN TO YOUR TESTS! # Verifications Overspecification! # Dependencies Extract Class! # Interactions Image by M.J. Moneymaker

54 LISTEN TO YOUR TESTS! # Verifications Overspecification! # Dependencies Extract Class! # Interactions Tell, don t ask! Image by M.J. Moneymaker

55 TELL DONT ASK public void volumeupclicked() { int volume = speaker.getvolume(); if (volume < speaker.getmaximumvolume()) { speaker.setvolume(volume++); => Tell don't ask

56 TELL DONT ASK public void volumeupclicked() { int volume = speaker.getvolume(); if (volume < speaker.getmaximumvolume()) { speaker.setvolume(volume++); => Tell don't ask

57 TELL DONT ASK public void volumeupclicked() { int volume = speaker.getvolume(); if (volume < speaker.getmaximumvolume()) { speaker.setvolume(volume++); public void volumeupclicked() { speaker.putupvolume(); => Tell don't ask class Speaker { public void putupvolume() { if (this.volume < this.maximum this.volume++;...

58 VERMEIDEN

59 SWEETSPOT

60 BEST PRACTICES

61 MOCKIST ODER CLASSICIST?

62 MOCKIST ODER CLASSICIST? TRADE-OFFS!

63 QUELLEN Growing Object Oriented Systems, Nat Pryce, Steve Freeman "Mocks Aren't Stubs", Martin Fowler "Integration Operation Segregation Principle", Ralf Westphal "Die kniffligen Fälle beim Testen - Sichtbarkeit", Stefan Lieser

64 Q&A?!

65 Licence Creative Commons Attribution-ShareAlike 3.0

Design for Testability in der Praxis David Völkel, codecentric AG

Design for Testability in der Praxis David Völkel, codecentric AG Design for Testability in der Praxis David Völkel, codecentric AG http://commons.wikimedia.org/wiki/file:pit_crew_hudson_valley.jpg http://commons.wikimedia.org/wiki/file:carservice.jpg David Völkel *

Mehr

Die Kunst der kleinen Schritte. David Völkel XP Days Germany

Die Kunst der kleinen Schritte. David Völkel XP Days Germany Die Kunst der kleinen Schritte David Völkel XP Days Germany 09.11.2018 @davidvoelkel codecentric Software Craft Meetup Munich David Völkel XP Days Germany 09.11.2018 #TDD Disclaimer! "It's the small steps

Mehr

JUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Namics. Stefan Bechtold. Principal Software Engineer.

JUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Namics. Stefan Bechtold. Principal Software Engineer. JUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Stefan Bechtold. Principal Software Engineer. 16. Oktober 2014 Aus dem Alltag eines Entwicklers Ein typischer (Unit-)

Mehr

TDD. mit JUnit & Mockito. Tobias Trelle, codecentric

TDD. mit JUnit & Mockito. Tobias Trelle, codecentric TDD mit JUnit & Mockito Tobias Trelle, codecentric AG @tobiastrelle 1 Tobias Trelle Software Architekt @ codecentric AG Twitter: @tobiastrelle Slideshare: http://de.slideshare.net/tobiastrelle/ GitHub:

Mehr

Informatik II Übung 5 Gruppe 3

Informatik II Übung 5 Gruppe 3 Informatik II Übung 5 Gruppe 3 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 5 Leyna Sadamori 29. März 2017 1 Administrativ Die Übung am 5. April fällt aus! Bitte in die Übung in HG G 3

Mehr

Informatik II Übung 5

Informatik II Übung 5 Informatik II Übung 5 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 27.03.2013

Mehr

Einführung in die testgetriebene Entwicklung (TDD)

Einführung in die testgetriebene Entwicklung (TDD) Fachbereich Mathematik und Informatik Institut für Informatik Einführung in die testgetriebene Entwicklung (TDD) Michael Prüm Seminar Beiträge zum Software Engineering 28.03.2013 1 / 55 Gliederung 1. Motivation

Mehr

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;

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

INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN?

INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN? INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN? David Völkel XPDays Germany 14.11.2013 ÜBER MICH David Völkel IT-Consultant für codecentric Twitter: @davidvoelkel Schwerpunkte: Test-Driven Development

Mehr

Warum? Wie? Algorithm Tests Diverses. Unit Tests. Datamining und Sequenzanalyse. Kai Dührkop, Markus Fleischauer

Warum? Wie? Algorithm Tests Diverses. Unit Tests. Datamining und Sequenzanalyse. Kai Dührkop, Markus Fleischauer Unit Tests Datamining und Sequenzanalyse Kai Dührkop, Markus Fleischauer Warum? Code without tests is bad code. It doesn t matter how well written it is; it doesn t matter how pretty or object-oriented

Mehr

Kapitel zu bearbeitende Aufgaben: 6.1 bis :

Kapitel zu bearbeitende Aufgaben: 6.1 bis : Kapitel 6.3.1 1. zu bearbeitende Aufgaben: 6.1 bis 6.5 6.1: 6.2: === Day 23 === 9: pause 10: 11: 12: 13: lunch 14: 15: 16: 17: meeting 6.3: 6.4: PRG1_OOP8_ALG3_SS.docx Seite 1 von 10 http://hslu.ximit.ch

Mehr

Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012

Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012 Testen Tutorial im Rahmen des Software(technik)praktikums SS 2012 Grundlagen (1) Software ist ein fundamentales Element in der Softwarequalitätssicherung Software wird am häufigsten eingesetzt Viele Organisationen

Mehr

II.4.5 Generische Datentypen - 1 -

II.4.5 Generische Datentypen - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche

Mehr

II.4.2 Abstrakte Klassen und Interfaces - 1 -

II.4.2 Abstrakte Klassen und Interfaces - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.2 Abstrakte Klassen und Interfaces - 1

Mehr

Ein Jahr mit dem. Play! Framework FLAVIA IT. Dmitrij Funkner & Jonas Kilian. Quelle: http://www.flickr.com/photos/sdasmarchives/6996901834

Ein Jahr mit dem. Play! Framework FLAVIA IT. Dmitrij Funkner & Jonas Kilian. Quelle: http://www.flickr.com/photos/sdasmarchives/6996901834 Ein Jahr mit dem Play! Framework FLAVIA IT Dmitrij Funkner & Jonas Kilian Quelle: http://www.flickr.com/photos/sdasmarchives/6996901834 Über uns dmitrij funkner jonas kilian Konzentration auf das Wesentliche

Mehr

Stephan Brumme, SST, 3.FS, Matrikelnr

Stephan Brumme, SST, 3.FS, Matrikelnr Aufgabe M3.1 Ich habe versucht, die Funktionalität als Baustein in Klassen zu verpacken. Mein Programm enthält daher keine Routinen zur Ein- / Ausgabe, falls man zu Testzwecken die Abläufe verfolgen will,

Mehr

1 Programmierfehler und ihre Behebung

1 Programmierfehler und ihre Behebung 1 Programmierfehler und ihre Behebung (kleiner lebenspraktischer Ratgeber) Grundsätze: Jeder Mensch macht Fehler... insbesondere beim Programmieren. Läuft ein Programm, sitzt der Fehler tiefer. Programmierfehler

Mehr

Mock-Objekte. Universität Karlsruhe (TH) Fakultät für Informatik Lehrstuhl für Programmiersysteme. Forschungsuniversität gegründet 1825

Mock-Objekte. Universität Karlsruhe (TH) Fakultät für Informatik Lehrstuhl für Programmiersysteme. Forschungsuniversität gegründet 1825 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Mock-Objekte Verschiedene Testhelfer Ein Stummel (engl. stub) ist ein nur rudimentär implementierter Teil der Software und dient als Platzhalter

Mehr

1. Hello, I m Francis Docherty. a. No, sorry. I m not. 2. I m sorry. What was your b. I don t think he

1. Hello, I m Francis Docherty. a. No, sorry. I m not. 2. I m sorry. What was your b. I don t think he A1 Hello, I m Francis Docherty. Was passt zusammen? 1. Hello, I m Francis Docherty. a. No, sorry. I m not. 2. I m sorry. What was your b. I don t think he name again? is at the moment. 3. Excuse me. Are

Mehr

UnitTests? Ja, aber richtig!

UnitTests? Ja, aber richtig! überraschend mehr Möglichkeiten! UnitTests? Ja, aber richtig! O.O.P. Conference / München Thomas Papendieck, Senior Consultant OPITZ CONSULTING 2017 Inhalte 1 Worüber ich nicht spreche 2 Anforderungen

Mehr

Selbststudium OOP7 & ALG2 Auftrag

Selbststudium OOP7 & ALG2 Auftrag Selbststudium OOP7 & ALG2 Auftrag Kapitel 5.6 1. zu bearbeitende Aufgaben: 5.24 bis 5.30 5.24: Return Method Set entryset() V get(object key) Set keyset() V put(k key, V value) void

Mehr

Informatik II (D-ITET) Übungsstunde 5,

Informatik II (D-ITET) Übungsstunde 5, Informatik II (D-ITET) Übungsstunde 5, 30.04.2017 Hossein Shafagh, shafagh@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Besprechung von Übung 4 More Java insights (Call by Value und Call by

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt!! 24.03.2014 ORGANISATORISCHES 09:00-10:30! Täglich Übungen zur Vertiefung! Laptop hier nicht erforderlich! Linux, OS X! Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 09:00-10:30 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Linux, OS X Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

Christian Meder inovex. Sauberes Grün QS für Android

Christian Meder inovex. Sauberes Grün QS für Android Konferenz Christian Meder inovex Sauberes Grün QS für Android Sauberes Grün: QS für Android W-JAX, 2011 Christian Meder inovex GmbH Chief Technology Officer 09.11.2011 1 Speaker Christian Meder Schwerpunkte

Mehr

Weather forecast in Accra

Weather forecast in Accra Weather forecast in Accra Thursday Friday Saturday Sunday 30 C 31 C 29 C 28 C f = 9 5 c + 32 Temperature in Fahrenheit Temperature in Celsius 2 Converting Celsius to Fahrenheit f = 9 5 c + 32 tempc = 21

Mehr

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Testgesteuert Entwickeln mit JUnit 4

Testgesteuert Entwickeln mit JUnit 4 Testgesteuert Entwickeln mit JUnit 4 Tests nebenbei automatisieren Christoph Knabe Beuth-Hochschule für Technik Berlin Testgesteuert Entwickeln mit JUnit4, Christoph Knabe 2002, BHT Berlin, FB VI, 2016-10-20,

Mehr

Übungsstunde 11. Einführung in die Programmierung

Übungsstunde 11. Einführung in die Programmierung Übungsstunde 11 Einführung in die Programmierung Probleme bei Übung 9 [TODO Assistent] Nachbesprechung Übung 10 Aufgabe 1: Mini-Taschenrechner (Bonus!) Feedback nach der Korrektur direkt per Git Lösungsvorschlag

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1

Mehr

JUnit. Unit testing unter Java

JUnit. Unit testing unter Java JUnit Unit testing unter Java Was ist Junit? einfaches Framework zum Schreiben von wiederholbaren Tests Besonders geeignet für unit testing Erlaubt Hierarchie von Testsuites Schreiben eines Test Case 1.

Mehr

Test Driven Development

Test Driven Development Test Driven Development Definition & Motivation [~15min] Demo [~10min] Stubs & Mocks [~15min] Übliche Fehler [~5min] Folie 1 TDD [Kent Beck] Schreibe keine Zeile Code ohne einen fehlschlagenden (roten)

Mehr

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen 1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new

Mehr

Refactoring C# Legacy Code

Refactoring C# Legacy Code Refactoring C# Legacy Code Stefan Lieser @StefanLieser http://refactoring-legacy-code.net http://er.jsc.nasa.gov/seh/13index.jpg Houston, we ve had a problem. Wandelbarkeit https://pixabay.com/de/chamäleon-hautnah-exotische-grün-1414084/

Mehr

STRICT TDD DIE UNTERSCHÄTZTE WAFFE DES ENTWICKLERS

STRICT TDD DIE UNTERSCHÄTZTE WAFFE DES ENTWICKLERS STRICT TDD DIE UNTERSCHÄTZTE WAFFE DES ENTWICKLERS David Völkel Stuttgarter Testtage 2013 ÜBER MICH David Völkel IT-Consultant für codecentric Twitter: @davidvoelkel Schwerpunkte: Test Driven Development

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

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/

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

INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN?

INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN? INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN? David Völkel Frankfurter Entwicklertag 19.02.2014 DAVID VÖLKEL IT-Consultant Schwerpunkte Test-Driven Development Softwaredesign & Clean Code

Mehr

II.4.4 Exceptions - 1 -

II.4.4 Exceptions - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.4 Exceptions - 1 - Ausnahmen (Exceptions)

Mehr

II.4.4 Exceptions - 1 -

II.4.4 Exceptions - 1 - n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen

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

API-Design. Do s and Don ts. Jochen Kraushaar

API-Design. Do s and Don ts. Jochen Kraushaar API-Design Do s and Don ts Jochen Kraushaar Von Kai Meißner, CC0 1.0, https://pixabay.com/photo-2063160/ Von German Lopez, CC0 1.0, https://pixabay.com/photo-2191229/ Wer hat bereits eine API entwickelt?

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt 24.03.2014 ORGANISATORISCHES tobias.witt@hhu.de 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber später in den Übungen!

Mehr

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016 to to May 2016 to What is Programming? All computers are stupid. All computers are deterministic. You have to tell the computer what to do. You can tell the computer in any (programming) language) you

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

Mehr

Property Based Testing

Property Based Testing Property Based Testing Nicolai Mainiero sidion Testen ist schwer Testen ist schwer Warum? Alle Pfade durch den Code aufzuzählen ist aufwendig. Selbst vermeintlich einfache Systeme können komplex sein.

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Unit 4. The Extension Principle. Fuzzy Logic I 123

Unit 4. The Extension Principle. Fuzzy Logic I 123 Unit 4 The Extension Principle Fuzzy Logic I 123 Images and Preimages of Functions Let f : X Y be a function and A be a subset of X. Then the image of A w.r.t. f is defined as follows: f(a) = {y Y there

Mehr

Lesbares Java. Steffen Gemkow. Freitag, 16. November 12

Lesbares Java. Steffen Gemkow. Freitag, 16. November 12 Lesbares Java Steffen Gemkow Zur Person Steffen Gemkow Geschäftsführer Java seit 1996 Agile Coach, Scrum-Master JUnitDoclet, TheWayOut Der Pragmatische Programmierer Wartbarkeit Funktion von Lesbarkeit

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Informatik 2 für Regenerative Energien

Informatik 2 für Regenerative Energien Informatik 2 für Regenerative Energien Klausur vom 5. Juli 2013 Jörn Loviscach Versionsstand: 13. Juli 2013, 18:12 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Mehr

Anwendung (2. Versuch:-) Entkopplung der Locks

Anwendung (2. Versuch:-) Entkopplung der Locks Gut gemeint aber leider fehlerhaft... Jeder Producer benötigt zwei Locks gleichzeitig, um zu produzieren: 1. dasjenige für den Puffer; 2. dasjenige für einen Semaphor. Musser fürden Semaphor einwait()

Mehr

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode folgt im Anschluss. Beispielcode Es gibt eine Klasse Benutzerverwaltung, welche eine Liste mit Benutzern

Mehr

Klasse Label. class Label { Code code; List<Integer> fixuplist; // code positions to patch int adr; // address of label in code

Klasse Label. class Label { Code code; List<Integer> fixuplist; // code positions to patch int adr; // address of label in code Klasse Label class Label { Code code; List fixuplist; // code positions to patch int adr; // address of label in code // inserts offset to label at current void put (); // defines label to be

Mehr

Schnittstellen, Stack und Queue

Schnittstellen, Stack und Queue Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In

Mehr

Softwaretechnik 1 Übung 6

Softwaretechnik 1 Übung 6 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Übung 6 16.07.2009 Aufgabe 1a) Gegebene Methode public static int getnumberofdays(int month, int year) { int days = -1;

Mehr

Übungsblatt 5: Software-Entwicklung 1 (WS 2017/18)

Übungsblatt 5: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Übungsblatt 5: Software-Entwicklung 1 (WS 2017/18) Aufgabe 1 Spezifikationen

Mehr

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB Read Online and Download Ebook PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB DOWNLOAD EBOOK : PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: Click link bellow

Mehr

16. Dynamische Datenstrukturen

16. Dynamische Datenstrukturen Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange

Mehr

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017 1 Informatik II Übung 6 Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017 Heutiges Programm 2 1 Klassen - Technisch 2 Prediscussion

Mehr

Beispiellösung zur Klausur AI2 im Sommersemester 2007

Beispiellösung zur Klausur AI2 im Sommersemester 2007 Beispiellösung zur Klausur AI2 im Sommersemester 2007 Die Lösung soll als Beispiellösung für die Vorbereitung auf die Nachklausur dienen. Es ist durchaus möglich, dass sich noch kleine Fehler eingeschlichen

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Übungen zu Middleware Universität Erlangen-Nürnberg Informatik 4, 2007 Z-Java-Exceptions.fm

Übungen zu Middleware Universität Erlangen-Nürnberg Informatik 4, 2007 Z-Java-Exceptions.fm Z.11Fehlerbehandlung Programm beenden (System.exit()) meist eine schlechte Idee Ausgabe einer Fehlermeldung hilft nicht den Fehler zu überwinden spezieller Rückgabewert kennzeichnet Fehler Konstruktoren

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

VORANSICHT. Halloween zählt zu den beliebtesten. A spooky and special holiday Eine Lerntheke zu Halloween auf zwei Niveaus (Klassen 8/9)

VORANSICHT. Halloween zählt zu den beliebtesten. A spooky and special holiday Eine Lerntheke zu Halloween auf zwei Niveaus (Klassen 8/9) IV Exploringlifeandculture 12 Halloween(Kl.8/9) 1 von28 A spooky and special holiday Eine Lerntheke zu Halloween auf zwei Niveaus (Klassen 8/9) EinBeitragvonKonstanzeZander,Westerengel Halloween zählt

Mehr

PS Software Engineering WS 2018/19

PS Software Engineering WS 2018/19 PS Software Engineering WS 2018/19 Wöchentlich Dienstag 08:00-10:00 Start: 8:15 Termine: PLUSonline Homepage zum PS: Allgemeines www.softwareresearch.net Teaching Programmieren im Großen Die Entwicklung

Mehr

3. Übungsbesprechung Programmkonstruktion

3. Übungsbesprechung Programmkonstruktion 3. Übungsbesprechung Programmkonstruktion Karl Gmeiner karl@complang.tuwien.ac.at December 12, 2011 K Gmeiner (karl@complang.tuwien.ac.at) 3. Übungsbesprechung PK December 12, 2011 1 / 13 Rückblick und

Mehr

Spock und Geb (WebDriver) Wie können freie Werkzeuge zum strukturierten Testen von Web-Applicationen eingesetzt werden?

Spock und Geb (WebDriver) Wie können freie Werkzeuge zum strukturierten Testen von Web-Applicationen eingesetzt werden? Stuttgarter Test-Tage 21. & 22. März 2013 Spock und Geb (WebDriver) Wie können freie Werkzeuge zum strukturierten Testen von Web-Applicationen eingesetzt werden? Christian Baranowski Willkommen Christian

Mehr

Klassenarbeit - Grammatik

Klassenarbeit - Grammatik Klassenarbeit - Grammatik 5. Klasse / Englisch / Monat März Kurzantworten; Dialoge; Fragen bilden; Sätze bilden; Personalpronomen Aufgabe 1 Do you know the word? 1. There are planes here: 2. It is a place

Mehr

Übungsstunde 6. Einführung in die Programmierung

Übungsstunde 6. Einführung in die Programmierung Übungsstunde 6 Einführung in die Programmierung Probleme bei Übung 5 [TODO Assistent] Nachbesprechung Übung 6 Feedback nach der Korrektur direkt per SVN public class Person { int alter; double gewicht;

Mehr

1 of :17:14

1 of :17:14 7 public class Main 10 /** 11 * @param args the command line arguments 1 */ 13 public static void main(string[] args) 14 { 15 // Aufgabe 1 16 System.out.println("##### AUFGABE 1 #####"); 17 // Stack initialisieren

Mehr

1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten

1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten 1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten Java-1. a), e) Java-2. --- gestrichen --- Java-3. keine Antwort ist richtig Java-4. a) Java-5. a), b)

Mehr

Accelerating Information Technology Innovation

Accelerating Information Technology Innovation Accelerating Information Technology Innovation http://aiti.mit.edu Ghana Summer 2011 Lecture 05 Functions Weather forecast in Accra Thursday Friday Saturday Sunday 30 C 31 C 29 C 28 C f = 9 5 c + 32 Temperature

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 4. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Amortisierte Analyse 10 Punkte Zu erst betrachte ich wie oft die letzte Ziffer

Mehr

aformatik Training & Consulting GmbH & Co. KG Eine Einführung in das automatisierte Testen mit dem Robot-Framework Thomas Gauss

aformatik Training & Consulting GmbH & Co. KG Eine Einführung in das automatisierte Testen mit dem Robot-Framework Thomas Gauss aformatik Training & Consulting GmbH & Co. KG 1 Eine Einführung in das automatisierte Testen mit dem Robot-Framework Thomas Gauss Fahrplan Agenda aformatik Training & Consulting GmbH & Co. KG 2 Vorstellung

Mehr

Übungsstunde 7. Einführung in die Programmierung

Übungsstunde 7. Einführung in die Programmierung Übungsstunde 7 Einführung in die Programmierung Probleme bei Übung 5 [TODO Assistent] Nachbesprechung Übung 6 Aufgabe 1: Talsohlen (Bonus!) Feedback nach der Korrektur direkt per Git Lösungsvorschlag von

Mehr

General info on using shopping carts with Ogone

General info on using shopping carts with Ogone Inhaltsverzeichnisses 1. Disclaimer 2. What is a PSPID? 3. What is an API user? How is it different from other users? 4. What is an operation code? And should I choose "Authorisation" or "Sale"? 5. What

Mehr

Selbststudium OOP8 & ALG3 Aufgaben

Selbststudium OOP8 & ALG3 Aufgaben Selbststudium OOP8 & ALG3 Aufgaben Kapitel 7.3 1. zu bearbeitende Aufgaben: 7.1 bis 7.11 7.1: 7.2: 7.3: 7.4: 7.5: Rating mit 0 funktioniert, obwohl nur 1 bis 5 erlaubt wäre. 7.6: Rating mit 0 funktioniert,

Mehr

IT Basics 2 Handout u

IT Basics 2 Handout u IT Basics2Handout9.9.2008u.16.9.2008 FürdasErstellenvonobjektorientiertenProgrammenistesnebendemVerständnisder Objektorientierungauchnötig,einigegrundlegendeKonzeptederProgrammierungzuverstehen. DiesegrundlegendenKonzeptesindThemaderzweitenLehrveranstaltungundteilweiseauchder

Mehr

0. Einführung & Motivation

0. Einführung & Motivation 0. Einführung & Motivation Ansatz: "C++ für Java-Kenner" Konzentration auf semantische Unterschiede 'gleichartiger' Konzepte Erörterung der C++ -spezifischen Konzepte (Overloading, Templates) Anspruch

Mehr

Exercise (Part I) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Exercise (Part I) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1 Exercise (Part I) Notes: The exercise is based on Microsoft Dynamics CRM Online. For all screenshots: Copyright Microsoft Corporation. The sign ## is you personal number to be used in all exercises. All

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

MATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE STUDIE ZUR LEGITIMITAT UND PRAXIS DER MODERNEN MATHEMATIK (THEORIE UND METHODE) FROM UVK

MATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE STUDIE ZUR LEGITIMITAT UND PRAXIS DER MODERNEN MATHEMATIK (THEORIE UND METHODE) FROM UVK MATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE STUDIE ZUR LEGITIMITAT UND PRAXIS DER MODERNEN MATHEMATIK (THEORIE UND METHODE) FROM UVK DOWNLOAD EBOOK : MATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE

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

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich Informatik II (D-ITET) Informatik II (D-ITET) simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Übungsstunde 1 Informatik II (D-ITET) 1 Ablauf Nachbesprechung Übungen 3 und 4 Besprechung der

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.

Mehr

Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring?

Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring? oliver@code-project.org 7. Februar 2006 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2

Mehr

Selbststudium OOP6 & ALG1 Auftrag

Selbststudium OOP6 & ALG1 Auftrag Selbststudium OOP6 & ALG1 Auftrag Kapitel 5.2 1. zu bearbeitende Aufgabe: 5.1 done 2. Auf den Seiten 157/158 wird in der Methode start()ein while-loop verwendet. Kreieren Sie ein Code-Fragment mit derselben

Mehr