Diamond-Problem

Diamond-Problem
Vererbungsbeziehungen beim Diamond-Problem

Das Diamond-Problem entsteht durch Mehrfachvererbung in der Objektorientierten Programmierung und Wissensmodellierung. Es kann auftreten, wenn eine Klasse D auf zwei verschiedenen Vererbungspfaden (B und C) von ein und derselben Basisklasse A abstammt. Zeichnet man die Vererbungsbeziehungen zwischen den Klassen als Diagramm, so ergibt sich die Form einer Raute (englisch rhombus oder diamond), nach der das Diamond-Problem benannt ist.

Inhaltsverzeichnis

Beispiel

Die Probleme der Mehrfachvererbung lassen sich am Beispiel eines Amphibienfahrzeugs verdeutlichen, das sowohl die Eigenschaften eines Land- als auch die eines Wasserfahrzeuges erbt. Das Diamond-Problem tritt hierbei auf, wenn beide von der Klasse Fahrzeug abstammen, die eine Methode des Fortbewegens besitzt. Die Frage ist nun, ob sich ein Amphibienfahrzeug wie ein Land- oder ein Wasserfahrzeug oder wie ein Land- und ein Wasserfahrzeug fortbewegt. Diese Mehrdeutigkeit kann nur im Einzelfall gelöst werden; so hat ein Amphibienfahrzeug beispielsweise zwei Fortbewegungsarten (-methoden), aber nur ein Gewicht, obwohl Fahrzeug nur eine Fortbewegungsart hat.

Vermeidung

Wegen der Probleme, die bei Mehrfachvererbung auftreten können, unterstützen einige objektorientierte Programmiersprachen keine Mehrfachvererbung. Teilweise werden Alternativkonzepte angeboten, wie zum Beispiel die Konstruktion von Zwillingsklassen. Die Programmiersprache Eiffel bietet Konstrukte (renaming) zur transparenten Auflösung der bei Mehrfachvererbung auftretenden Namenskonflikte. Smalltalk und Oberon verbieten Mehrfachvererbung. Java, C# oder auch Object Pascal bzw. Delphi lassen keine Mehrfachvererbung zu, bieten jedoch einen speziellen Typ der abstrakten Klasse an, das Interface, von dem mehrfach geerbt werden kann. Im Unterschied zur Vererbung von Klassen wird hier nur die Deklaration vererbt, nicht die Implementierung der Funktionen. C++ bietet das Konzept der virtuellen Basisklasse, wodurch eine Replikation der Member der Basisklasse in der abgeleiteten Klasse vermieden wird. PHP benutzt unter dem Begriff "horizontal reuse" (Horizontale Wiederverwendung) ab der Version 5.4 sogenannte Traits, welche lose Klassenfragmente sind und in andere Klassen eingebunden werden können[1][2].

Literatur

  • Eddy Truyen, Wouter Joosen, Bo Jørgensen, Petrus Verbaeten: A Generalization and Solution to the Common Ancestor Dilemma Problem in Delegation-Based Object Systems. In: Proceedings of the 2004 Dynamic Aspects Workshop. 2004, S. 103-119.

Einzelnachweise

  1. http://www.stefan-marr.de/2010/12/php-next-traits-presentation-for-afup-in-paris/
  2. https://wiki.php.net/rfc/horizontalreuse

Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

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

  • Diamond problem — A diamond class inheritance diagram. In object oriented programming languages with multiple inheritance and knowledge organization, the diamond problem is an ambiguity that arises when two classes B and C inherit from A, and class D inherits from …   Wikipedia

  • Diamond — steht für: Diamant oder Rhombus (Rautenform) in der englischen Sprache Diamond Aircraft, ein österreichischer Flugzeughersteller Diamond (Cyclecar), eine Marke des US amerikanischen Automobilherstellers Cycle Car Company Diamond Light Source,… …   Deutsch Wikipedia

  • Diamond (disambiguation) — Diamond is the hardest known natural material. Diamond, ♦ or ◊ may also refer to: Diamond (gemstone) Diamonds, a suit of cards Alt codes, ♦, the character or symbol formed by using the Alt key in conjunction with the Number Pad (Alt+num4) Lozenge …   Wikipedia

  • Diamond Multimedia — Headquarters Chatsworth, California Products Graphics cards, sound cards, Digital audio players Website …   Wikipedia

  • Diamond wire cutting — (DWC) is the process of using wire of various diameters and lengths, impregnated with diamond dust of various sizes to cut through materials. Because of the hardness of diamonds, this cutting technique can cut through almost any material that is… …   Wikipedia

  • Diamond v. Diehr — Supreme Court of the United States Argued October 14, 1980 Decided March 3, 1981 …   Wikipedia

  • Diamond Hoo Ha — Studio album by Supergrass Released 24 March 2008 …   Wikipedia

  • Diamond Shoal Light — Undated photograph of Diamond Shoal Light (USCG) Coordinates …   Wikipedia

  • Diamond Cut Productions — is an American company founded by Craig Maier and Rick Carlson in 1986 87 with the aim of preserving many of the original test pressing recordings made at the Edison Laboratories during the 1920s. Diamond Cut Productions is the author of the… …   Wikipedia

  • Diamond Geezer 2 — Format Comedy Drama Created by Caleb Ranson Starring David Jason Gary Whelan Paul Bown Stephen Wight George Cole Jenny Agutter Country of origi …   Wikipedia

Share the article and excerpts

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