Refactoring I. Nach Martin Fowler - Refactoring
|
|
- Lars Lange
- vor 7 Jahren
- Abrufe
Transkript
1 Refactoring I Nach Martin Fowler - Refactoring Kapitel 6 : Methoden zusammenstellen Kapitel 9 : Bedingte Ausdrücke vereinfachen Kapitel 10: Methodenaufrufe vereinfachen - Mario Boley -
2 Methoden zusammenstellen Lange Methode Methode ingegrieren Viele kurze Methoden Methode extrahieren Problem mit lokalen Variablen? Methode durch Methodenobjekt ersetzen sehr viele, stark verheddert mehrere Zuweisungen? Temporäre Variable zerlegen Temporäre Variable durch Abfrage erstezen später verwendete Zuweisung
3 Methode extrahieren Ausgangsituation: Codefragment, das zusammengefasst werden kann Nach Refactoring: - Fragment ist neue Methode - Name der Methode erklärt Aufgabe
4 Methode extrahieren - Warum? Nachteile langer Methoden verbergen Informationen zugrundeliegende Logik schwerer nachzuvollziehen Vorteile kurzer Methoden bessere Wiederverwendbarkeit Methoden höherer Ebenen besser lesbar einfacheres Überschreiben
5 Methode extrahieren - Warum? Nachteile langer Methoden Wichtig dazu: aussagekräftige Methodennamen verbergen Informationen zugrundeliegende Logik schwerer nachzuvollziehen Vorteile kurzer Methoden bessere Wiederverwendbarkeit Methoden höherer Ebenen besser lesbar einfacheres Überschreiben
6 Methode extrahieren Vorgehen ohne Eclipse Neue Methode erstellen / nach Aufgabe benennen Zu extrahierenden Code in neue Methode kopieren Verwendung lokaler Variablen prüfen lokale Variable wird im extrahierten Code verändert! temporäre Variable wird nur im extrahierten Code benutzt! zunächst andere Refactorings durchführen in der neuen Methode lokal deklarieren! benötigte lokale Variablen als Parameter übergeben Kompilieren - Testen Ersetzen des extrahierten Codes durch Aufruf neuer Methode Kompilieren
7 Methode extrahieren - Vorgehen Neue Methode erstellen / nach Aufgabe benennen Zu extrahierenden Code in neue Methode kopieren Verwendung lokaler Variablen prüfen lokale Variable wird im extrahierten Code verändert! zunächst andere Refactorings durchführen - Temporäre Variable durch Abfrage ersetzen temporäre Variable wird nur im extrahierten Code benutzt! - Temporäre Variable zerlegen in der neuen Methode lokal deklarieren! - Methode durch Methodenobjekt ersetzen benötigte lokale Variablen als Parameter übergeben Kompilieren - Testen Ersetzen des extrahierten Codes durch Aufruf neuer Methode Kompilieren
8 Methode extrahieren Vorgehen mit Eclipse zu extrahierenden Codeblock markieren im Kontextmenü Methode extrahieren wählen (bzw. Shift+Alt+M) drücken Im folgenden Dialog Namen eingeben kompilieren - testen
9 Temporäre Variable durch Abfrage ersetzen Ausgangsituation: temporäre Variable speichert Ergebnis eines Ausdrucks Nach Refactoring: - Audruck durch Methode ersetzt - Referenzen der Variable durch Aufruf dieser Methode ersetzt
10 Temporäre Variable durch Abfrage ersetzen - Warum? temporäre Variablen nur lokal benutzbar fördern das Schreiben langer Methoden müssen oft entfernt werden, damit Methode extrahieren angewendet werden kann Abfragemethode kann von gesamter Klasse benutzt werden fördert Enstehung von klarem Code
11 Temporäre Variable durch Abfrage ersetzen - Vorgehen Variable als final deklarieren kompilieren Rechte Seite der Zuweisung in Methode extrahieren Referenzen der Variable durch Methodenaufruf ersetzen kompilieren - testen
12 Temporäre Variable zerlegen Ausgangsituation: temporärer Variable wird mehrfach etwas zugewiesen ist aber weder Schleifenvariable noch Ergebnis sammelnd Nach Refactoring: für jede Zuweisung eigene temporäre Variable
13 Temporäre Variable zerlegen - Warum? Klare Zuordnung Variable / Verantwortlichkeit Erhöht Lesbarkeit Vereinfacht späteres Zerlegen
14 Temporäre Variable zerlegen - Vorgehen Namen der Variablen bei Deklaration und erster Zuweisung ändern Neue Variable als final deklarieren Referenzen bis zur zweiten Zuweisung ändern Dort ursprüngliche Deklaration einfügen Für jede weitere Zuweisung wiederholen Kompilieren - Testen
15 Methode durch Methodenobjekt ersetzen Ausgangsituation: lange Methode mit mehreren lokalen Variablen, die verhindern, daß Methode extrahieren angewandt werden kann Nach Refactoring: - Methode wird eigene Klasse - lokale Variablen Felder dieser Klasse - Neue Klasse hat Verweis auf Ausgangsklasse
16 Methode durch Methodenobjekt ersetzen - Warum? Zerlegen von Methoden wird durch lokale Variablen erschwert Manchmal reicht temporäre Variable durch Abfrage ersetzen nicht aus Auf der neuen Klasse kann einfach Methode extrahieren angewandt werden
17 Methode durch Methodenobjekt ersetzen - Vorgehen Neue Klasse erstellen - nach Methode benennen in alter Methode nur noch: - neues Objekt erstellen - compute Aufrufen finales Feld für Ursprungsobjekt einfügen kompilieren Felder für alle temporären Variablen und Parameter einfügen Rumpf von Orginalmethode nach compute Konstruktor einfügen mit Ausgangsobjekt und Parametern Methode compute hinzufügen
18 Bedingte Ausdrücke vereinfachen Bedingte Ausdrücke konsolidieren komplizierter, verschachtelter Bedingungsblock Geschachtelte Bedingungen durch Wächterbedingungen ersetzen verschiedene Bedingungen mit gleichen Ergebnis? übersichtlicher Bedingungsblock Bedingung zerlegen komplizierter Bedingungsblock Verzweigung abhängig von Objekttyp Bedingten Ausdruck durch Polymorphismus ersetzen Kein expliziter Bedingungsblock mehr
19 Geschachtelte Bedingungen durch Wächterbedingungen ersetzen Ausgangsituation: verschachtelter Bedingungsblock, der normalen Ablauf nicht leicht erkennen läßt Nach Refactoring: Sonderfälle vorgelagert durch Wächterbedingungen Bewachen den eigentlichen Block vor Ausnahmen
20 Geschachtelte Bedingung durch Wächterbedingung ersetzen - Beispiel double getpayamount() { double result; if (isdead) result=deadamount(); else { if (isseparated) result=seperatedamount(); else { if (isretired) result=retiredamount(); else result=normalpayamount(); } } return result; } double getpayamount() { if (isdead) return deadamount(); if (isseperated) return seperatedamount(); if (isretired) return retiredamount(); return normalpayamount(); }
21 Geschachtelte Bedingung durch Wächterbedingung ersetzen - Beispiel double getpayamount() { double result; if (isdead) result=deadamount(); else { if (isseparated) result=seperatedamount(); Ablauf klarer else { Auftrittswahrscheinlichkeit betonter Code kürzer } if (isretired) result=retiredamount(); else result=normalpayamount(); } } return result; double getpayamount() { if (isdead) return deadamount(); if (isseperated) return seperatedamount(); if (isretired) return retiredamount(); return normalpayamount(); }
22 Geschachtelte Bedingung durch Wächterbedingung ersetzen - Vorgehen Für jede Prüfung Wächterbedinung einrichten Wächterbedingung führt entweder zu return oder wirft Exception Nach jeder Ersetzung kompilieren und testen
23 Bedingte Ausdrücke konsolidieren Ausgangsituation: Folge von Bedingungen mit gleichen Ergebnis Nach Refactoring: Bedingungen kombiniert und in eigene Methode extrahiert
24 Bedingte Ausdrücke konsolidieren - Warum? Prüfung wird übersichtlicher Zusammengehörigkeit von verschiedenen Prüfungen wird deutlich Oft wird Methode extrahieren möglich
25 Bedingte Ausdrücke konsolidieren - Warum? Prüfung wird übersichtlicher Zusammengehörigkeit von verschiedenen Prüfungen wird deutlich Diese Refaktorisierung nicht durchführen, wenn: Oft wird Methode extrahieren möglich - Bedingungen stehen nur zufällig nebeneinander - logisch nicht verknüpft
26 Bedingte Ausdrücke konsolidieren - Vorgehen Ja Hat eine der Bedingungen Seiteneffekte? Nein Refaktorisierung kann nicht eingesetzt werden Bedingungen mittels & zu einer zusammenfassen evtl. Abfrage von Veränderung trennen kompilieren testen evtl. Methode extrahieren auf Bedingung andwenden
27 Bedingung zerlegen Ausgangsituation: komplizierte if-then-else-bedingung Nach Refactoring: extrahierte Methode für: - die Bedingung - den then-zweig - den else-zweig
28 Bedingung zerlegen Gleiche Motivation wie bei Methode extrahieren Genauso das Vorgehen. Je einmal Methode extrahieren für: Bedigung Then-Block Else-Block
29 Bedingten Ausdruck durch Polymorphismus ersetzen Ausgangsituation: Bedingung wählt unterschiedliches Verhalten aus - abhängig vom Typ eines Objekts Nach Refactoring: - Jeder Bedingungszweig in überschreibender Methode einer Unterklasse - ursprüngliche Methode abstrakt
30 Bedingten Ausdruck durch Polymorphismus ersetzen Entsprechende Vererbungsstruktur muß Ausgangsituation: vorhanden sein oder erstellt werden: Bedingung wählt unterschiedliches Verhalten aus - - Typenschlüssel abhängig durch vom Unterklassen Typ eines Objekts ersetzen - Typenschlüssel durch Zustand/Strategie ersetzen Nach Refactoring: - Jeder Bedingungszweig in überschreibender Methode einer Unterklasse - ursprüngliche Methode abstrakt
31 Bedingten Ausdruck durch Polymorphismus ersetzen - Warum? Explizite Bedingungen werden überflüssig Hinzufügen eines neuen Typs erfordert nur noch Erstellung neuer Unterklasse Abhängigkeiten werden verringert
32 Bedingten Ausdruck durch Polymorphismus ersetzen - Vorgehen Bedingungsteil mit Methode extrahieren auslagern gegebenenfalls Methode an Spitze der Vererbungsstruktur bringen In Unterklasse Methode mit dem bedingten Ausdruck überschreiben Methode in Oberklasse als abstrakt deklarieren Zweige übrig? entsprechenden Zweig in Unterklasse kopieren kompilieren testen falls nötig Felder von private auf protected ändern kopierten Zweig aus Bedingungsblock entfernen kompilieren testen
33 Methodenaufrufe vereinfachen Methode mit langer Parameterliste Parameter durch Methode ersetzen Parameterobjekt einführen schlecht benannte Methode Methode umbennen Code leichter lesbar, einfacher weiter zu refaktorisieren Abfragemethode mit Seiteneffekt Abfrage von Veränderung trennen
34 Methode umbenennen Ausgangsituation: Methode hat Namen, der ihre Aufgabe nicht klar macht Nach Refactoring: Methode hat einen guten Namen :-)
35 Methode umbennen Warum? Viele kleine Methoden (siehe Methode extrahieren) sind gewünscht Bringen vollen Nutzen aber nur bei guter Bezeichnung sind für schnelles Verständnis des Codes unerlässlich
36 Methode umbenennen Vorgehen in Eclipse Cursor auf beliebiges Vorkommen des Methodennamen Entweder: Shift+Alt+R drücken oder Im Kontextmenü Refactor/Rename auswählen Im folgenden Dialog neuen Namen eingeben
37 Abfrage von Veränderung trennen Ausgangsituation: eine Methode gibt einen Wert zurück, ändert aber auch den Zustand des Objekts Nach Refactoring: - eine Methode für die Abfrage - eine Methode für die Änderung
38 Abfrage von Veränderung trennen Warum? Methode ohne Seiteneffekte kann beliebig oft aufgerufen werden Aufrufe können einfach innerhalb der Methode verschoben werden
39 Abfrage von Veränderung trennen Wann? nur bei erkennbaren Seiteneffekten z.b. Verwendung von Pufferfeldern in Abfrage nicht erkennbar Da jede Abfragefolge ergibt gleiche Ergebnisse
40 Abfrage von Veränderung trennen - Vorgehen Abfrage erstellen, die gleichen Wert wie Originalmethode zurückgibt Rückgaben der Originalmethode auf Aufrufe der neuen Query ändern Kompilieren Testen Kompilieren Testen Davor Aufruf der Originalmethode setzen Aufruf der Originalmethode durch Aufruf der Abfrage ersetzen Für jeden Aufruf wiederholen Originalmethode als void deklarieren - returns entfernen
41 Parameter durch Methode ersetzen Ausgangsituation: Methode A wird aufgerufen und mit Ergebnis als Parameter wird Methode B aufgerufen. B könnte A aber auch selber aufrufen. Nach Refactoring: - gebenenfalls neue Abfragemethode für die Berechnung des Parameters - Parameter entfernt
42 Parameter durch Methode ersetzen Motivation : kürzere Parameterlisten sind leichter zu verstehen Kann nicht durchgeführt werden, wenn Berechnung einen Parameter der aufrufenden Methode verwendet
43 Parameter durch Methode ersetzen Vorgehen Falls notwendig, Berechnung des Parameters extrahieren Referenzen des Parameters durch Referenzen auf Methode ersetzen kompilieren testen Mit Eclipse durch Refactor/Change Signature Parameter entfernen
44 Parameterobjekt einführen Ausgangsituation: Gruppe von Parametern, die auf natürliche Weise zusammengehören Nach Refactoring: - Klasse fasst Gruppe zusammen - ein Objekt dieser Klasse wird als Parameter übergeben
45 Parameterobjekt einführen Warum? Parameterliste wird kürzer Sinneinheit deutlicher Verhalten kann eventuell in die neue Klasse verschoben werden
46 Parameterobjekt einführen Vorgehen Klasse erstellen, die Parametergruppe repräsentiert kompilieren Mit Eclipse Objekt der neuen Klasse zur Signatur hinzufügen kompilieren testen Noch weitere Parameter übrig? Parameter entfernen, Aufrufer und Methode neues Objekt verwenden lassen Prüfen ob Verhalten in das Parameterobjekt verschoben werden kann
Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
Mehr5.6 Vererbung. Vererbung
5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrJava Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
Mehr7. 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
MehrJava Einführung Methoden. Kapitel 6
Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden
Mehr8 Baum in perfekter Komposition
8 Baum in perfekter Komposition Die Implementierung des Binärbaums im letzten Kapitel wird mithilfe des Entwurfsmusters Kompositum optimiert. Knoten und Abschluss Bei der einfach verketteten Liste wurde
MehrEine 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,
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrProgrammierkurs. Manfred Jackel
Java für Anfänger Teil 7: Methoden Programmierkurs 06.-10.10.2008 Manfred Jackel 1 Methoden In der imperativen Programmierung sind Funktionen ein wichtiges Mittel zur Modularisierung. [Oft benötigter]
MehrProf. W. Henrich Seite 1
Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse
MehrTheorie 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
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrAlgorithmen 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
MehrVIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden
VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:
MehrVererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.
Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
MehrJava Einführung Methoden in Klassen
Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding
MehrRepetitorium 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
MehrDer Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.
Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrFaustregeln zu Zusicherungen
Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während
MehrC++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern
C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrÜberschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
MehrPräzedenz von Operatoren
Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit
MehrAnwendungsentwicklung 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,
MehrMethoden (fortgeschritten) in C# - 1
Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden
MehrEinführung in die Programmierung
Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Klassenmethoden Motivation Programm zur Berechnung von public class Eval1 { public static void main(string[] args) { java.util.scanner
MehrAlgorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.
Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte
MehrJAVA - Methoden - Rekursion
Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen
MehrDateien verwalten (Bilder, Dokumente, Medien)
17 Dateien verwalten (Bilder, Dokumente, Medien) Bilder und Dokumente können Sie im Funktionsmenü unter Dateiliste verwalten. Alle Bilder und Dokumente, die Sie in Ihren Baukasten hochgeladen haben, werden
MehrObjektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen
Objektorientierte Programmierung mit Grundlagen 27.10.2008 1 Übersicht 27.10.2008 2 1 Übersicht Klassen und Objekte in - Klassen - Objekte - Klassen - Objekte 27.10.2008 3 Übersicht 27.10.2008 4 2 Einführung
MehrObjects 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
Mehr4 Kontrollfluss-Diagramme
4 Kontrollfluss-Diagramme In welcher Weise die Operationen eines Programms nacheinander ausgeführt werden, läßt sich anschaulich mithilfe von Kontrollfluss-Diagrammen darstellen. Ingredienzien: Start Stop
MehrKlassen mit Instanzmethoden
Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
MehrJavakurs 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
MehrJAVA - Methoden
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können
MehrProgrammiertechnik Klassenmethoden
Programmiertechnik Klassenmethoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Programm zur Berechung von public class Eval1 { public static void main(string[] args) { java.util.scanner
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrVorlesung Programmieren
Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),
MehrC.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
MehrVorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus
Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
Mehr11.3 Virtuelle Methoden
11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout
MehrObjektorientierung: Klassen und Objekte
Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen
Mehr6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
MehrTesten mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern
MehrKlassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden
Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrKapitel 3: Variablen
Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber
MehrProgrammieren 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
MehrWiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung
Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben
MehrJavakurs 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
MehrGrundzü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
MehrGetName(), GetName(), GetGeschlecht() und AelterWerden().
11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrRefactoring 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
MehrBlöcke und Grand Central Dispatch
Blöcke und Grand Central Dispatch Multithreading ist ein Thema, mit dem sich alle Programmierer bei der modernen Anwendungsentwicklung beschäftigen müssen. Selbst wenn Sie glauben, dass Ihre Anwendung
MehrKlassendefinitionen verstehen
Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen
MehrFachgebiet 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
MehrProbeklausur: 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,
MehrS. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"
S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert
MehrAusbildungsziel: Die Nutzung der Zwischenablage -Kopieren und Einfügen-
Ausbildungsziel: Die Nutzung der Zwischenablage -Kopieren und Einfügen- Die Möglichkeit am Computer einmal erledigte Arbeiten beliebig oft zu duplizieren bzw wieder zu verwenden, ist wohl der größte Fortschritt
MehrVorlesung 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
Mehr5.5.8 Öffentliche und private Eigenschaften
5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
Mehr2.4.3 Polymorphie (Wiederholung von Alp2)
2.4.3 Polymorphie (Wiederholung von Alp2) Sparbuch einsparbuch = new Sparbuch(3.0); Konto einkonto; KontoDrucker = new KontoDrucker(); KontoDrucker.setzeKonto(einSparbuch); einkonto = einsparbuch; Wie
MehrLua Grundlagen Einführung in die Lua Programmiersprache
Lua Grundlagen Einführung in die Lua Programmiersprache 05.05.2014 Ingo Berg berg@atvoigt.de Automatisierungstechnik Voigt GmbH Die Lua Programmiersprache Was ist Lua? freie Programmiersprache speziell
MehrRO-Tutorien 3 / 6 / 12
RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
MehrEinführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
MehrStrukturierte Objekttypen
Strukturierte Objekttypen Der Typ t approxmatch row des letzten Beispiels ist ein sogenannter Objekttyp. Definition: Ein Objekttyp ist ein Datentyp, bei dem (u.u. verschiedene) bekannte Datentypen zu einem
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrAlgorithmen und Datenstrukturen 07
5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7
MehrBei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife
303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen
MehrProgrammieren in C. Zeiger und Zeichenketten. Prof. Dr. Nikolaus Wulff
Programmieren in C Zeiger und Zeichenketten Prof. Dr. Nikolaus Wulff Zeiger Variablen benötigen zur Laufzeit einen bestimmten Speicherplatz. Die Größe des Bedarfs richtet sich nach dem Typ der Variablen,
MehrInhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte
Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)
MehrArbeiten mit JavaKara
Arbeiten mit JavaKara 1. Programmierumgebung Möchte man ein neues Programm erstellen, so wird einem ein Programmeditor zur Verfügung gestellt, der bereits eine vorgefertigte Schablone darstellt. In der
MehrSimpleOOP Opensource OOP Plugin
SimpleOOP Opensource OOP Plugin Einführung SimpleOOP bringt PureBasic eine einfache OOP Unterstützung ohne komplizierten Syntax, mit besonderem Wert auf einen sauberen und simplen Code. SimpleOOP ist Opensource
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
MehrLetztes 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
MehrEinstieg in die Programmierung mit Visual Basic.NET
Einstieg in die Programmierung mit Visual Basic.NET Agenda - Methoden mit Argumenten - Überladen von Methoden - Eigenschaftenprozeduren - Eigenschaftenprozeduren automatisch generieren - Konstruktoren
MehrIn Inventor werden Stile bzw. Stilbibliotheken zur Formatierung von Objekten benutzt:
11. Stile und Stilbibliotheken In Inventor werden Stile bzw. Stilbibliotheken zur Formatierung von Objekten benutzt: In einem Stil werden mehrere Eigenschaften bzw. Parameter zusammengefasst, die für einen
MehrBeispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf
16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen
Mehr13. Tutorium zu Programmieren
13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting
MehrHandbuch ECDL 2003 Modul 5: Datenbank Formulare anpassen
Handbuch ECDL 2003 Modul 5: Datenbank Formulare anpassen Dateiname: ecdl5_04_02_documentation Speicherdatum: 24.11.2004 ECDL 2003 Modul 5 Datenbank - Formulare anpassen Inhaltsverzeichnis 1 EINLEITUNG...
Mehr5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken
4 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Blöcke Blöcke erweitern einzelne Anweisungen, etwa bei Kontrollstrukturen später Beispiel: Einzelne Anweisung: anweisung; Erweiterung
Mehr