Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Initialisierung von Records

  Alt 26. Jun 2009, 16:25
Oh, jetzt wirds theoretisch: Ein Record repräsentiert einen abstrakten Datentyp. Die Menge der einzelnen Recordfelder repräsentiert seinen Gesamtzustand. Beispiel: Der abstrakte Datentyp sei 'TPerson', seine Recordfelder 'Name', 'Geburtsdatum', 'Geschlecht'.

Um dieseen Datentyp zu initialisieren, muss ich seinen Feldern Initialwerte zuweisen. Das muss ich wohldefiniert und immer gleich machen, denn es gilt (z.B.)
Code:
TKunde.IstImInitialzustand <==> Name=leer, Geburtsdatum=leer, Geschlecht=Unspezifiziert.
Das hat zunächst gar nichts mit 'Nullen' zu tun. Ich kann es so drehen, das ich mit einem FillChar(...,0) einen definierten Initialzustand herstelle, aber das schränkt mich unnötig ein.

Ich kann auch jedesmal ein explizite Zuweisung der einzelnen Felder auskodieren, aber das garantiert mir nicht, das zwei 'Instanzen' eines Kunden wirklich identisch initialisiert wurden.

Ich sollte also eine Initial/Clear-Methode für den Record implementieren, der mir meinen expliziten, eindeutigen und wohldefinierten Grundzustand herstellt. Ich würde diese Methode in Anlehnung an den Initialzustand eben 'Initialize' nennen, aber ich denke, 'Clear' geht auch, weil wir ja die Instanz auf einen Grundzustand setzen (Wir 'nullen' ihn im logischen Sinn).

Deinem Einwand, das das "Initialize" zu allgemein gültig wäre, muss ich partiell widersprechen. Und zwar partiell, weil wir -denke ich- unterschiedliche Ansätze verfolgen: Für mich gibt es im Kontext eines abstrakten Datentyps nur einen definierten Grundzustand, schließlich bilde ich u.U. noch eine (totale) Ordnung, Reflexion usw. über Operatoren ab. Und hier ist es unbedingt notwendig, eine eindeutige Definition der 'Null' zu haben.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat