Delphi Entwicklungssystem

Informatik Johann Penon

Parameter

Prozeduren und Funktionen spielen in der Objektorientierung beim Versenden von Botschaften zwischen Objekten eine große Rolle. Um diesen Botschaften Daten mitzugeben oder Daten aufgrund der Botschaft zurückzuerhalten werden Parameter (Platzhalter) benutzt.

Um die Art der Datenübergabe festzulegen, wird in der Regel zwischen Werteparametern (call by value) und Variablenparametern (call by reference) unterschieden:

Werteparameter (engl. call by value)
"sind Parameter von Unterprogrammen in Programmiersprachen, die die Übergabe, jedoch nicht die Rückgabe von Werten ermöglichen." (Vgl. Wikipedia)

Variablenparameter (engl. call by reference)
"sind Parameter von Unterprogrammen in Programmiersprachen, die die Übergabe und Rückgabe von Werten ermöglichen. Ihr Name kommt daher, dass der Compiler in den meisten Programmiersprachen die Adresse des Speicherbereichs einer Variablen oder eines Feldelements übergibt, die als Referenz aufgefasst werden kann." (Vgl. Wikipedia)

Als formaler Parameter wird dabei die Deklaration im Prozedur- bzw. Funktionskopf bezeichnet und als aktueller Parameter werden die im Prozeduraufruf stehenden Werte bezeichnet. (Vgl. Informatik-Duden S. 477 ff.)


Am bekannten Beispiel der Patientenverwaltung soll gezeigt werden, wie die obigen Dokumentationen in Delphi umgesetzt werden. Zum Austausch zwischen den Klassen VIEW/CONTROL und MODEL werden hier Parameter benötigt, um Daten vom View ins Modell und umgekehrt zu transportieren.

Die folgenden Beispiele sind aus dem Patientenprogramm aus der Klasse uFenster. Zunächst ein Beispiel für

Werteparameter (call by value)

procedure TFensterFrm.MaskeAktualisieren (pat : TPatient); AG00108_.gif (1629 Byte) formaler Parameter
(* ------------------------------------------------------------------- *)
begin
  NameEdt.Text    := Pat.GetName;
  VorNameEdt.Text := Pat.GetVorName ;
  GebTagEdt.Text  := Pat.GetGeburtstag;
  StrasseEdt.Text := Pat.Adresse.GetStrasse;
  PlzEdt.Text     := Pat.Adresse.GetPlz ;
  OrtEdt.Text     := Pat.Adresse.GetOrt;
  TelEdt.Text     := Pat.Adresse.GetTelefonNr;
  SexEdt.Text     := Pat.GetGeschlecht;
  KKEdt.Text      := Pat.GetKrankenkasse;
  BlutEdt.Text    := Pat.GetBlutgruppe;
end;

Hier wurde ein Werteparameter gewählt, weil die Daten nur in der Maske angezeigt und nicht verändert werden sollen.

Aufruf der Methode:

MaskeAktualisieren(AktuellerPatient);AG00108_.gif (1629 Byte) aktueller Parameter


Beim Aufruf unterscheiden sich Werte und Variablenparameter nicht, deshalb hier nur noch ein Beispiel für den formalen Parameter bei

Variablenparameter (call by reference)

procedure TPvFenster.DatenAktualisieren (var pat : TPatient);AG00108_.gif (1629 Byte) formaler Parameter

(* ------------------------------------------------------------------- *)
begin
  Pat.SetName (NameEdt.Text);
  Pat.SetVorName (VorNameEdt.Text);
  Pat.SetGeburtstag (GebTagEdt.Text);

  Pat.Adresse.SetStrasse(StrasseEdt.Text);
  Pat.Adresse.SetPlz (PlzEdt.Text);
  Pat.Adresse.SetOrt (OrtEdt.Text);
  Pat.Adresse.SetTelefonNr (TelEdt.Text);

  Pat.SetGeschlecht (SexEdt.Text[1]);
  Pat.SetKrankenkasse (KKEdt.Text);
  Pat.SetBlutgruppe (BlutEdt.Text);
end;      
			 

Beim Transport der Daten vom View zum Modell sollen die Daten im Modell verändert werden, deshalb wurde ein Variablenparameter gewählt.

Aufruf der Methode wie beim Werteparameter:

DatenAktualisieren(AktuellerPatient);AG00108_.gif (1629 Byte) aktueller Parameter

Vergleich Werte- und Variablenparameter

zum Seitenanfang springen

zum Seitenanfang springen