Law of Demeter

Law of Demeter

Das Gesetz von Demeter (englisch: Law of Demeter, kurz: LoD) ist eine Entwurfs-Richtlinie in der objektorientierten Softwareentwicklung. Sie besagt im Wesentlichen, dass Objekte nur mit Objekten in ihrer unmittelbaren Umgebung kommunizieren sollen. Dadurch soll die Kopplung (das heißt die Anzahl von Abhängigkeiten) in einem Softwaresystem verringert und dadurch die Wartbarkeit erhöht werden.

Inhaltsverzeichnis

Beschreibung

Die Richtlinie kann umgangssprachlich zu der Aussage „Sprich nur zu deinen nächsten Freunden“ zusammengefasst werden. Man spricht in diesem Zusammenhang auch von schüchternem Code. Schüchterner Code schickt so wenige Nachrichten wie möglich an andere Codeteile. Formal ausgedrückt soll eine Methode m einer Klasse K ausschließlich auf folgende Programm-Elemente zugreifen:

  • Methoden von K selbst
  • Methoden der Parameter von m
  • Methoden der mit K assoziierten Objekte
  • Methoden von Objekten, die m erzeugt

Beispiel

Das folgende Beispiel (in der Programmiersprache Python) verstößt gegen das Demeter-Gesetz, da die Klasse Fahrer indirekt über die Klasse Auto auf eine Methode der Klasse Motor zurückgreift:

class Motor(object):
 
    def starten(self):
        """Den Motor starten."""
        ...
 
    ...
 
 
class Auto(object):
 
    def __init__(self):
        """Konstruktor der Klasse Auto."""
        self.motor = Motor()
        ...
 
    ...
 
 
class Fahrer(object):
 
    def fahren(self):
        auto = Auto()
        auto.motor.starten()
        ...

Eine Lösung wäre hier, eine Wrapper-Methode in der Klasse Auto einzuführen, welche den Aufruf an die Klasse Motor delegiert:

...
 
class Auto(object):
 
    def __init__(self):
        """Konstruktor der Klasse Auto."""
        self.motor = Motor()
        ...
 
    def anlassen(self):
        """Das Auto starten."""
        self.motor.starten()
 
    ...
 
 
class Fahrer(object):
 
    def fahren(self):
        auto = Auto()
        auto.anlassen()
        ...

Diese Lösung hat den Vorteil, dass nun die anlassen-Methode beliebig ergänzt werden kann, ohne dass der Aufrufer Details über das Anlassen eines Autos kennen muss.

Vor- und Nachteile

Bei Anwendung des Gesetzes von Demeter ergibt sich in der Regel eine bessere Wartbarkeit und Anpassbarkeit der Software, durch die geringere Abhängigkeit (Kopplung) der Objekte von der internen Struktur anderer Objekte.

Als Nachteil kann vermerkt werden, dass die Anwendung häufig Vermittler-Methoden (Wrapper) erfordert, was den initialen Entwicklungsaufwand ebenso wie die Performance der Anwendung negativ beeinflussen kann. Um diese Probleme im Griff zu behalten, können Werkzeuge zur Automatisierung des Vorgehens verwendet werden.

Geschichte

Die Richtlinie wurde 1987 an der Northeastern University in Boston vorgeschlagen. Der Name geht auf das Demeter-Projekt zurück, in dem das so genannte Gesetz angewandt wurde. Das Gesetz wurde von Karl J. Lieberherr und Ian Holland 1989 im Paper Assuring Good Style for Object-Oriented Programs detailliert erläutert.[1]

In einer Studie von Basili et al. wurden 1996 experimentelle Ergebnisse vorgestellt, die nahelegen, dass die Anwendung des LoD ein wirksamer Weg zur Vermeidung von Softwarefehlern ist.[2] Durch die formale Spezifikation ist die Verwendung als Softwaremetrik möglich. Es bietet sich somit ein Einsatz des LoD zur Früherkennung von Wartungsproblemen an.

Einzelnachweise

  1. Karl J. Lieberherr, I. Holland: Assuring good style for object-oriented programs. In: IEEE Software. September 1989. S. 38–48 [1]
  2. V. Basili, L. Briand, W. L. Melo: A Validation of Object-Oriented Design Metrics as Quality Indicators. In: IEEE Transactions on Software Engineering. Band 22, Nummer 10. Oktober 1996. S. 751–761

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Law of Demeter — The Law of Demeter (LoD) or Principle of Least Knowledge is a design guideline for developing software, particularly object oriented programs. In its general form, the LoD is a specific case of loose coupling. The guideline was invented at… …   Wikipedia

  • Demeter (disambiguation) — Demeter is usually the Greek grain goddess. It may also refer to: Astronomy: Demeter, name formerly used for Lysithea (moon), satellite of Jupiter, from 1955 to 1975 1108 Demeter, asteroid Literature: Demeter (c. 300 BC), an elegy by… …   Wikipedia

  • Demeter's Manual of Parliamentary Law and Procedure — Demeter s Manual Demeter s Manual of Parliamentary Law and Procedure, by George Demeter, is a parliamentary authority manual. It is included in the bank of study materials used in preparing for the Certified Parliamentarian (CP) designation… …   Wikipedia

  • Demeter — For other meanings, see Demeter (disambiguation). Demeter Goddess of the Earth, Agriculture, Harvest, and Forests Abode Mount Olympus …   Wikipedia

  • Law of abode — The Law of Abode is a law in Greek mythology that is older than Zeus and all are powerless to revoke. The Law of Abode states that if any food or drink should pass through your lips while in the realm of Hades, then you may not go back above to… …   Wikipedia

  • Gesetz von Demeter — Das Gesetz von Demeter (englisch: Law of Demeter, kurz: LoD) ist eine Entwurfs Richtlinie in der objektorientierten Softwareentwicklung. Sie besagt im Wesentlichen, dass Objekte nur mit Objekten in ihrer unmittelbaren Umgebung kommunizieren… …   Deutsch Wikipedia

  • Loi De Déméter — La loi de Déméter (son sigle anglais: LoD), ou Principe de connaissance minimale est une règle de conception pour développer un logiciel, particulièrement du logiciel orienté objet. Cette règle a été inventée à la Northeastern University à Boston …   Wikipédia en Français

  • Loi de Demeter — Loi de Déméter La loi de Déméter (son sigle anglais: LoD), ou Principe de connaissance minimale est une règle de conception pour développer un logiciel, particulièrement du logiciel orienté objet. Cette règle a été inventée à la Northeastern… …   Wikipédia en Français

  • Loi de déméter — La loi de Déméter (son sigle anglais: LoD), ou Principe de connaissance minimale est une règle de conception pour développer un logiciel, particulièrement du logiciel orienté objet. Cette règle a été inventée à la Northeastern University à Boston …   Wikipédia en Français

  • Loi de Déméter — La loi de Déméter (son sigle anglais: LoD), ou Principe de connaissance minimale est une règle de conception pour développer un logiciel, particulièrement du logiciel orienté objet. Cette règle a été inventée à la Northeastern University à Boston …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”