AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Setter mehrfach überschreiben.

Ein Thema von Bjoerk · begonnen am 8. Jun 2015 · letzter Beitrag vom 12. Jun 2015
Antwort Antwort
Seite 6 von 6   « Erste     456   
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#51

AW: Setter mehrfach überschreiben.

  Alt 12. Jun 2015, 16:06
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;
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#52

AW: Setter mehrfach überschreiben.

  Alt 12. Jun 2015, 16:21
Hab kein Delphi, aber dafür brauchst Du dann doch wieder eine Basisklasse:
Delphi-Quellcode:
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;
getippt und nicht getestet.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#53

AW: Setter mehrfach überschreiben.

  Alt 12. Jun 2015, 16:38
Liest du die Posts eigentlich?

TObject0 ist die Basisklasse. Und ja, ich hab auch eine. Siehe Posts 1- 10, die Kommentare in #9. Die TWerkzeug gibst nur nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#54

AW: Setter mehrfach überschreiben.

  Alt 12. Jun 2015, 17:42
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
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#55

AW: Setter mehrfach überschreiben.

  Alt 12. Jun 2015, 21:16
Liest du die Posts eigentlich?
Ich versuche es. Einmal hast du keine Basisklasse,
Die Basisklasse gibt es nicht mehr
Dann wieder doch.
TObject0 ist die Basisklasse.
Da muss man doch durcheinanderkommen.
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 6   « Erste     456   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 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