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

Größe: px
Ab Seite anzeigen:

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

Transkript

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

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

3 Definition Refactoring: Veränderung der Struktur von Software bei Erhaltung des extern beobachtbaren Verhalten Wie lässt sich der Erhalt des Verhaltens von Software definieren? Erster Ansatz: Input / Output Real-time Systems (CPU Zeit)? Embedded Systems (Speicherressourcen)? Sicherheitskritische Systeme? Besserer Ansatz: Softwarespezifikation Wie kann sichergestellt werden, dass Refactoring das Verhalten erhält? Einhaltung der Spezifikation nach dem Refactoring Vordefinierte Testfälle identisch absolvieren PG Reclipse Seminar: Refactoring Jan-Christopher Bals (3/30)

4 Hintergrund und Motivation Änderungen an der internen Struktur von Programmen werden seit jeher vorgenommen Beispiele: Namen von Methoden ändern Doppelten Code durch Methodenaufruf ersetzen Methoden durch Änderung der Signatur erweitern Änderungen der Programmstruktur in objektorientierten Sprachen gehen darüber hinaus und werden als Refactoring bezeichnet. Erste Untersuchung und Anwendung an Smalltalk und C++ PG Reclipse Seminar: Refactoring Jan-Christopher Bals (4/30)

5 Hintergrund und Motivation Hohe Kosten der Softwareentwicklung motivierten: Wiederverwendung von Software Weiterentwicklung bestehender Software Probleme: Software muss angepasst werden Softwarekomponenten müssen identifiziert und verstanden werden Lösung: Restrukturierung der Software durch Refactoring Software ist besser zu lesen Änderungen und Erweiterungen können leichter eingebracht werden Dadurch sinkt die Fehleranfälligkeit der Programmierung Softwarewartung Idealerweise Refactorings während der Wartung durchführen PG Reclipse Seminar: Refactoring Jan-Christopher Bals (5/30)

6 Refactoring am Beispiel Abrechnungssystem eines Videoverleihs Movie +CHILDRENS : int = 2 +REGULAR : int = 0 +NEW_RELEASE : int = 1 -title : string -pricecode : int +getpricecode() : int +setpricecode() +gettitle() : string Rental -movie : Movie -daysrented : int 1 * +getdaysrented() : int * 1 +getmovie() : Movie Customer -name : string -rentals : Vector +statement() : string +addrental() +getname() : string PG Reclipse Seminar: Refactoring Jan-Christopher Bals (6/30)

