FAQ
© 2015 Staats- und Universitätsbibliothek
Hamburg, Carl von Ossietzky

Öffnungszeiten heute09.00 bis 24.00 Uhr alle Öffnungszeiten

Eingang zum Volltext in OPUS

Hinweis zum Urheberrecht

Dissertation zugänglich unter
URN: urn:nbn:de:gbv:18-73879
URL: http://ediss.sub.uni-hamburg.de/volltexte/2015/7387/


Werttypen in objektorientierten Programmiersprachen

Value Types in Object-Oriented Programming Languages

Ritterbach, Beate

pdf-Format:
 Dokument 1.pdf (2.171 KB) 


SWD-Schlagwörter: Programmiersprache , Wert , Objekt , Objektorientierung , Funktional , Zustand , Gleichheit , Identität
Freie Schlagwörter (Deutsch): Werttyp , Objekttyp , Zustandslosigkeit , objekt-funktionale Programmierung
Freie Schlagwörter (Englisch): value type , object type , statelessness , object-functional programming
Basisklassifikation: 54.52 , 54.50
Institut: Informatik
DDC-Sachgruppe: Informatik
Dokumentart: Dissertation
Hauptberichter: Züllighoven, Heinz (Prof. Dr.-Ing.)
Sprache: Deutsch
Tag der mündlichen Prüfung: 11.06.2015
Erstellungsjahr: 2014
Publikationsdatum: 02.07.2015
Kurzfassung auf Deutsch: 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.
Kurzfassung auf Englisch: 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.

Zugriffsstatistik

keine Statistikdaten vorhanden
Legende