Umsetzung von Spezialisierung/Generalisierung von Operationen in Argumenten und Rückgabetypen Tobias, Markus S., Janko, Sebastian, Stefanie.

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

der Universität Oldenburg
Prüfung objektorientierter Programme -1
ATKIS® Modell- und kartographische Generalisierung
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
SWTPRA 2000 Programm Robots.
Objektorientierte Programmierung am Beispiel von Java
Remote Methode Invocation (RMI)
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Klassen und Schnittstellen Klasse: Definiert Zustandsraum ihrer Instanzen vollständig (Implementierung der Struktur, soweit Voraussetzung für die Methoden-
VFP Class Browser. © 1999 TMN-Systemberatung GmbH Einsatz des Class Browser n Managen von Klassen inklusive, ändern, umbenennen, löschen und umdefinieren.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Objektorientiertes Programmieren
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
Grundlagen der Programmierung
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
ObjektOrientiertes Programmieren
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Klassenhierarchien, Vererbung
Objektorientierte Programmierung
EPROG Tutorium #5 Philipp Effenberger
se_11_interfaces.ppt1 Softwareengineering Interfaces Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
Benutzerdefinierte Tags
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 11. Vorlesung WS 2001/2002.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
Sichtbarkeit einschränken
Abstrakte Klassen und das Interface-Konzept
Microsoft Student Partner
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 Generische Programmierung in Java.
Tutorium Software-Engineering SS14 Florian Manghofer.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
OOP II.
Programmierung und Vererbung in Java
 Präsentation transkript:

Umsetzung von Spezialisierung/Generalisierung von Operationen in Argumenten und Rückgabetypen Tobias, Markus S., Janko, Sebastian, Stefanie

Spezialisierung/Generalisierung2 Übersicht Checker und notwendige Hilfsklassen Transformer Behobene Bugs Sonstige Tätigkeiten

Spezialisierung/Generalisierung3 Checker AllOperationsImplementedChecker –Für Java++ –Prüfung, ob alle Operationen der Oberklassen und der implementierten Interfaces durch eine Methode in der Unterklasse implementiert wird OverrideThrowsChecker –Für Java und Java++ –Prüfung, ob die Exceptions der Throws-Klauseln der überschreibenden Operationen und Methoden zu der Throws-Klausel der überschriebenen Operation oder Methode passen.

Spezialisierung/Generalisierung4 Checker OverrideReturnTypeChecker –Für Java und Java++ –Prüfung, ob der Rückgabewert einer Operation oder Methode zum Rückgabewert der überschriebenen Operation oder Methode passt. OverrideVisibilityChecker –Für Java und Java++ –Prüfung, ob die Sichtbarkeit einer überschriebenen Operation oder Methode nicht durch die Sichtbarkeit einer überschreibenden Operation oder Methode verringert wird. Testfälle

Spezialisierung/Generalisierung5 Hilfsklassen: Modelservice GetMoreGeneralOperationsStrategy FlattenedClass im Package model.j –Ist die breitgeklopfte Version der ihr zu Grunde liegenden Klasse –Enthält Operationen & Methoden aller Oberklassen & Interfaces –Enthält Oberklassen & Interfaces aller Oberklassen & Interfaces

Spezialisierung/Generalisierung6 Transformer Behandlung der Argumente –Feststellung des Parametertyps zur Laufzeit –Abfragen um welchen Typ es sich wirklich handelt mit Hilfe von instanceof - Anfang mit dem speziellsten Typ null –Ermittlung der speziellsten Methode und Aufruf mit Casts

Spezialisierung/Generalisierung7 Transformer Behandlung der Argumente –Ermittlung des Implementierungsortes und Aufruf mit super bzw. this

Spezialisierung/Generalisierung8 Transformer Behandlung der Rückgabetypen ModelTraveser traversiert über das Projekt mit dem GeneralizationVisitorForReturnTypes Überschriebene Methoden und deren Rückgabetypen bestimmen. – verschiedene Typen in den Oberklassen --> Fehler (wird bereits vom OverrideReturnTypeChecker überprüft)

Spezialisierung/Generalisierung9 Transformer – gleiche Typen in den Oberklassen Rückgabetyp in den überschriebenen Methoden spezieller als in den Methoden aus den Oberklassen --> Rückgabetyp ändern und Cast bei Aufrufen einfügen Rückgabetyp in den überschriebenen Methoden der gleiche Typ wie in den Methoden aus den Oberklassen --> nichts machen Rückgabetyp in den überschriebenen Methoden nicht spezieller oder nicht der gleiche Typ wie in den Methoden aus den Oberklassen --> Fehler

Spezialisierung/Generalisierung10 Transformer Rückgabetyp ändern und Cast bei Aufrunfen einfügen Umsetzung: GeneralisationVisitorForReturnTypes implementiert die Logik –Typen der Methoden feststellen und mit Hilfe der Methode isMoreSpecialThan() (realisiert über einen Inheritance- Service) –ModelTraverser durchsucht das Projekt mit Hilfe des CreateReplacementsOfClassVisitorHandler das Projekt nach Aufrufern dieser Methode und legt diese zusammen mit einer passenden ClassCastExpression in einer ReplacementList ab

Spezialisierung/Generalisierung11 Transformer –Änderung des Rückgabetyps wird direkt über die Methode setTypeApplication() durchgeführt. –Zur Erstellung der Casts wird die ReplacementList dem Traversieren des Transformers über eine neue Instanz des Replacers verarbeitet und die Casts darüber an die entsprechenden Stellen eingefügt.

Spezialisierung/Generalisierung12 Behobene Bugs Bug 181: ClassCastExceptions können jetzt geparst werden Bug 212: OverrideThrowsChecker für Java eingeführt Bug 213: OverrideReturnTypeChecker für Java eingeführt Bug 215: Implementierung von instanceof

Spezialisierung/Generalisierung13 Sonstige Tätigkeiten Browser, Driver, RefactorFramework für Java++ angepasst ModelTraverser durch Methode traverse ersetzt Referencer –Keine Änderungen von unserer Seite –Unterstützung der anderen Gruppen bei Einführung der VisitorFactory Visitoren –Aufteilung diverser Visitoren für Java und Java++ Umsetzung der Events –Bereitstellen der Basisklassen –Fehlersuche

Spezialisierung/Generalisierung14 Fragen???

Spezialisierung/Generalisierung15 Vielen Dank für die Aufmerksamkeit!