René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Java Inside every large language is a small language struggling.

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Einführung in die Programmierung Zusammenfassung
Kritische Betrachtung
der Universität Oldenburg
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Internetzugriff mit Strings und Streams
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Objektorientierung
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Einführung in die OOP in Java
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Vererbung
Informatikunterricht mit Java
Template Pattern Richard Göbel.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Isabelle/HOL ( Kripke Structures & Model Checking ) Ying Wang, Nelli Bärsch, Bartosz Rynarzewski,
Objektorientiertes Programmieren
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Klassenhierarchien, Vererbung
EPROG Tutorium #5 Philipp Effenberger
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Generizität in Java und C#
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Objektorientierte Programmierung mit JAVA. © Klasse Wie in C++ ist die Klasse das primäre Mittel um ein Entity abzubilden Die Eigenschaften.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 Generische Programmierung in Java.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
1 Eine Einführung in die objektorientierte Programmierung.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
OOP II.
Programmierung und Vererbung in Java
Michael Barth, Fabian Birzele und Gefei Zhang
Vererbung in Java Von Jan und Eddi.
 Präsentation transkript:

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Java Inside every large language is a small language struggling to get out … T.Hoare nach Igarashi, Pierce, Wadler

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Gliederung Motivation Featherweight Java Programmstruktur Reduktion Regeln(Syntax, Reduktion, Typisierung) Stupid Cast Beweis der Typsicherheit Featherweight Generic Java (FGJ) Schlussfolgerungen Gliederung

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Was ist Featherweight Java ein funktionaler Java-Kern Reduktion auf das Wesentliche nur wenig umfangreicher als der - Kalkül Subset von Java und von Standard- Java compilierbar voll Turing-fähig Motivation

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Wozu Featherweight Java? Finden von Typproblemen im Java-Kern Beweisen der Typsicherheit des Java- Kerns Basis für Erweiterungen plastische Darstellung durch compilierbaren Code Motivation

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS mögliche Ausdrücke Objektinstanzierung Methodenaufruf Feldzugriff Casting Variablenzugriff Programmstruktur

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Was ist in FJ möglich gegenseitige rekursive Klassendefinitionen Methoden überschreiben Methodenrekursion mit Hilfe von this Vererbung Programmstruktur

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Was ist in FJ nicht möglich Zuweisungen Interfaces Überladen Aufrufe von super Null-Pointer Primitive Datentypen Programmstruktur

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Was ist in FJ nicht möglich abstrakte Methodendeklarationen Shadowing von Feldern Zugriffskontrolle (public, private, etc.) Exceptions Fortgeschrittene Techniken Programmstruktur

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 FJ Programm class A extends Object { A() {super();} } class B extends Object { B() {super();} } Programmbeispiel

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 FJ Programm class Pair extends Object { Object fst; Object snd; Pair(Object fst, Object snd) { super(); this.fst=fst; this.snd=snd; } Pair setfst(Object newfst) { return new Pair(newfst, this.snd); } Programmbeispiel

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Reduktion new Pair(new A(), new B()).setfst(new B()); newfst new B() this new Pair(new A(), new B()) new Pair(newfst, this.snd) new Pair(new B(), new B()) Reduktion

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Java S Syntax Regeln

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 FJ Syntax L ::= class C extends D { C f; K M } K ::= C(C f) {super(f); this.f=f;} M ::= C m(C x) { return e;} e ::= x | e.f | e.m(e) | new C(e) | (C)e Regeln

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 FJ Vererbung C <: C C <: D D <: E C <: E class C extends D {...} C <: D Regeln

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Casting Regeln e 0 : D D <: C (C)e 0 : C e 0 : D C <: D C D (C)e 0 : C Upcast Downcast Stupid Cast

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Stupid Cast Downcast Upcast Object BA (A)(Object)new B() (A)new B() Stupid Cast

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Stupid Cast e 0 : D D <: C (C)e 0 : C e 0 : D C <: D C D (C)e 0 : C Upcast Downcast e 0 : D C <: D D <: C stupid warning (C)e 0 : C Stupidcast Stupid Cast

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Reduktion fields (C) = C f (new C(e)).f i e i new Pair(new A(), new B()).snd new B() Regeln

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Beweis der Typsicherheit Preservation: Wenn t : C und t t, dann t : C für C <: C Progress Reduction preserves Cast-Safety Progress of Cast-Save Programs weitere Theoreme : Typsicherheit

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Generic Java (FGJ) Featherweight Java um Generics erweitert FGJ auf FJ zurückgeführt somit ist FGJ auch typsicher FGJ

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Schlussfolgerungen Featherweight Java ist typsicher stupid casts in Java eingeführt Typsicherheit auf Generics erweitert und bewiesen Fehler im Java-Compiler in bezug auf Generics gefunden Weiterhin erweiterbar Schlussfolgerungen

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Quellennachweise Igarashi, A., Pierce, B.C. and Wadler Featherweight Java: A Minimal Core Calculus for Java and GJ,University of Tokyo, University of Pennsylvania, Avaya Labs Benjamin C. Pierce / Types and Programming/, MIT Press 2002.Drossopoulou, S., Eisenbach, S Java is Type Safe – Probably, London Quellennachweise