AW: Setter mehrfach überschreiben.
Probiers halt aus. Variante wäre direkt mit TGraphicObjectClass zu arbeiten, das geht. Dann kann aber nicht mehr Is Typ1,2,3 abfragen.
So getestet:
Delphi-Quellcode:
TObject0 = class
private FA: integer; FB: integer; FC: integer; public property A: integer read FA write FA; property B: integer read FB write FB; property C: integer read FC write FC; procedure Assign(Value: TObject0); virtual; end; TObject1 = class(TObject0) private FSL: TStringList; public property SL: TStringList read FSL; procedure Assign(Value: TObject0); override; constructor Create; destructor Destroy; override; end; { TObject0 } procedure TObject0.Assign(Value: TObject0); begin FA := Value.A; FB := Value.B; FC := Value.C; end; { TObject1 } procedure TObject1.Assign(Value: TObject0); var O: TObject1; begin inherited; O := TObject1(Value); FSL.Assign(O.SL); end; constructor TObject1.Create; begin inherited; FSL := TStringList.Create; end; destructor TObject1.Destroy; begin FSL.Free; inherited; end; procedure TTestForm.Button1Click(Sender: TObject); type TObjectClass = class of TObject0; var A: TObject1; B: TObject0; begin A := TObject1.Create; try B := TObjectClass(A.ClassType).Create; try B.Assign(A); finally B.Free; end; finally A.Free; end; end; |
AW: Setter mehrfach überschreiben.
Hab kein Delphi, aber dafür brauchst Du dann doch wieder eine Basisklasse:
Delphi-Quellcode:
getippt und nicht getestet.
TBasisKlasse = Class
public constructor Create; Virtual; End; TA = Class (TBasisKlasse) end; TBasis = class of TBasisKlasse; Constructor TBasisKlasse.Create; begin end; Var a,b : TBasisKlasse; begin a := TA.Create; b := TBasis(a.ClassType).Create; end; |
AW: Setter mehrfach überschreiben.
Liest du die Posts eigentlich? :gruebel:
TObject0 ist die Basisklasse. Und ja, ich hab auch eine. Siehe Posts 1- 10, die Kommentare in #9. Die TWerkzeug gibst nur nicht mehr. |
AW: Setter mehrfach überschreiben.
Das Problem ist, dass sich Deine Beispiele immer auf Deine aktuelle Projektstruktur beziehen und losgelöst nicht so ganz klar sind.
Mein Vorschlag: Baue Dir mal ein völlig eigenständiges Testprojekt mit Fahrzeugen (Auto, Fahrrad, Boot), Tieren (Ente, Fisch) und Früchten (Apfel, Banane). So siehst Du eindeutig, welche Klassen Gemeinsamkeiten haben und welche nicht. Die Klassen brauchen ja nichts wirklich zu machen. Wenn alles kompilierbar ist, reicht das ja schon aus. Ich hatte das mal bei einer Interface-Demo so gemacht: http://www.delphipraxis.net/183702-i...-factorys.html |
AW: Setter mehrfach überschreiben.
Zitat:
Zitat:
Zitat:
Verpasse TObject0 einen virtuellen Konstruktor und dann kann man auch Objekte anhand des 'ClassType' erzeugen. Damit kannst Du klonen und alles ist gut. Die Operationen auf deine Figuren bildest du über einzelne Arbeiter ab, die Du dann über die Figurklasse per Faktory erzeugst. Wenn Du das auf die Spitze treiben willst, baue Dir eine Factory-Factory und dann ist das richtig geil (also OCP-technisch) Tipparbeit: Ja. Übersichtlich: Ja. Oop: Ja. SRP+OCP konform: Ja. Aber natürlich führen auch andere Wege zum Ziel. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr. |
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