HSG

Aktuelle Seite: HSG/Fächer/Informatik/Delphi

Definition

Hat man eine Prozedur wie z.B. berechneQuadGlei, die gut durchdacht und dokumentiert eine Klasse von Problemen löst, so möchte man sie natürlich in vielen Projekten wiederverwenden. Einfach den Quellcode zu kopieren, wäre eine ausgesprochen schlechte Lösung. Man stelle sich nur vor, es wird ein Fehler in der Prozedur entdeckt und man muss jetzt an allen Anwendungsstellen den Quellcode ändern. Hier stellt das Unit-Konzept eine gute Lösung dar. Eine Unit stellt in ihrem Interface-Teil Klassen, Prozeduren, Funktionen, Konstanten, Typen, ... zur Verfügung, die im Implementation-Teilimplementiert ('ausprogrammiert') sind. Der direkte Zugriff auf den Implementationteil ist dabei nur innerhalb der Unit möglich. Die Nutzung einer Unit geschieht dabei über das Schlüsselwort uses.

...
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, uMyStuff;
...

Delphi verfügt - wie man schon am Beispiel sieht - über eine große Zahl vordefinierter Units, die eine mannigfache Funktionalität zur Verfügung stellen.

uMyStuff als Beispiel-Unit

unit uMyStuff;

interface

type
  TFall = (null,eins,zwei,alle);

procedure berechneQuadGlei(a,b,c : real; var fall : TFall; var x1,x2 : real);

implementation

procedure berechneQuadGlei(a,b,c : real; var fall : TFall; var x1,x2 : real);
var
  d,wd : real;
begin
  if a = 0
  then
    if b = 0
    then
      if c = 0
      then
        fall := alle
      else
        fall := null
    else
      begin
        fall := eins; x1 := -c/b; x2 := x1;
      end
  else
  begin
    d := b*b-4*a*c;
    if d > 0
    then
    begin
      fall := zwei;
      wd := sqrt(d);
      x1 := (-b-wd)/2/a; x2 := (-b+wd)/2/a;
    end
    else
      if d = 0
      then
        begin
          fall := eins; x1 := -b/2/a; x2 := x1;
        end
      else
        fall := null;
  end;
end;

end.

Man nennt übrigens den Kopf einer Prozedur zusammen mit der Parameterliste die Signatur der Prozedur.

Links

Valid XHTML 1.0!