7 Refactoring am Beispiel statement() public String statement(){ double totalamount = 0; int frequentrenterpoints = 0; Enumeration rentals = this.rentals.elements(); String result = "Rental Record for "+ getname() + "\n"; while (rentals.hasmoreelements()){ double thisamount = 0; Rental each = (Rental)rentals.nextElement(); //determine amounts for each line switch (each.getmovie().getpricecode()){ case Movie.REGULAR: thisamount += 2; if(each.getdaysrented() > 2) thisamount += (each.getdaysrented() - 2)*1.5; break; case Movie.NEW_RELEASE: thisamount += each.getdaysrented() * 3; break; case Movie.CHILDRENS: thisamount += 1.5; if(each.getdaysrented() > 3) thisamount += (each.getdaysrented() - 3) * 1.5; break; } } //add frequent renter points frequentrenterpoints++; //add bonus for a two day new release rental if((each.getmovie().getpricecode() == Movie.NEW_RELEASE) &&(each.getdaysrented() > 1)) frequentrenterpoints++; //show figures for this rental result += "\t" + each.getmovie().gettitle() + "\t" + String.valueOf(thisAmount) + "\n"; totalamount += thisamount; } //add footer lines result += "Amount owed is "+ String.valueOf(totalAmount) + "\n"; result += "You earned " + String.valueOf(frequentRenterPoints) + " frequent renter points"; return result; PG Reclipse Seminar: Refactoring Jan-Christopher Bals (7/30)

8 Refactoring am Beispiel statement(){...} public String statement(){ double totalamount = 0; int frequentrenterpoints = 0; Enumeration rentals = this.rentals.elements(); String result = "Rental Record for "+ getname() + "\n"; while (rentals.hasmoreelements()){ //determine amount for this rental //add frequent renter points } //add footer lines result += "Amount owed is "+ String.valueOf(totalAmount) + "\n"; result += "You earned " + String.valueOf(frequentRenterPoints) + " frequent renter points"; return result; } PG Reclipse Seminar: Refactoring Jan-Christopher Bals (8/30)

9 Refactoring am Beispiel statement(){... while{...}... } while (rentals.hasmoreelements()){ //determine amount for this rental double thisamount = 0; Rental each = (Rental)rentals.nextElement(); switch (each.getmovie().getpricecode()){ case Movie.REGULAR: thisamount += 2; if(each.getdaysrented() > 2) thisamount += (each.getdaysrented() - 2)*1.5; break; case Movie.NEW_RELEASE: thisamount += each.getdaysrented() * 3; break; case Movie.CHILDRENS: thisamount += 1.5; if(each.getdaysrented() > 3) thisamount += (each.getdaysrented() - 3) * 1.5; break;} //add frequent renter points} PG Reclipse Seminar: Refactoring Jan-Christopher Bals (9/30)

10 Refactoring am Beispiel statement(){... while{...}... }...while (rentals.hasmoreelements()){ //determine amount for this rental //add frequent renter points frequentrenterpoints++; //add bonus for a two day new release rental if((each.getmovie().getpricecode() == Movie.NEW_RELEASE)&&(each.getDaysRented() > 1)) frequentrenterpoints++; //show figures for this rental result += "\t" + each.getmovie().gettitle() + "\t" + String.valueOf(thisAmount) + "\n"; totalamount += thisamount; }... PG Reclipse Seminar: Refactoring Jan-Christopher Bals (10/30)

11 Refactoring am Beispiel c:customer r:rental m:movie statement() for all rentals getmovie() Determine amounts getpricecode getdaysrented() getmovie() Add Frequent Renter Points getpricecode getdaysrented() PG Reclipse Seminar: Refactoring Jan-Christopher Bals (11/30)

12 Refactoring am Beispiel Methoden extrahieren ( Extract Method ) class Customer public String statement(){... while (rentals.hasmoreelements()){ Rental each = (Rental)rentals.nextElement(); double thisamount = getcharge(each); frequentrenterpoints += getfrequentrenterpoints(each); }...} private int getfrequentrenterpoints(rental arental) { } if((arental.getmovie().getpricecode() == Movie.NEW_RELEASE) &&(arental.getdaysrented() > 1)) return 2; else private double getcharge(rental arental) { return 1; double thisamount = 0; } switch(arental.getmovie().getpricecode()){...} return thisamount; PG Reclipse Seminar: Refactoring Jan-Christopher Bals (12/30)

13 Refactoring am Beispiel Methoden verschieben ( Move Method ) class Customer public String statement(){... while (rentals.hasmoreelements()){ Rental each = (Rental)rentals.nextElement(); double thisamount = each.getcharge(); frequentrenterpoints += each.getfrequentrenterpoints(); }...} class Rental private int getfrequentrenterpoints() { } if((getmovie().getpricecode() == Movie.NEW_RELEASE) &&(getdaysrented() > 1)) return 2; else private double getcharge() { return 1; double thisamount = 0; } switch(getmovie().getpricecode()){...} return thisamount; PG Reclipse Seminar: Refactoring Jan-Christopher Bals (13/30)

14 Refactoring am Beispiel Bedingte Ausdrücke durch Polymorphie ersetzen ( Replace Conditonal With Polymorphism ) Movie -name : string -pricecode : Price +getcharge() : double +getfrequentrenterpoints() : int * 1 Price +getcharge() +getfrequentrenterpoints() getcharge() { return pricecode.getcharge(); } Regular Price +getcharge() Childrens Price +getcharge() New Release Price +getcharge() +getfrequentrenterpoints() getfrequentrenterpoints() { return pricecode.getfrequentrenterpoints(); } PG Reclipse Seminar: Refactoring Jan-Christopher Bals (14/30)

15 Refactoring am Beispiel public class Rental { private Movie movie; private int daysrented;... public int getfrequentrenterpoints() { return movie.getfrequentrenterpoints(daysrented)}; } public double getcharge() { return movie.getcharge(daysrented)}; public class Movie { private String title; private Price pricecode;... public double getcharge(int daysrented){ return pricecode.getcharge(daysrented)}; } public int getfrequentrenterpoints(int daysrented){ return pricecode.getfrequentrenterpoints(daysrented)}; PG Reclipse Seminar: Refactoring Jan-Christopher Bals (15/30)

16 Refactoring am Beispiel Auswirkungen auf das Design (statisch) vorher: Movie +CHILDRENS : int = 2 +REGULAR : int = 0 +NEW_RELEASE : int = 1 -title : string -pricecode : int +getpricecode() : int +setpricecode() +gettitle() : string Rental -movie : Movie -daysrented : int 1 * +getdaysrented() : int +getmovie() : Movie * 1 Customer -name : string -rentals : Vector +statement() : string +addrental() +getname() : string nachher: Movie -title : string -pricecode : Price +getcharge() : double +getpricecode() : Price +setpricecode() +gettitle() : string +getfrequentrenterpoints() : int * Regular Price 1 Price +getcharge() : double +getfrequentrenterpoints() : int Childrens Price New Release Price 1 * +getcharge() : double +getcharge() : double +getcharge() : double +getfrequentrenterpoints() : int Rental -daysrented : int +getcharge() : double +getfrequentrenterpoints() : int +getdaysrented() : int * 1 Customer -name : string +statement() : string +addrental() +getname() : string PG Reclipse Seminar: Refactoring Jan-Christopher Bals (16/30)

17 Refactoring am Beispiel Auswirkungen auf das Design (dynamisch) vorher: statement() c:customer r:rental m:movie for all rentals getmovie() Determine amounts getpricecode getdaysrented() getmovie() Add Frequent Renter Points getpricecode getdaysrented() PG Reclipse Seminar: Refactoring Jan-Christopher Bals (17/30)

18 Refactoring am Beispiel Auswirkungen auf das Design (dynamisch) nachher: c:customer r:rental m:movie p:price statement() for all rentals getcharge getcharge getcharge getfrequentrenterpoints getfrequentrenterpoints getfrequentrenterpoints PG Reclipse Seminar: Refactoring Jan-Christopher Bals (18/30)

19 Refactoring Katalog Analyse bestehender OO-Software und deren Refaktorisierung ergab grundlegende Refactorings Zusammenstellung in einem Katalog hilft bei der Anwendung Semiautomatisches Refactoring durch Toolunterstützung Einteilung des Katalogs I. Methoden einführen II. Funktionalitäten zwischen Objekten verschieben III. Daten organisieren IV. Vereinfachung bedingter Ausdrücke V. Methodenaufrufe vereinfachen VI. Vererbung PG Reclipse Seminar: Refactoring Jan-Christopher Bals (19/30)

20 Refactoring Katalog I. Methoden Einführen Zu lange Codeblöcke sind unübersichtlich und erhöhen die Fehleranfälligkeit Einteilung in passende Methodenaufrufe erhöht die Lesbarkeit Unterstützenden Refactorings: Extract Method Inline Methode Replace Temp with Query... PG Reclipse Seminar: Refactoring Jan-Christopher Bals (20/30)

21 Refactoring Katalog II. Funktionalitäten zwischen Objekten verschieben Wo soll Programmlogik platziert werden? Unterstützenden Refactorings: Move Method Move Field Extract Class Introduce Local Extension... PG Reclipse Seminar: Refactoring Jan-Christopher Bals (21/30)

22 Refactoring Katalog III. Daten organisieren Umgang mit Daten kann vereinfacht werden bsp. Einführung neuer Datentypen Unterstützende Refactorings: Replace Data Value With Object Encapsulate Field Replace Typed Code With Class / Subclass... PG Reclipse Seminar: Refactoring Jan-Christopher Bals (22/30)

23 Refactoring Katalog IV. Vereinfachung bedingter Ausdrücke Bedingte Ausdrücke oft komplex Unterstützende Refactorings: Decompose Conditional Remove Control Flag Replace Conditional With Polymorphism... PG Reclipse Seminar: Refactoring Jan-Christopher Bals (23/30)

24 Refactoring Katalog V. Methodenaufrufe vereinfachen Namen und Struktur tragen wesentlich zum Programmverständnis bei Unterstützende Refactorings: Rename Method Add / Remove A Parameter Parameterize Method Introduce Parameter Object... PG Reclipse Seminar: Refactoring Jan-Christopher Bals (24/30)

25 Refactoring Katalog VI. Vererbung Wiederverwendbare Komponenten identifizieren Unterstützende Refactorings: Pull Up Field / Method / Constructor Body Push Down Field / Method Extract Superclass / Subclass Collapse Hierarchie... PG Reclipse Seminar: Refactoring Jan-Christopher Bals (25/30)

26 Unterstützung durch Tools Vollautomatisches Refactoring nicht möglich Beobachtbares Verhalten muss erhalten bleiben Tools können in gewissem Umfang den Erhalt dieses Verhaltens garantieren Semiautomatisches Refactoring sinnvoll PG Reclipse Seminar: Refactoring Jan-Christopher Bals (26/30)

27 Unterstützung durch Tools Programme müssen folgende Eigenschaften erfüllen: (durch Tools generierte Refactorings müssen diese erhalten) Eindeutige Oberklasse Eindeutige Namensbezeichnung für Klassen in ihrem Namensraum Eindeutige Namensbezeichnung für Methoden / Variablen innerhalb der Klassen Vererbte Variablen dürfen in Unterklassen nicht neu definiert werden Kompatible Signaturen für vererbte Methoden Typsichere Zuweisungen Semantisch äquivalente Referenzen und Operationen PG Reclipse Seminar: Refactoring Jan-Christopher Bals (27/30)

28 Unterstützung durch Tools Vergleich der Funktionalitäten ausgewählter Tools Tool RefactorIt Developer IDEA Eclipse JBuilder Jrefactory Hersteller RefactorIt IntelliJ IBM,... Borland Freeware Refactoring Encapsulate Field x x x Extract Method x x x x x Inline Method x x x Add / Remove Parameter x x x Pull Down Method x x x x x Push Up Method x x x x x Move method x x x x x Rename x x x x x PG Reclipse Seminar: Refactoring Jan-Christopher Bals (28/30)

29 Zusammenfassung Definition extern beobachtbares Verhalten erhalten Beispiel - iteratives, inkrementelles Vorgehen Unterstützung durch Katalog und Tools Nachteile nicht immer anwendbar (Datenbanken, öffentliche Schnittstellen) in Firmen schwer zu verkaufen PG Reclipse Seminar: Refactoring Jan-Christopher Bals (29/30)

30 Vielen Dank fürs Zuhören!...Fragen? PG Reclipse Seminar: Refactoring Jan-Christopher Bals (30/30)

0/100. Refactoring. Andreas Zeller. Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken

0/100. Refactoring. Andreas Zeller. Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken 0/100 Refactoring Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Refactoring im Überblick 1/100 Refactoring (wörtl. Refaktorisieren ) bedeutet das Aufspalten von Software

Mehr

Modularisierung. Klausur. Evaluation. Andreas Zeller. Objektorientierung C++ Sonstiges 33% 33% 33%

Modularisierung. Klausur. Evaluation.  Andreas Zeller. Objektorientierung C++ Sonstiges 33% 33% 33% Modularisierung Andreas Zeller 1 Klausur Objektorientierung C++ Sonstiges 33% 33% 33% 2 Evaluation http://frweb.cs.uni-sb.de/03.studium/08.eva/ 3 Modularisierung Andreas Zeller 4 Modularisierung Änderungen

Mehr

Klassen sollten nicht Wissen über die ganze Hierarchie, sondern nur über Nachbarklassen haben. Dies reduziert die Kopplung!

Klassen sollten nicht Wissen über die ganze Hierarchie, sondern nur über Nachbarklassen haben. Dies reduziert die Kopplung! Kapitel 11 Refactoring 11.1 Die Demeter-Regel (Lieberherr 89) Klassen sollten nicht Wissen über die ganze Hierarchie, sondern nur über Nachbarklassen haben. Dies reduziert die Kopplung! Demeter-Prinzip:

Mehr

Advanced Software Engineering WS0910 Kapitel3. Dr. Dominik Haneberg

Advanced Software Engineering WS0910 Kapitel3. Dr. Dominik Haneberg Advanced Software Engineering WS0910 Kapitel3 Dr. Dominik Haneberg REFACTORING 26.01.2010 Advanced Software Engineering 2 Inhalte dieses Kapitels Was ist Refactoring? Wozu und wann refactorn? Wie geht

Mehr

Klassen sollten nicht Wissen über die ganze Hierarchie, sondern nur über Nachbarklassen haben. Dies reduziert die Kopplung!

Klassen sollten nicht Wissen über die ganze Hierarchie, sondern nur über Nachbarklassen haben. Dies reduziert die Kopplung! Kapitel 11 Refactoring 11.1 Die Demeter-Regel (Lieberherr 89) Klassen sollten nicht Wissen über die ganze Hierarchie, sondern nur über Nachbarklassen haben. Dies reduziert die Kopplung! Demeter-Prinzip:

Mehr

86 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 2. Juli 2007

86 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 2. Juli 2007 86 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 2. Juli 2007 Hinweis Die Wahlen zum AStA, dem Senat sowie zu den Fakultätsräten der Universität Tübingen finden am Mittwoch,

Mehr

Advanced Software Engineering WS0910 Kapitel3. Dr. Dominik Haneberg

Advanced Software Engineering WS0910 Kapitel3. Dr. Dominik Haneberg Advanced Software Engineering WS0910 Kapitel3 Dr. Dominik Haneberg REFACTORING 01.02.2010 Advanced Software Engineering 2 Inhalte dieses Kapitels Was ist Refactoring? Wozu und wann refactorn? Wie geht

Mehr

Kapitel 11 Kapitel 11 Refactoring

Kapitel 11 Kapitel 11 Refactoring Vorlesung Softwaretechnologie 2007/8 Dr. Günter Kniesel R O O T S Kapitel Kapitel Refactoring "Refactoring" Einstiegs-Beispiel Refactoring: Schritt für Schritt Beispiel: Extract Method Indikationen für

Mehr

Vorlesung Softwaretechnologie. Wintersemester este 2009 R O O T S. Refactoring. Stand:

Vorlesung Softwaretechnologie. Wintersemester este 2009 R O O T S. Refactoring. Stand: Vorlesung Softwaretechnologie Wintersemester este 2009 R O O T S Kapitel 0 Refactoring Stand: 28.02.2009 "Refactoring" Einstiegs-Beispiel Refactoring: Schritt für Schritt Beispiel: Extract Method Indikationen

Mehr

Vorlesung Softwaretechnologie. Wintersemester este 2008 R O O T S. Refactoring. Stand: (Selbsttestfolie eingefügt)

Vorlesung Softwaretechnologie. Wintersemester este 2008 R O O T S. Refactoring. Stand: (Selbsttestfolie eingefügt) Vorlesung Softwaretechnologie Wintersemester este 2008 R O O T S Kapitel 0 Refactoring Stand: 5.02.2009 (Selbsttestfolie eingefügt) "Refactoring" Einstiegs-Beispiel Refactoring: Schritt für Schritt Beispiel:

Mehr

Kapitel 10 Refactoring

Kapitel 10 Refactoring Vorlesung Softwaretechnologie Wintersemester 204/5 R O O T S Kapitel 0 Refactoring Stand: 30.0.205 Was ist überhaupt Refactoring? Refactoring (noun): a change made to the internal structure of software

Mehr

Kapitel 11 Refactoring

Kapitel 11 Refactoring Vorlesung Softwaretechnologie Wintersemester 203/4 R O O T S Kapitel Refactoring Stand: 22..204 "Refactoring" Einstiegs-Beispiel Refactoring: Schritt für Schritt Beispiel: Extract Method Indikationen für

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

Refactoring. Dominique Steiner 1 und Monica De Donato 2. dedom1@bfh.ch

Refactoring. Dominique Steiner 1 und Monica De Donato 2. dedom1@bfh.ch Refactoring Dominique Steiner 1 und Monica De Donato 2 1 Berner Fachhochschule Technik und Informatik, 2502 Biel, CH, steid3@bfh.ch, 2 Berner Fachhochschule Technik und Informatik, 2502 Biel, CH, dedom1@bfh.ch

Mehr

Kapitel 11 Refactoring

Kapitel 11 Refactoring Vorlesung Softwaretechnologie Wintersemester 20 R O O T S Kapitel Refactoring Stand: 25..202 "Refactoring" Einstiegs-Beispiel Refactoring: Schritt für Schritt Beispiel: Extract Method Indikationen für

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

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

2 + 1, 50 pro Tag ab dem 3. Tag. 1, 50 plus 1, 50 pro Tag ab dem 4. Tag

2 + 1, 50 pro Tag ab dem 3. Tag. 1, 50 plus 1, 50 pro Tag ab dem 4. Tag Fallstudie: Videothek-Verwaltung Aufgabenstellung Abrechnung einer Videothek: 3 Arten von Videos Normalpreis Neuerscheinung Kindervideos 2 + 1, 50 pro Tag ab dem 3. Tag 3 pro Tag 1, 50 plus 1, 50 pro Tag

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

Vorlesung Software-Reengineering

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

Mehr

Refactoring. Uschi Beck

Refactoring. Uschi Beck Refactoring Uschi Beck uschibeck@web.de Gliederung Was ist Refactoring Definition, Einordnung in das Seminar Motivation Testen Code-Smells Katalog von Refactorings Aufbau, Beispiele Design Patterns als

Mehr

Michael C. Feathers. Legacy Code. Effektives Arbeiten mit. Refactoring und Testen bestehender Software

Michael C. Feathers. Legacy Code. Effektives Arbeiten mit. Refactoring und Testen bestehender Software Michael C. Feathers Effektives Arbeiten mit Legacy Code Refactoring und Testen bestehender Software Vorwort................................................... 13 Geleitwort.................................................

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

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Einführung Vererbung und Polymorphie. Kapitel 13 Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort

Mehr

Einführung in die Objektorientierung

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

Mehr

Seminar: CASE-Tools WS 06/ Refactoring. Thomas Löffler

Seminar: CASE-Tools WS 06/ Refactoring. Thomas Löffler Seminar: CASE-Tools WS 06/07 31.01.2007 Refactoring Thomas Löffler Überblick 1. Einführung: Refactoring Was ist das? Warum Refactoring? Ziele 2. Vorgehen Wo wird refactorisiert? Beispiele 3. Refactoringtools

Mehr

Konzepte der Programmiersprachen

Konzepte der Programmiersprachen Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C

Mehr

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz Einführung in C++ Vererbung I Durch Vererbung können aus bereits bestehenden Klassen neue Klassen konstruiert werden. Die neue abgeleitete Klasse erbt dabei die Daten und Methoden der sog. Basisklasse.

Mehr

Refactoring. Programmiermethodik. Eva Zangerle Universität Innsbruck

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

Mehr

19. Vererbung und Polymorphie

19. Vererbung und Polymorphie 667 19. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens (Ausdrucks-)Bäume -(3-(4-5))*(3+4*5)/6

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

Effektives Arbeiten mit Legacy Code

Effektives Arbeiten mit Legacy Code Effektives Arbeiten mit Legacy Code Refactoring und Testen bestehender Software von Michael C. Feathers 1. Auflage Effektives Arbeiten mit Legacy Code Feathers schnell und portofrei erhältlich bei beck-shop.de

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

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Softwaretechnik WS 16/17. Übungsblatt 01

Softwaretechnik WS 16/17. Übungsblatt 01 Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

Kapitel 3 Software Quality II

Kapitel 3 Software Quality II Kapitel 3 Software Quality II Software Architecture, Quality, and Testing FS 2016 Prof. Dr. Jana Koehler jana.koehler@hslu.ch Agenda Heute Was ist Refactoring? Problem des Designverfalls Wann wird Refactoring

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

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

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

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

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen Paradigma = Denkweise oder Art der Weltanschauung klassische Einteilung: Programmiersprache imperativ deklarativ prozedural objektorientiert funktional logisch Zusammenhänge tatsächlich

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

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

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string

Mehr

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0 Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Software-Restrukturierung

Software-Restrukturierung 0/24 Software-Restrukturierung Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Restrukturierung 1/24 Restrukturierung ist nach dem Reverse Engineering (Programmverstehen)

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

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

Mehr

Vorlesung Software-Reengineering

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

Mehr

SE2-6. Übung Johannes Bürdek

SE2-6. Übung Johannes Bürdek SE2-6. Übung 11.12.2014 Johannes Bürdek johannes.buerdek@es.tu-darmstadt.de Fragen und Support: se2@es.tu-darmstadt.de oder ins Forum: https://moodle.tu-darmstadt.de/mod/forum/view.php?id=56674 ES Real-Time

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 11: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

SmallTalk - Eine kurze Einführung

SmallTalk - Eine kurze Einführung SmallTalk - Eine kurze Einführung Andreas Lochbihler Lehrstuhl Programmierparadigmen Universität Karlsruhe 15. Juni 2009 SmallTalk Entwickelt seit Anfang der 70er bei XEROX PARC Alan Kay, Dan Ingalls,

Mehr

Grundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Grundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Grundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Teil 1: Weitere Grundlagen von C++ Das assert Statement File Input und

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

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

Vorlesung Software-Reengineering

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

Mehr

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

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell Klassen - Technisch Eine Klasse ist eine Einheit mit einem Namen, die Daten und Funktionalität beinhaltet 12. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, Kapselung,

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

10. OLAPLINE-Anwendertreffen

10. OLAPLINE-Anwendertreffen 10. OLAPLINE-Anwendertreffen 26. und 27. April 2017 Schloss Garath Düsseldorf Zwei Tage Weiterbildung und Networking integriert: Vorträge, Workshops und Erfahrungsaustausch rund um TM1 JAVA EXTENSIONS

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

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Prinzipien der objektorientierten Programmierung (OOP)

Prinzipien der objektorientierten Programmierung (OOP) Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm

Mehr

18. Vererbung und Polymorphie

18. Vererbung und Polymorphie 590 18. Vererbung und Polymorphie Ausdrucksbäume, Vererbung, Code-Wiederverwendung, virtuelle Funktionen, Polymorphie, Konzepte des objektorientierten Programmierens (Ausdrucks-)Bäume 591 -(3-(4-5))*(3+4*5)/6

Mehr

Allgemeines - Prinzipien

Allgemeines - Prinzipien OOP - Prinzipien Allgemeines - Prinzipien OO modelliert die reale Welt als System interagierender Objekte Objekt = gedankliche oder reale Einheit in der Umwelt und/oder in Software Klar definierte Schnittstellen

Mehr

Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo. Statische Codeanalyse wirklich effektiv nutzen

Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo. Statische Codeanalyse wirklich effektiv nutzen Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo Statische Codeanalyse wirklich effektiv nutzen Über uns Jan Schumann Jahrgang 1976 System- / Softwarearchitekt Entwickler von: PHP_Depend,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Algorithmen und Programmierung III WS 05/06

Algorithmen und Programmierung III WS 05/06 Algorithmen und Programmierung III WS 05/06 Übungsblatt 4 - Abgabe vor der Vorlesung 15.11.05 Aufgabe 0 (Wiederholung) [Optional] Ausnahmen (throw, catch, finally, throws, Behandlung, Laufzeitausnahmen,

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

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Kapitel 4: Klassen und Unterklassen

Kapitel 4: Klassen und Unterklassen Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind

Mehr

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Prinzip der Vererbung: Aus

Mehr

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement

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

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 179. Function.h. #include <string> Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function

Mehr

Kapitel 5: Interfaces

Kapitel 5: Interfaces Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,

Mehr

Programmieren 1 09 Vererbung und Polymorphie

Programmieren 1 09 Vererbung und Polymorphie Programmieren 1 09 Vererbung und Polymorphie Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 I. VERERBUNG 2 2 Vererbung Von Interfaces übernehmen

Mehr

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

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

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

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

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik:

Mehr

Spezifikation, Klassen, Schnittstellen in Java. 2.4 Datenabstraktion, Objektorientierung, Java

Spezifikation, Klassen, Schnittstellen in Java. 2.4 Datenabstraktion, Objektorientierung, Java Spezifikation, Klassen, Schnittstellen in Java 2.4 Datenabstraktion, Objektorientierung, Java 2.4.1 Grundlegende Begriffe der Objektorientierung (s. auch Alp2) Klassen sind wie Module eine Einheit der

Mehr

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

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

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor: 4. Vererbung Grundlagen der Vererbung 4. Vererbung 4. Vererbung Grundlagen der Vererbung Idee der Vererbung Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Programmieren in C++ Überladen von Methoden und Operatoren

Programmieren in C++ Überladen von Methoden und Operatoren Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer

Mehr