Volltextdatei(en) vorhanden
Titel: Werttypen in objektorientierten Programmiersprachen
Sonstige Titel: Value Types in Object-Oriented Programming Languages
Sprache: Deutsch
Autor*in: Ritterbach, Beate
Schlagwörter: Werttyp; Objekttyp; Zustandslosigkeit; objekt-funktionale Programmierung; value type; object type; statelessness; object-functional programming
GND-Schlagwörter: Programmiersprache; Wert; Objekt; Objektorientierung; Funktional; Zustand; Gleichheit; Identität
Erscheinungsdatum: 2014
Tag der mündlichen Prüfung: 2015-06-11
Zusammenfassung: 
Objektorientierung als Unterparadigma der imperativen Programmierung ist inhärent zustandsorientiert: Jedes Objekt verfügt über einen – gekapselten – Zustand. Das prädestiniert objektorientierte Programmiersprachen zur Abbildung von "Gegenständen der realen Welt" und ihren Änderungen im Laufe der Zeit. Dagegen sind sie schwach bei der Umsetzung von Werten und zustandsloser Verarbeitung.

Diese Arbeit präsentiert ein Sprachmodell, das Zustand und Zustandslosigkeit gleichermaßen unterstützt und am Typsystem verankert: Es unterscheidet zustandsbehaftete Objekttypen und zustandslose Werttypen.

Die Arbeit legt einen an MacLennan angelehnten Wertbegriff zugrunde, der Werte anhand ihres Verhaltens definiert. Sie zeigt, dass die kennzeichnenden Merkmale von Werten – kein Verändern, kein Erzeugen, Seiteneffektfreiheit und referentielle Transparenz – einander ergänzen und zusammen genommen Zustandslosigkeit charakterisieren. Diese implementierungsunabhängige Definition beschreibt Werte als abstraktes Konzept, grenzt sie gegenüber Objekten ab und bildet das Fundament der Arbeit.

Werttypen erfordern eine dedizierte Sprachunterstützung. Die Arbeit schlägt vor, Werttypen und Objekttypen auf programmiersprachlicher Ebene zu trennen und verschiedene Typkonstruktoren für sie vorzusehen. Sie nimmt das objektorientierte Paradigma als Ausgangsbasis und fokussiert auf die Gestaltung eines Typkonstruktors für Werttypen. Dieser kann – in einem prinzipiell zustandsbehafteten Umfeld – Werte klar abbilden, ihre Zustandslosigkeit sicherstellen und ihre Programmierung vereinfachen. Die Forschungssprache VJ, eine Erweiterung von Java, belegt die Machbarkeit des Ansatzes und veranschaulicht die Wirkungsweise eines Typkonstruktors für Werttypen innerhalb einer objektorientierten Sprache.

Ein wesentlicher Nutzen der Wert-/ Objekt-Trennung liegt in ihrer Auswirkung auf andere Sprachkonstrukte: sie führt zu Umgestaltungen, die potentielle Fehlerquellen heutiger objektorientierter Sprachen beseitigen. Beispielsweise ermöglicht sie die Verschmelzung von Wertgleichheit und Objektidentität zu einem einheitlichen Konzept und vermeidet damit viele Schwierigkeiten objektorientierter Sprachen im Umgang mit Gleichheit. Sie erlaubt es auch, Werttypen und Objekttypen mit unterschiedlichen Mechanismen für das Subtyping auszustatten und liefert damit neue Lösungsansätze für etliche bekannte Probleme der Objektorientierung, z. B. das Kreis-Ellipsen-Dilemma oder die Typisierung binärer Methoden.

Der Grundgedanke, Werttypen und Objekttypen voneinander zu trennen, liefert einen Impuls für den Programmiersprachenentwurf. Seine konsequente Umsetzung mündet in ein grundlegend neues Sprachmodell.

The object-oriented paradigm, being a sub-paradigm of imperative programming, implicitly assumes state: every object has an – encapsulated – state. This makes object-oriented programming well-suited for modeling "real-world objects" and their changes in the course of time. However, they are weak when it comes to modeling values and stateless processing.

This thesis presents a language model that equally supports both state and statelessness and links them to the type system: It distinguishes stateful object types and stateless value types.

The thesis is grounded on the work of MacLennan who defined values based on their behavior. It shows that the defining properties of values – no change, no creation, no side effects, referential transparency – complement each other and that jointly they characterize statelessness. The definition is implementation-independent. It discerns values and objects as different kinds of abstractions and it constitutes the foundation of the thesis.

Value types require dedicated language support. The thesis proposes distinguishing value types and object types on the language level by providing a separate type constructor for each. Presupposing the object-oriented paradigm and its related language elements, the thesis focuses on the design of a type constructor for value types. This type constructor models value types clearly; it facilitates easy programming and it guarantees their statelessness in a language setting that, in general, allows for mutable state. The research language VJ proves the feasibility of the approach. VJ adds a value type constructor to Java; it illustrates the look-and-feel of value types within an object-oriented programming language.

The distinction of values and objects brings about the redesign of other language elements, thereby eliminating pitfalls known from object-oriented languages and enhancing safety and expressiveness. For example, it enables merging value equality and object identity in a unified concept, thus preventing many difficulties with equality that object-oriented languages usually bring forth. It also allows for providing value types and object types each with a distinct subtyping mechanism and by that delivering new solutions to some well-known problems of object-oriented programming, such as the circle-ellipse dilemma or the typing of binary methods.

The separation of value types and object types gives an impetus to programming language design. Its consequent realization yields a fundamentally new language model.
URL: https://ediss.sub.uni-hamburg.de/handle/ediss/5886
URN: urn:nbn:de:gbv:18-73879
Dokumenttyp: Dissertation
Betreuer*in: Züllighoven, Heinz (Prof. Dr.-Ing.)
Enthalten in den Sammlungen:Elektronische Dissertationen und Habilitationen

Dateien zu dieser Ressource:
Datei Beschreibung GrößeFormat  
Dissertation.pdf2.17 MBAdobe PDFÖffnen/Anzeigen
Zur Langanzeige

Diese Publikation steht in elektronischer Form im Internet bereit und kann gelesen werden. Über den freien Zugang hinaus wurden durch die Urheberin / den Urheber keine weiteren Rechte eingeräumt. Nutzungshandlungen (wie zum Beispiel der Download, das Bearbeiten, das Weiterverbreiten) sind daher nur im Rahmen der gesetzlichen Erlaubnisse des Urheberrechtsgesetzes (UrhG) erlaubt. Dies gilt für die Publikation sowie für ihre einzelnen Bestandteile, soweit nichts Anderes ausgewiesen ist.

Info

Seitenansichten

65
Letzte Woche
Letzten Monat
geprüft am 14.04.2021

Download(s)

84
Letzte Woche
Letzten Monat
geprüft am 14.04.2021
Werkzeuge

Google ScholarTM

Prüfe