Back to results

Technische Universität Berlin

Modularisierung und Wiederverwendung durch generische Klassen in Object Teams

Abstract

dc:description.abstract

Modularisierung und Wiederverwendung sind von wesentlicher Bedeutung für die Produktivität in der Softwareentwicklung. Die rollenorientierte Programmierung ergänzt die Konzepte der objektorientierten Programmierung mit dem Ziel, die Modularisierung zu fördern. Die Programmiersprache Object Teams, eine rollenorientierte Erweiterung der Sprache Java, bietet eine gezielte Unterstützung der Modularisierung von Kollaborationen zwischen Objekten. Eine Klasse bzw. ein Objekt kann unterschiedliche Rollen in separaten Kontexten annehmen. Die Abbildung von Rollen und Kontext wird in Object Teams durch spezielle Klassen unterstützt. Eine Rollenklasse definiert dabei eine der Vererbung ähnelnde Beziehung zu einer sogenannten Basisklasse, welche die Rolle spielt. Der Rollenmechanismus erlaubt einerseits eine feinere und flexiblere Modularisierung kontextspezifischer Daten und Funktionen, führt aber andererseits auch zu einer starken Kopplung der beteiligten Klassen und wirkt sich damit negativ auf die Wiederverwendbarkeit aus. Ursache dafür ist die fehlende Möglichkeit zur Abstraktion der Bindung zwischen Rolle und Basis. Das Ziel dieser Arbeit ist es, die starke Kopplung zwischen den beteiligten Klassen zu reduzieren und damit deren Flexibilität und deren Wiederverwendbarkeit zu fördern. Als Lösungsansatz werden Mechanismen zur Abstraktion von Klassen eingeführt, mit denen vor allem strukturelle Abhängigkeiten zwischen Rollen- und Basisklassen in generischer Form ausgedrückt werden können. Solche generischen Klassen repräsentieren Templates, die je nach Anwendung, in der sie zum Einsatz kommen, unterschiedlich ausgeprägt werden. Im Quellcode der Klasse können dazu an ausgewählten Punkten Metavariablen anstelle von statischen Definitionen verwendet werden. Die Metavariablen dienen dabei als Platzhalter für spezifische Programmelemente wie Klassen und Methoden und stellen eine Form der Metaprogrammierung dar. Zur konkreten Definition der Metavariablen wird eine deklarative Beschreibungssprache nach Art der logischen Programmierung in Prolog eingeführt. Diese erlaubt es, spezifische Programmelemente anhand ihrer strukturellen Eigenschaften auszuwählen – unabhängig von ihren Bezeichnern. Die Funktionalität einer Rolle kann so in generischer Form definiert werden. Die spezifischen Basisklassen und deren Methoden, die mit der Rolle für eine konkrete Anwendung verknüpft werden sollen, werden automatisch anhand der deklarativen Beschreibung identifiziert. Die konkrete Ausprägung einer generischen Klasse wird für jede Anwendung neu bestimmt, indem Metavariablen in Abhängigkeit vom jeweiligen Kontext durch spezifische Programmelemente ersetzt werden. Im Rahmen der Verarbeitung des Programms werden die generischen Anteile des Codes zu ausführbarem Code transformiert. In dieser Arbeit werden zunächst die Probleme von Object Teams hinsichtlich Modularisierung und Wiederverwendbarkeit analysiert. Darauf aufbauend wird dann die neu entwickelte Spracherweiterung Generic Object Teams mit Syntax und Semantik vorgestellt, die Object Teams um die beschriebenen Möglichkeiten zur Metaprogrammierung erweitert. Bestandteil dieser Erweiterung ist die Abbildung und Auswertung des Programms in Prolog. Der Effekt der neuen Sprachmittel auf die Modularisierung und die Wiederverwendbarkeit wird anhand einer Studie zu Entwurfsmuster-Anwendungen evaluiert. Die Arbeit zeigt, dass sich die Metaprogrammierung mit Prolog erfolgreich in Object Teams integrieren lässt. Der entwickelte Ansatz wirkt sich einerseits positiv auf die Modularisierung und die Wiederverwendbarkeit aus, führt andererseits aber auch zu einer gesteigerten Komplexität der Programme. Mit der Komplexität steigen gleichermaßen die Anforderungen an den Programmierer, was die Anwendbarkeit des Ansatzes einschränkt. Insgesamt sehen wir in dem Ansatz einen nützlichen Beitrag für die rollenorientierte Programmierung in Object Teams, der auch als Anregung und Grundlage für weitere Entwicklungen in diesem Bereich dienen kann.

Author and committee

dc:creator, dc:contributor.*
Author dc:creator
  • Mertgen, Andreas
Advisor dc:contributor.advisor
  • Jähnichen, Stefan

Rights

Language dc:language.iso
de, German

Identifiers

dc:identifier.*
Identifier URI
urn:nbn:de:kobv:83-opus4-45373
http://dx.doi.org/10.14279/depositonce-3887
OAI identifier oai:identifier
oai:depositonce.tu-berlin.de:11303/4184

Chain of custody

source
Harvested from
Technische Universität Berlin
Base URL
api-depositonce.tu-berlin.de/server/oai/request
Last updated
2026-07-27
Source record
OAI-PMH GetRecord
related terms
citation

Mertgen, Andreas. Modularisierung und Wiederverwendung durch generische Klassen in Object Teams. 2013. https://depositonce.tu-berlin.de/handle/11303/4184