Hallo,<br>
Wie kann ich folgendes Problem am besten lösen? (Meiner Meinung nach wäre ja eine Mehrfachvererbung am besten, die geht aber mit Delphi so nicht.)
Problembeschreibung (vereinfacht):
Es handelt sich um eine kaufmännische Software, mit der z.B.: Angebote erstellt
werden sollen.
Dazu benötige ich eine Artikeltabelle, eine Texttabelle, eine Vorgangstabelle
und eine Vorgangszeilentabelle. Ein Angebot besteht aus einem Datensatz in der Vorgangstabelle (AngebotsNr, Datum, Kunde usw.) und mehreren Vorgangszeilen. Die Vorgangszeilentabelle enthält z.B.: das Feld Menge, Position und eine Ref. auf Artikel bzw. Texte. (Texte können sein Zwischensumme, Titel, oder ein beliebiges Memo). In der Artikeltabelle können sowohl Stammdatenartikel, als auch Vorgangszeilenartikel stehen.
<br>
Daraus entstand folgendes Objektmodell:
<br>
TVorgangszeile = class(TObject)
TArtikel = class(TVorgangszeile)
TText = Class(TVorgangszeile)
TVorgangszeilen = class(TObjectList)
Items sind vom Typ TVorgangszeile
<br>
Wenn nun ein Artikel (aus den Vorgangszeilen) bearbeitet werden soll, ist alles i.O. Ich kann auf die Eigenschaften der Vorgangszeile und des Artikels zugreifen. Soll nun ein Artikel aus den Stammdaten bearbeitet werden, so hab ich immer auch noch die Eigenschaften der Vorgangszeile (overhead,
Sonderbehandlungen usw.).
<br>
Besser wäre (so denke ich):
<br>
TVorgangszeile = class(TObject)
TArtikel = class(TObject)
TArtikelVorgangszeile = class(TVorgangszeile, TArtikel) //Mehrfachvererbung geht nicht
<br>
So könnte ich in den Stammdaten TArtikel verwenden und in den Vorgangszeilen TArtikelVorgangszeilen. Was ist dann aber mit TText und TVorgangszeilen?
Oder sollte ich in TVorgangszeilen ein Array von TArtikel/TText (oder ein
gemeinsamer Vorfahr) und ein Array von TVorgangszeile halten?</p>
Wie kann ich folgendes Problem am besten lösen? (Meiner Meinung nach wäre ja eine Mehrfachvererbung am besten, die geht aber mit Delphi so nicht.)
Problembeschreibung (vereinfacht):
Es handelt sich um eine kaufmännische Software, mit der z.B.: Angebote erstellt
werden sollen.
Dazu benötige ich eine Artikeltabelle, eine Texttabelle, eine Vorgangstabelle
und eine Vorgangszeilentabelle. Ein Angebot besteht aus einem Datensatz in der Vorgangstabelle (AngebotsNr, Datum, Kunde usw.) und mehreren Vorgangszeilen. Die Vorgangszeilentabelle enthält z.B.: das Feld Menge, Position und eine Ref. auf Artikel bzw. Texte. (Texte können sein Zwischensumme, Titel, oder ein beliebiges Memo). In der Artikeltabelle können sowohl Stammdatenartikel, als auch Vorgangszeilenartikel stehen.
<br>
Daraus entstand folgendes Objektmodell:
<br>
TVorgangszeile = class(TObject)
TArtikel = class(TVorgangszeile)
TText = Class(TVorgangszeile)
TVorgangszeilen = class(TObjectList)
Items sind vom Typ TVorgangszeile
<br>
Wenn nun ein Artikel (aus den Vorgangszeilen) bearbeitet werden soll, ist alles i.O. Ich kann auf die Eigenschaften der Vorgangszeile und des Artikels zugreifen. Soll nun ein Artikel aus den Stammdaten bearbeitet werden, so hab ich immer auch noch die Eigenschaften der Vorgangszeile (overhead,
Sonderbehandlungen usw.).
<br>
Besser wäre (so denke ich):
<br>
TVorgangszeile = class(TObject)
TArtikel = class(TObject)
TArtikelVorgangszeile = class(TVorgangszeile, TArtikel) //Mehrfachvererbung geht nicht
<br>
So könnte ich in den Stammdaten TArtikel verwenden und in den Vorgangszeilen TArtikelVorgangszeilen. Was ist dann aber mit TText und TVorgangszeilen?
Oder sollte ich in TVorgangszeilen ein Array von TArtikel/TText (oder ein
gemeinsamer Vorfahr) und ein Array von TVorgangszeile halten?</p>
Comment