Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
27. Okt 2017
Der deutsche Wikipedia Eintrag ist da möglicherweise nicht so klar wie die englische Beschreibung:
Bei einer Position ist in aller Regel: (4,5,6) = (4,5,6) auch wenn das zwei unterschiedliche Instanzen/Entitäten sind. Wenn nun aber 2 Objekte in einem Koordinatensystem an derselben Position sind und eins davon sich ändert, weise ich ihm eine neue Position zu (auch, wenn sich nur X, Y oder...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
27. Okt 2017
Gerade nicht, Value Objekte sind per Definition unveränderlich, d.h. es gibt keine Setter um einzelne Eigenschaften zu ändern.
Was im Zusammenhang mit Records auch gut ist, da es so nicht so Code wie diesem kommen kann:
test.Position.X := test.Position.X + 10;
Und man sich dann wundert, warum es nicht mehr funktioniert nachdem man für die Position Eigenschaft einen Getter geschrieben hat...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Stevie,
27. Okt 2017
Dein TPosition ist ein sogenanntes Value Object.
Berücksichtigt man deren Eigenschaft der Unveränderbarkeit (ich kann nicht einfach nur X, Y oder Z ändern) merkt man bei der Speicherverwaltung von Delphi, dass man sich dann oft um das Freigeben, des vorherigen Objekts kümmern muss, wenn man eine neue TPosition erzeugt und zuweist. Daher bietet sich hierfür eher die Verwendung von Records an....