Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   bidirektionale Assoziationen - wie in c# ? (https://www.delphipraxis.net/187708-bidirektionale-assoziationen-wie-c.html)

luisk 25. Dez 2015 07:35

bidirektionale Assoziationen - wie in c# ?
 
Wie kann man bidirektionale Assoziationen elegant in Delphi 10 erstellen ?
Gibt es einen gemeinsamen Namespace, wie in c# ?

Sir Rufo 25. Dez 2015 09:08

AW: bidirektionale Assoziationen - wie in c# ?
 
Eine Unit ist ein kompletter Namespace. Es gibt aber noch einen Unterschied:
Delphi-Quellcode:
type
  TFoo = class
    Bar: TBar; // Problem, weil TBar noch nicht bekannt ist
  end;

  TBar = class
    Foo: TFoo; // kein Problem
  end;
Das wäre in C# so kein Problem, hier bekommen wir einen Fehler.

Die Lösung:
Delphi-Quellcode:
type
  // Forward Declarations
  TBar = class;
  TFoo = class; // wäre hier nicht notwendig

// type <- nicht erlaubt

  // Real Declarations
  TFoo = class
    Bar: TBar; // kein Problem mehr
  end;

// type <- nicht erlaubt

  TBar = class
    Foo: TFoo; // kein Problem
  end;

type // wieder erlaubt
  TFooBar = class
  end;

luisk 25. Dez 2015 09:57

AW: bidirektionale Assoziationen - wie in c# ?
 
Hallo,
das ist mir bekannt.
Ich strukturiere meine Projekte so, das jede Klasse eine eigene Datei
erhält (wie in c# und Java).
Helfe mir dann mit untyped Pointern.
Ich denke es wäre an der Zeit, wenn Delphi da mal nachzieht.
Die Namespaces von c# sind echt gut. ( so, wie der Wegfall der Methoden im Header)
----------------------------------------------------------------------------------
Ich hätte gerne ein System mit dem Besten aus c# und Delphi.:wink:

Sir Rufo 25. Dez 2015 10:21

AW: bidirektionale Assoziationen - wie in c# ?
 
Bis Delphi da nachzieht wird noch so einiges Wasser durch die Flüsse laufen (wenn das überhaupt irgendwann passiert).

Da kannst du jetzt drauf warten (ewig?) oder dich eben mit den Gegebenheiten des Systems abfinden/anfreunden.

Nicht das jetzt ein falscher Eindruck entsteht, auch ich mag C# mit all seinen Features. Aber wenn ich in Spanien bin, dann will ich weder ein Wiener Schnitzel noch eine Currywurst zu mir nehmen. Dafür kann ich nach Österreich fahren oder gleich in Deutschland bleiben. Ich zumindest weiß, worauf ich mich einlasse, wenn ich mich an Ort A oder B begebe und lasse mich auch darauf ein.

Wenn es mir dann nicht gefällt, dann komme ich einfach nicht wieder. Das ist allerdings kein Massstab sondern nur meine eigene Geschmacksverirrung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 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