Also,
Ausgangssituation ist eine von mir lizenzierte Komponentensammlung.
Alle Klassen stehen in einer
Unit.
Mehrere Klassen greifen nun auf eine bestimmte Funktion zu. Diese gehört aber nicht zu einer Klasse, sondern steht 'global' in der
Unit.
Von einer dieser Klassen möchte ich nun eine Ableitung erstellen.
Der Grund für die Ableitung ist das Hinzufügen einer zusätzlichen Eigenschaft zu der neuen Klasse.
Diese Eigenschaft soll dann in der oben genannten ('globalen') Funktion benutzt werden.
Durch eine Ableitung der Klasse kann ich der neuen nun eine neue Eigenschaft verpassen.
Aber wie mache ich es denn mit der 'globalen' Funktion? Die muss ich ja auch ändern - ableiten geht aber nicht, da sie ja nicht zu der Klasse gehört. Genügt es da, diese Funktion 'global' in der
Unit der abgeleiteten Klasse zu deklarieren?
Delphi-Quellcode:
unit Unit2;
interface
type
//Klasse nutzt GlobaleFunktion
TKlasse_Alt_1 =
class
end;
//Klasse nutzt GlobaleFunktion
TKlasse_Alt_2 =
class
end;
//Klasse nutzt GlobaleFunktion
TKlasse_Alt_3 =
class
end;
//Wird von Klasse 1 abgeleitet
TKlasse_Neu =
class(TKlasse_Alt_1)
private
fNewProperty:
string;
procedure SetNewProperty(
const Value:
string);
protected
property NewProperty:
string read FNewProperty
write SetNewProperty;
end;
//Besagte Funktion, die von allen Klassen benutzt wird
//Da sie auch die neue Eigenschaft aus Klasse_Neu benutzten soll, muss ich sie verändern; aber nicht in der Originalunit
function GlobaleFunktion:
string;
implementation
function GlobaleFunktion:
string;
begin
end;
{ TKlasse_Neu }
procedure TKlasse_Neu.SetNewProperty(
const Value:
string);
begin
FNewProperty := Value;
end;
end.
Wichtig:
Die Ableitung muss in einer anderen Unit stehen!