Refactoring. Uschi Beck

Größe: px
Ab Seite anzeigen:

Download "Refactoring. Uschi Beck"

Transkript

1 Refactoring Uschi Beck

2 Gliederung Was ist Refactoring Definition, Einordnung in das Seminar Motivation Testen Code-Smells Katalog von Refactorings Aufbau, Beispiele Design Patterns als Ziel Refactoringwerkzeuge Eclipse Probleme, Grenzen Fazit 2

3 Definition entstand in Smalltalk-Kreisen Kent Beck, Ward Cunningham Systematische Änderung der internen Struktur einer Software, ohne ihr beobachtbares Verhalten zu ändern Was macht das Thema in einem Entwurfsseminar? Refactoring nur bei schlechtem Entwurf? Nein! Erst bei der Implementierung werden Schwachstellen erkannt neue Sichtweise auf den Entwurf Dynamisch, ständig weiterentwickeln ( Xtreme-Programming ) 3

4 Einordnung Refactoring 4

5 Warum Refactoring? neue Anforderungen schwer einzubauen redundanter Code Designverbesserung Qualitätsziel leichter lesbar und damit verständlicher für einen selbst, für andere Entwickler Fehler leichter zu finden Wartbarkeit wird erhöht erspart langfristig gesehen eine Menge Arbeit Refactoring erhöht die Programmiergeschwindigkeit 5

6 Aktivitäten ten in der Softwarewartung Änderungen testen 25% Verstehen des Source Codes 50% Änderungen Planen 10% Änderungen durchführen 10% Änderungen dokumentieren 5% 6

7 Metapher der zwei HüteH Refactoring als ständiger Teil des Entwicklungsprozesses Mini-Programmierzyklus Metapher der zwei Hüte ( Kent Beck ) Funktionalität hinzufügen Refactoring Man kann immer nur einen Hut tragen! 7

8 Die Bedeutung von Tests wichtige Voraussetzung für das Refactoring vor allem, wenn es ohne Werkzeugunterstützung durchgeführt wird stellen sicher, dass die Funktionalität nicht verändert wird damit man Tests auch anwendet sollten sie vollständig automatisiert ablaufen ihre Ergebnisse selbst überprüfen z.b. JUnit nach jedem Refactoring Tests einmal ausführen 8

9 Code-Smells Problem: woran erkennt man, das die Struktur des Codes verbessert werden kann? bereits kennen gelernt: Antipatterns Code-Smells ifitsmells, change it Strukturen im Code, die es nahe legen zu refaktorisieren nur Indizien, keine präzisen Kriterien!!! über 20 verschieden 9

10 Beispiele für f Code-Smells Duplizierter Duplizierter Code Code Es geht meistens ohne erschwert Änderungen Lange Lange Methoden Methoden schwer verständlich Kommentare, um Arbeitsweise zu erklären Große Große Klassen Klassen sehr vielen Instanzvariablen Brutstätte für duplizierten Code Neid Neid eine Klasse benutzt häufig Elemente einer anderen Klasse ACHTUNG: bei manchen Designpatterns ist das gewollt ( z.b. Visitor ) 10

11 Katalog von Refactorings über 70 Refactorings in Gruppen gegliedert Name Kurze Beschreibung in welcher Situation dieses Refactoring benötigt wird und was es leistet Motivation Vorteile wann sollte man besser darauf verzichten Vorgehensweise präzise, schrittweise Erklärung, wie das Refactoring von Hand auszuführen ist Beispiele Javacode, mit Erklärungen 11

12 Methoden zusammenstellen modifizieren Methoden erleichtern die Verständlichkeit Typische Code-Smells: lange Methoden duplizierter Code Methode extrahieren Beschreibung: Codefragment, das zusammengefasst werden kann erstelle Methode, deren Name die Aufgabe erklärt Motivation: Widerverwendbarkeit überschreiben ist einfacher verbessert die Verständlichkeit 12

13 Beispiel: Methode extrahieren public String rechnung() { double gesamtbetrag = 0; sehr lang Videothek Methode, die Rechnung schreibt While-Schleife berechnet Preis für jede Ausleihe } while (... ) { Ausleihe Preis hängt eineausleihe vom Filmtyp = ab ; double ausleihgebühr = 0; switch (eineausleihe.getmovie().getpricecode()){ case case Movie.REGULAR: ausleihgebühr = ; = ; case case Movie.CHILDRENS: ausleihgebühr = ; = ; } } gesamtbetrag += ausleihgebühr; } 13

14 Beispiel: Methode extrahieren double gesamtbetrag = 0; switch ( ){ case Movie.REGULAR: ausleihgebühr = ; case Movie.CHILDRENS: ausleihgebühr = ; } gesamtbetrag += ausleihgebühr; } 1. Neue Methode erstellen 2. Zu extrahierenden Code in die neue Methode kopieren 3. Nach Variablen suchen, nur gelesene als Parameter übergeben 4. ausleihgebühr muss zurückgegeben werden private double void void gebührfüreineausleihe () { () Ausleihe {( eineausleihe) ) { { double ausleihgebühr = 0; } switch (eineausleihe.getmovie().getpricecode()){{ switch (eineausleihe.getmovie().getpricecode()){ case case Movie.REGULAR: Movie.REGULAR: ausleihgebühr = ; case Movie.CHILDRENS: ausleihgebühr = ; } } return ausleihgebühr; } 14

15 Beispiel: Methode extrahieren public String rechnung() {... double gesamtbetrag = 0; while (... ) { Ausleihe eineausleihe = ; double ausleihgebühr = gebührfüreineausleihe( eineausleihe ); gesamtbetrag += ausleihgebühr; } private double gebührfüreineausleihe ( Ausleihe eineausleihe) { double ausleihgebühr = 0; switch (eineausleihe.getmovie().getpricecode()) { case Movie.REGULAR: ausleihgebühr = ; } } case Movie.CHILDRENS: ausleihgebühr = ; } return ausleihgebühr; 5. Extrahierten Code durch Methodenaufruf ersetzen 15

16 Eigenschaften zwischen Objekten verschieben behandeln die Delegation von Aufgaben zwischen Klassen Verteilung von Verantwortlichkeit verschieben Methoden und Felder Typische Code-Smells: Neid duplizierter Code große Klassen Klasse extrahieren Beschreibung: Klasse, die die Arbeit macht, die von zwei Klassen zu erledigen wäre erstelle neue Klasse und verschiebe relevante Felder und Methoden Motivation: glasklare Abstraktion in der Praxis wachsen Klassen ständig Beachte: Assoziationen Veröffentlichung 16

17 Daten organisieren wandeln Datentypen um modifizieren den Zugriff auf Daten Möglichkeit nutzen, neue Typen zu definieren Typische Code-Smells: Neigung zu elementaren Datentypen große Klassen Wert durch Objekt ersetzen Beschreibung: Datenelement, das zusätzliches Verhalten benötigt Datenelement in Klasse umwandeln Motivation: einfache Datenelemente werden komplexer 17

18 Wert durch Objekte ersetzen Kunde kundennummer: int Kundennummer k_nr: int Kunde 18

19 Methodenaufrufe vereinfachen vereinfachen Schnittstellen Schlüsselqualifikation für gute Software z.b. Namensänderung: einfach, aber wirkungsvoll Typische Code-Smells: Kommentare Konstruktor durch Factory-Methode ersetzen Beschreibung: mehr als nur eine einfache Konstruktion ausführen Konstruktor durch eine Fabrikmethode ersetzen Motivation: eine Methode um verschiedene Typen von Objekten zu erzeugen 19

20 Weitere Refactorings bedingte Ausdrücke vereinfachen ( if-then-else Konstrukte, switch Anweisungen ) Umgang mit der Generalisierung ( verschieben von Methoden in der Vererbungshierarchie, Interface extrahieren ) 20

21 Refactoring to Patterns Designpatterns erhöhen die Flexibilität verbessern die Wartbarkeit können Ziel von Refactorings sein Manchmal geht etwas aber auch ohne Designpatterns einfacher Refactoring To Patterns ( Joshua Kerievsky ) Beschreibt wie man durch Refactoring Design Patterns einbauen/entfernen kann Aufbau der einzelnen Refactorings wie bei Martin Fowler 21

22 Refactoring-Werkzeuge verringern Zeitaufwand Sichern den Erhalt der Funktionalität Programmieren und Refactoring gehen ineinander über Entwurfsfehler werden billiger Anforderungen an Refactoring-Werkzeuge ganze Programm nach bestimmten Elementen durchsuchen Ableitungsbäume Genauigkeit Geschwindigkeit Rückgängig machen 22

23 Eclipse: Refactoringmenü umbenennen extrahieren von Variablen, Methoden Verschieben Interface extrahieren Factory-Methode einfügen Undo-Funktion vorhanden 23

24 Eclipse: Methode extrahieren Dialogfenster für Methode extrahieren 24

25 Eclipse: Methode extrahieren Voransicht für Methode extrahieren 25

26 Probleme und Grenzen Datenbanken veröffentlichte Schnittstellen manchmal besser: Code neu schreiben kurz vorm Fertigstellungstermin Performance Verlust? NEIN! 10 20% des Codes für 80% Performance verantwortlich zugänglicher für Performance-Tuning Dokumentation muss aktualisiert werden 26

27 Häufig geäußerte erte Bedenken wir haben keine Zeit dafür erleichtert die weitere Implementierungsarbeit ( spart also Zeit ) kann das Programm kaputt machen gute Tests es werden immer nur kleine Teile geändert, d.h. die Änderungen können leicht rückgängig gemacht werden Entwicklungsumgebungen wie Eclipse sichern die Erhaltung Vorteile erst langfristig erkennbar, vielleicht haben wir da gar nichts mehr mit dem Projekt zu tun Und wenn doch?!! das Programm läuft doch Qualitätsaspekt Flexibilität in Bezug auf Änderungen Wartbarkeit 27

28 Fazit einzelne Refactorings erscheinen häufig banal man muss den Gesamtnutzen in einem großen Projekt sehen Ziele vor Augen führen nicht auf Teufel komm raus alles refaktorisieren wollen beim Refactoring von Hand in kleinen Schritten vorgehen, Testen nicht vergessen sich mit dem Refactoringwerkzeug seiner Entwicklungsumgebung vertraut machen Refactoring als eine ständige Weiterentwicklung des Entwurfs betrachten 28

Refactoring Transformationen. Martin Freund Januar 2003 Seminar Refactoring in extreme Programming AG Kastens Universität Paderborn

Refactoring Transformationen. Martin Freund Januar 2003 Seminar Refactoring in extreme Programming AG Kastens Universität Paderborn Refactoring Transformationen Martin Freund bbl@upb.de Januar 2003 Seminar Refactoring in extreme Programming AG Kastens Universität Paderborn Gliederung 1. Transformationen-Übersicht 2. Beispiel: Methode

Mehr

Refactoring I. Nach Martin Fowler - Refactoring

Refactoring I. Nach Martin Fowler - Refactoring Refactoring I Nach Martin Fowler - Refactoring Kapitel 6 : Methoden zusammenstellen Kapitel 9 : Bedingte Ausdrücke vereinfachen Kapitel 10: Methodenaufrufe vereinfachen - Mario Boley - Methoden zusammenstellen

Mehr

Refactoring. Vortrag im Rahmen des Softwareprojekts: Übersetzerbau. Referenten: Vivienne Severa Alpin Mete Sahin Florian Mercks. Datum:

Refactoring. Vortrag im Rahmen des Softwareprojekts: Übersetzerbau. Referenten: Vivienne Severa Alpin Mete Sahin Florian Mercks. Datum: Refactoring Vortrag im Rahmen des Softwareprojekts: Übersetzerbau Referenten: Vivienne Severa Alpin Mete Sahin Florian Mercks Datum: 20.06.2013 Überblick Einführung Refactoring im Einsatz Werkzeugunterstützung

Mehr

Software-Refactoring. 29. Mai 2013

Software-Refactoring. 29. Mai 2013 Software-Refactoring 29. Mai 2013 Überblick Was ist Refactoring und wozu dient es? Welche Refactorings gibt es? Refactoring-Katalog: www.refactoring.com Wann, wo und wie führt man Refactorings durch? Wie

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Testing

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Testing Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Testing Assoziationen / Datentransferobjekte (DTO) Testing Refactoring GUIs Tk toolkit

Mehr

Refactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag

Refactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag Refactoring von Legacy Systemen Jochen Winzen jochen.winzen@andrena.de andrena objects ag Was ist ein Legacy System Ein Legacy System hat folgenden Eigenschaften: + Besitzt die geforderte Funktionalität

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme? Liebe Leserin, lieber Leser 10 Kapitel i: Schnelleinstieg 13 Kapitel 2: Was sind Programme? 17 Was ist ein Programm? 18 Sprechen Sie Computer? 18 Von der Idee zum Programm 19 Von Windows, Fenstern und

Mehr

Iterative Softwareentwicklung. Ullrich Köthe 19. April 2001

Iterative Softwareentwicklung. Ullrich Köthe 19. April 2001 Iterative Softwareentwicklung Ullrich Köthe 19. April 2001 2 Traditionelles Entwicklungsmodell von Geräteentwicklung inspiriert: je später eine Änderung notwendig wird, desto teurer 12000 10000 8000 6000

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

Testgetriebene Entwicklung

Testgetriebene Entwicklung Testgetriebene Entwicklung Arbeitskreis Objekttechnologie Norddeutschland Hamburg, 18.03.2002 Frank Westphal freier Berater, Hamburg Tammo Freese OFFIS, Oldenburg westphal@acm.org tammo.freese@offis.de

Mehr

hue12 January 24, 2017

hue12 January 24, 2017 hue12 January 24, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

7. Zusammenfassung (1)

7. Zusammenfassung (1) Typisierung in OO-Sprachen Subtyping vs. Subclassing Untertypen für Typkonstrukte Funktionsuntertypen und Überschreiben Generik Einsatz von Vererbung konzeptioneller Entwurf: Abstraktion Spezialisierung

Mehr

Einführung in C. EDV1-04C-Einführung 1

Einführung in C. EDV1-04C-Einführung 1 Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags

Mehr

Objektorientierte Konzepte

Objektorientierte Konzepte Objektorientierte Konzepte Objekt Klasse enthaltender Polymorphismus (Untertypen) Vererbung Objektorientierte Programmierung, Grundlagen und Ziele 1 Objekt Objekt kapselt Variablen und Routinen Interaktionen

Mehr

Informatik II Übung 6 Gruppe 7

Informatik II Übung 6 Gruppe 7 Informatik II Übung 6 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch DEBRIEFING Übung 5 2 U5A1-4 Im Prinzip alles richtig. Falls am Ende noch Zeit, dann Einsicht in die Best Of s 3 THEORIE Java Vererbung,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Software-Refactoring. 27. Mai 2015

Software-Refactoring. 27. Mai 2015 Software-Refactoring 27. Mai 2015 Überblick Was ist Refactoring und wozu dient es? Welche Refactorings gibt es? Refactoring-Katalog: www.refactoring.com Wann, wo und wie führt man Refactorings durch? Wie

Mehr

Entwurfsmuster (Design Patterns)

Entwurfsmuster (Design Patterns) Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2007/08 Überblick I 1 Refactoring Refactorings

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

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) Übungsorganisation Bringen Sie Ihren Labtop in die Übungen mit! 09.10.2017 CuP - VO 2 Programmieren 1. Definition der Aufgabe, die das Programm lösen soll. 2.

Mehr

Refactorings in großen Softwareprojekten

Refactorings in großen Softwareprojekten Refactorings in großen Softwareprojekten (C) 2004 Martin Lippert lippert@acm.org Stefan Roock stefan@stefanroock.de Was ist Refactoring? A change made to the internal structure of software to make it easier

Mehr

pue13 January 28, 2017

pue13 January 28, 2017 pue13 January 28, 2017 1 Aufgabe 1 (Klammern und Anweisungsblöcke) Wie Sie in der Vorlesung gelernt haben, werden Anweisungsblöcke in Java nicht durch Einrückung, sondern mithilfe von geschweiften Klammern

Mehr

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser

Mehr

Erste Java-Programme (Java Wiederholung & Vererbung)

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

Mehr

11. Funktionale Programmierung Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

11. Funktionale Programmierung Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 11. Funktionale Programmierung Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen zu Design Patterns Wozu werden Design Patterns verwendet? Wann

Mehr

Effizientes Programmieren

Effizientes Programmieren Effizientes Programmieren Heutiges Thema: Refactorings Michaela Rindt (mrindt@informatik.uni-siege.de) Refactoring - Entwicklungsmethode - Bild-Quelle: http://www.goldbachinteractive.com/aktuell/kurzbeitraege/next-step-of-evolution

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr

Dokumentationskonzept

Dokumentationskonzept 1. Eigene Java Code Convention Dokumentationskonzept Soweit nichts Abweichendes angegeben, sind die Implementierer dazu gehalten, sich an die Regeln für guten Code aus den allgemeinen SUN Konventionen

Mehr

Refactoring eine Einführung

Refactoring eine Einführung Universität Paderborn, AG Kastens Programmiersprachen und Übersetzer, Fakultät für Elektrotechnik, Informatik und Mathematik Eine Ausarbeitung im Rahmen des Seminars Refactoring in extreme Programming

Mehr

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015 Fakultät IV NI & CV Probeklausur Java Einführung in die Informatik Wintersemester 2014/2015 Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke Inhaltsverzeichnis 1 Der objektorientierte Ansatz... 1 1.1 Ein einführendes Beispiel...2 1.1.1 Aktive Objekte...4 1.1.2 Klassifikation...4 1.1.3 Datenkapselung...6 1.2 OOP im Überblick...6 1.3 Programmaufbau...7

Mehr

Fakultät IV Elektrotechnik/Informatik

Fakultät IV Elektrotechnik/Informatik Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

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

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollstrukturen - 1 - Anweisung Anweisung Zuweisung Methodenaufruf

Mehr

Gliederung der Folien

Gliederung der Folien 1 Gliederung der Folien 1. Einführung 1.1. Gliederung 1.2. Literatur 1.3. Einstieg in Java 1.3.1. Geschichte von Java 1.3.2. Hello World 1.3.3. Übersetzen eines Java-Programms 1.4. Die Entwicklungsumgebung

Mehr

Programmierkonventionen - 1 -

Programmierkonventionen - 1 - Die wichtigsten Bestandteile der Programmierkonventionen für Java werden hier erläutert. Dies sind: Schreibweise von Bezeichnern Einrückkonventionen Kommentare Programmierkonventionen - 1 - Einleitung

Mehr

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische

Mehr

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05. Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational

Mehr

Objektorientierung. Marc Satkowski 20. November C# Kurs

Objektorientierung. Marc Satkowski 20. November C# Kurs Objektorientierung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Weiterführende Verzweigungen Tertiäre-Verzweigung switch case 2. Schleifen Zählschleife (for) break & continue 3. Objektorientierung

Mehr

Grundlagen der Programmierung in C Klassen

Grundlagen der Programmierung in C Klassen Grundlagen der Programmierung in C Klassen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple address pointer reference structured integral

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Funktionen: Rückgabewert

Funktionen: Rückgabewert Funktionen: Rückgabewert Jede Funktion in C++ (außer Konstruktoren und Destruktoren siehe später) MUSS einen Rückgabewert-Typ vereinbaren. Gibt sie nichts zurück, muss der Rückgabetyp void sein. Jede return-anweisung

Mehr

Refactoring. PG Reclipse Seminar: Refactoring Jan-Christopher Bals (1/30)

Refactoring. PG Reclipse Seminar: Refactoring Jan-Christopher Bals (1/30) Refactoring PG Reclipse Seminar: Refactoring Jan-Christopher Bals (1/30) Gliederung des Vortrags Definition Hintergrund und Motivation Refactoring am Beispiel Refactoring-Katalog Unterstützung durch Tools

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1 Inhaltsverzeichnis Grundlagen und Einführung (1. Band) 1 1 Einleitung und Vorwort 1 1.1 Vorwort zur 13. Auflage....................... 1 1.2 Vorwort zur 10. Auflage....................... 1 1.3 Voraussetzungen...........................

Mehr

Überblick. Typanpassungen Iteration mit Schleifen Bedingte Anweisungen. Agile Softwareentwicklung Einfaches Ratespiel.

Überblick. Typanpassungen Iteration mit Schleifen Bedingte Anweisungen. Agile Softwareentwicklung Einfaches Ratespiel. Globalübung 2 Überblick Typanpassungen Iteration mit Schleifen Bedingte Anweisungen Agile Softwareentwicklung Einfaches Ratespiel Softwarefehler Überblick Typanpassungen Iteration mit Schleifen Bedingte

Mehr

Tagesprogramm. Werte und Typen Methoden und Parameter Ergebnisse und Seiteneffekte.

Tagesprogramm. Werte und Typen Methoden und Parameter Ergebnisse und Seiteneffekte. 1 2017-03-13 Tagesprogramm Werte und Typen Methoden und Parameter Ergebnisse und Seiteneffekte http://pingo.upb.de/839558 Skriptum ab Seite 43 git clone https://github.com/markus2330/pk17s03 2 2017-03-13

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Lokale Variablen 2 Lokale Variablen in Blocks 3 Lokale Variablen

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2012/2013, SS 2013 Programmieren I + II Regeln der Code-Formatierung Die hier vorgestellten

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 06: Das Visitor Pattern Prof. Dr. Peter Thiemann (vertreten durch Luminous Fennell) Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg)

Mehr

Programmierung für Mathematik (HS13)

Programmierung für Mathematik (HS13) software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 11 1 Aufgabe: Codeverständnis 1.1 Aufgabenstellung Notieren Sie, was der folgende Code ausgeben würde, wenn er so in einer

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Übungsblatt Nr. 10 Aufgabe 20: Code Verständnis Löse diese Aufgabe selbständig als Vorbereitung zur Übung auf dem Papier. a) Gib

Mehr

Standardkonstrukte in Java

Standardkonstrukte in Java Robert Buchholz, Sven Schneider JavaKurs 2006 1. Tag Freitagsrunde / Tutoren 03. April 2006 Was lernen wir heute noch kennen? 1 Methoden Definition einer Methode Aufruf einer Methode 2 Datenstruktur Array

Mehr

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

Java Übung. Übung Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Werner Gaulke. Java Übung Übung 5 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 9. Mai 2006 (UniDUE) 9. Mai 2006 1 / 20 Beispiel Anforderungen: Klasse Mensch mit Attributen: Name, Alter, Laune, Geschlecht.

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

Mehr

Einführung in die Objektorientierung

Einführung in die Objektorientierung Rainer Schmidberger schmidrr@informatik.uni-stuttgart.de Objektorientiert daisy : Kunde Nein Prozedural Schleife über alle Projekte Noch was zu tun? Ja Daten Progr. dagobert : Manager 2. angebot Manager

