Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ist Vererbung streng linear? (https://www.delphipraxis.net/109679-ist-vererbung-streng-linear.html)

taaktaak 5. Mär 2008 20:18


Ist Vererbung streng linear?
 
Sorry, wenn der Titel fachlich unkorrekt formuliert ist, aber da mir das Thema fremd ist, ist mir nichts besseres eingefallen.

Also, bevor ich mich möglicherweise in eine falsche Richtng bewege, möchte ich eine konzeptionelle Frage geklärt wissen. Ich versuche die Fragestellung am besten mit einem Beispiel zu erläutern:

Ich habe eine Basisklasse mit der Funktionsmenge A und füge durch Ableitung und Erweiterung eine Funktionsmenge B hinzu; meine neue Klasse besitzt dann die Funktionsmenge AB. Für eine andere Aufgabe verwende ich wiederum die Basisklasse A und füge eine Funktionsmenge C hinzu, meine neue Klasse beinhaltet damit die Funktionsmenge AC. Im Laufe der Zeit entstehen auf diese Art und Weise mehrere neue Klassen jeweils mit dem Vorfahren A und den neuen Funktionsmengen AB, AC, AD, AE etc.

In einem neuen Anforderungsprofil seien zu einem späteren Zeitpunk die Funktionsmengen A, C und D notwendig - habe ich dann die Möglichkeit die Klassen AC und AD gemeinsam als Vorfahren einer neuen Klasse mit der Funktionsmenge ACD zu vereinen?

mkinzler 5. Mär 2008 20:20

Re: Ist Vererbung streng linear?
 
In Delphi nicht, da Delphi keine Mehrfachvererbung unterstützt.

taaktaak 5. Mär 2008 20:22

Re: Ist Vererbung streng linear?
 
Danke für die schnelle Antwort! Also ist meine Idee/Überlegung in anderen Sprachen umgesetzt worden. Welche Sprachen ermöglichen ein solches Vorgehen?

DeddyH 5. Mär 2008 20:25

Re: Ist Vererbung streng linear?
 
In C++ geht das z.B. AFAIK (ih kann mich aber auch irren, meine das aber gelesen zu haben).

mkinzler 5. Mär 2008 20:25

Re: Ist Vererbung streng linear?
 
c++. Da aber Mehrfachvererbung zu Problemen führt unterstützen neuere Sprachen wie Delphi, Java, c#, ... keine Mehrfachvererbung von Klassen mehr. es wird nur die Mehrfachvererbung von Interfacen unterstützt.

Neutral General 5. Mär 2008 20:26

Re: Ist Vererbung streng linear?
 
Wie mkinzler schon gesagt hat: Sowas funktioniert in Delphi nicht.

Was du allerdings machen kannst ist ein eine Klasse auf Basis mehrerer Interfaces.

Also z.B.

Delphi-Quellcode:
type
  IOne = interface(IUnknown)
    ['..']
    procedure One;
  end;

  ITwo = interface(IUnknown)
    ['..']
    procedure Two;
  end;

  TOneTwo = class(TInterfacedObject, IOne, ITwo)
  public
    procedure One;
    procedure Two;
  end;
Ist natürlich jetzt nicht so das was du wolltest aber naja. Sowas ähnliches halt :mrgreen:

Gruß
Neutral General

taaktaak 5. Mär 2008 20:33

Re: Ist Vererbung streng linear?
 
Ok, deswegen werde ich nicht auch noch C++ lernen wollen. Das würde meinen Hobby-Zeitrahmen dann endgültig sprengen. In der Konsequenz muss man also in Delphi immer "linear oben drauf packen".

Führt spontan zu folgender An- und Abschlußfrage: Wird Code aus eingebundenen Units nicht vom Programm genutzt, dann wird ja wohl der Code auch nicht in die EXE eingebunden! Ist das bei den verwendeten Klassen auch so? Also, um beim Beispiel zu bleiben ich habe eine "Superklasse" mit der Funktionsmenge ABCDE, verwende aber nur ACD - wird dann der Code von B und E auch "außen vor gelassen"?

Kannn ich mir eigentlich nicht so recht vorstellen...

taaktaak 5. Mär 2008 20:36

Re: Ist Vererbung streng linear?
 
Huhhh, Neutral General, sei nicht enttäuscht, aber das sagt mir erst einmal gar nix. Da ich jetzt aber doch schon recht müde bin, möchte ich da auch nicht weiter einsteigen. Ich schaue mir das morgen mal an - Danke an alle für die Antworten :hi:

HERMES 5. Mär 2008 20:38

Re: Ist Vererbung streng linear?
 
Oder eine Fasade(siehe Entwurfsmuster) einführen. Das ist eine Klasse, die in deinem Beispiel die Funktionsmenge ACD hat. Dazu muss jeder Funktionsaufruf an ein Objekt der entsprechenden Klasse weitergeleitet werden. Allerdings musst du aufpassen, dass dein Kontext immer aktuell ist, für den Fall dass die Berechnung einer Funktion von irgendwelchen Objektvariablen abhängt.

mkinzler 5. Mär 2008 20:41

Re: Ist Vererbung streng linear?
 
Das Problem an der Mehrfachvererbung ist es, dass sie u.U. zu Inkonsistenzen führen kann, wenn mehrere Basisklassen verschiedene Implementierungen einer Methode haben.
Bei Interfaces handelt es sich von attributlose vollständig abstrakte Klassen. So kann es zu zu keine Konflikte kommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz