Einzelnen Beitrag anzeigen

hanvas

Registriert seit: 28. Okt 2010
166 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Methoden in abgeleiteten Klassen ggf. einschränken

  Alt 11. Jul 2024, 19:34
Ich bin gerade dabei, eine meiner Klassensammlungen etwas zu überarbeiten - es geht dabei um das Auslesen und Bearbeiten von Metadaten (aka "ID3-Tags") in Audio-Dateien....

Soweit so gut. Ich würde die Funktionalität der Basisklasse gerne erweitern, und da stoße ich auf ein kleines Konzept-Problem.

Meine Idee wäre, in der konkreten Implementierung von "TSomeTagItem.SetText" zu überprüfen, ob das TagItem mit dem aktuell gesetzten Key überhaupt Textdaten enthält (das wird über den jeweiligen Standard bzw. die Dokumentation geregelt). Falls ja: ok, fein. Und falls nein? Einfach "nichts" machen? Aus der Set-Procedure eine Function machen und "False" zurückliefern? Eine Exception schmeißen?

Gibt es da eine andere Möglichkeit, die ggf. "sauberer" oder eleganter ist?
Wäre nicht der umgekehrte Weg, vom abstrakten zum konkreten, der bessere Weg. Also eine mehr oder weniger allgemeingültige Klasse

Delphi-Quellcode:

TGenericTagItem = class ...

 procedure setData(var data);
 procedure setData(const data : pointer);
 procedure setData(const data : array of byte);
 procedure setData(const data : TByteArray);

end
und dann davon Ableitungen die Methoden für die konkreten Daten haben:

Delphi-Quellcode:

TTextTagItem = class(TGenericTagItem)
 procedure setText(const text : String);
end;

TImageTagItem = class(TGenericTagItem)
 procedure setImage(aImage : TImage);
end;
die ja dann intern wieder die generischeren Varianten aufrufen können.

cu Ha-Joe
  Mit Zitat antworten Zitat