Mehr

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus Vererbung Generalisierung und Spezialisierung Vererbung und Polymorphismus Wir wollen in unserem Aquarium verschiedene Arten von Fischen schwimmen lassen. In einem ersten Ansatz definieren wir nicht nur

Mehr

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch Klassen (Java) vs. Records (Pascal) 14. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung Pascal RECORDs in Pascal sind reine

Mehr

Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.

Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben. Programmieren bei Dr. Robert Heß TM&M1, IST1 und ET1 Anfang SS 2003 Klausur 1. Aufgabe (2 Punkte) Kodieren Sie folgende Dezimalzahlen in Binärzahlen um. Zeigen Sie den Rechenweg, die negative Zahl soll

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

3. Bedingte Anweisungen

3. Bedingte Anweisungen 3. Bedingte Anweisungen Fallunterscheidungen der Form WENN...DANN... in der Informatik kennst du aus der 7. Klasse beim Programmieren mit Karol sowie aus der 9. Klasse beim Arbeiten mit Tabellen und Datenbanken.

Mehr

3. Das erste eigene Programm mit Greenfoot: Litte Crab

3. Das erste eigene Programm mit Greenfoot: Litte Crab Eigenes Programm: Little Crab1, Seite 1 von 5 3. Das erste eigene Programm mit Greenfoot: Litte Crab 3.1. Quelltext bearbeiten Nachdem Sie etwas Erfahrungen in der Bedienung von Greenfoot gewonnen haben,

Mehr

Objektorientierte Programmierung mit Java

Objektorientierte Programmierung mit Java David J. Barnes Michael Kölling Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Übersetzt von Axel Schmolitzky, Universität Hamburg PEARSON Studium ein Imprint von Pearson

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Objektorientierung in C++ (3) Aspekte der Vererbung (1) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 546 Zuweisung bei Vererbung Dr. Frank Seifert Vorlesung

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH 1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch

Mehr

SOLID für.net und JavaScript

SOLID für.net und JavaScript SOLID für.net und JavaScript www.binarygears.de Stefan Dirschnabel Twitter: @StefanDirschnab #dncgn SOFTWARE ENTWICKLUNG BERATUNG SCHULUNG 5 Prinzipien für das Design von Software Wartbarer Code Leicht

Mehr

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein Überblick Konzepte der Objektorientierten Programmierung Klassen und Objekte o Implementierung von Klassen o Verwendung von Objekten 2 Konzepte

Mehr

M3 M4 M7 VORNAME: Compare VERTIEFUNG:

M3 M4 M7 VORNAME: Compare VERTIEFUNG: NACHNAME: Planet SEMESTER: M5 M6 M3 M4 M7 VORNAME: Compare VERTIEFUNG: FV IM VERWENDETE KLASSEN: Als Anlage erhalten Sie einen Ausdruck des vorab bekannt gemachten Quelltextes von verschiedenen Klassen.

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017 Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2016/2017 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

14. Java Klassen. Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung

14. Java Klassen. Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung 275 14. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung Klassen (Java) vs. Records (Pascal) 276 Pascal RECORDs in Pascal sind

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Übungsblatt 1. Java Vorkurs (WS 2017)

Übungsblatt 1. Java Vorkurs (WS 2017) Übungsblatt 1 Java Vorkurs (WS 2017) Aufgabe 1 Hallo-Welt Erstelle ein neues Projekt mit dem Namen HelloJava. Erzeuge in diesem Projekt eine neue Klasse HelloJava. (a) Schreibe die main-methode in die

Mehr

III.1 Prinzipien der funktionalen Programmierung - 1 -

III.1 Prinzipien der funktionalen Programmierung - 1 - 1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung

Mehr

Unified Modelling Language

Unified Modelling Language Unified Modelling Language SEP 72 Software-Entwicklung Software-Entwicklung ist Prozess von Anforderung über Modellierungen zu fertigen Programmen Anforderungen oft informell gegeben fertige Programme

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2 iii Inhaltsverzeichnis Kurseinheit 1 1 Von der Aufgabenstellung zum Programm... 1 1.1 Motivation... 1 1.2 Softwareentwicklung... 2 1.3 EXKURS: Unified Modeling Language (UML)... 4 2 Anforderungsanalyse...

Mehr

Abend 4 Übung : Erweitern von Klassen durch Vererbung

Abend 4 Übung : Erweitern von Klassen durch Vererbung Abend 4 Übung : Erweitern von Klassen durch Vererbung Ziel, Inhalt Wir erweitern die Klassen, die wir zum Zeichnen mit TsuZeichnen verwenden. Dabei wenden wir die Vererbung an um die Klassen zu spezialisieren

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung 2 Einordnung in den Softwareentwicklungsprozess Softwareentwicklung mit JAVA Planung Entwurf Programmierung Test/Evaluation/Pflege

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 28 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 28 1 Überblick: Variablenarten 2 Lokale Variablen 3 Lokale Variablen

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

Mehr

Zahlenraten: Ein Spiel in Java.

Zahlenraten: Ein Spiel in Java. Zahlenraten: Ein Spiel in Java. Nach dem Start vom Java-Editor (und dem Erstellen eines JFrame-Programms) sieht man Folgendes: Dieser Code startet das Programm, indem es ein Objekt der Klasse Zahlenraten

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr