Delphi Material erste Schritte Variablen Typen Datenstruktur Zuweisung Komponenten StyleGuide Kontrollstrukturen Fehler Debuggen Funktionen Prozeduren Grafik Ereignisse Programme Unit OOP Benutzung einer Klasse Projektverwaltung Muster Format String-Operationen Datei Dialoge Menü Datenbank WinAPI Zufallszahlen RE Exceptions alte Delphiseite
Pfad: Startseite / Fächer / Informatik / Delphi / Benutzung einer Klasse
Autor: mk
05.12.2006 19:06
6318
Benutzung einer Klasse

An einem Beispiel sollen die typischen Schritte beim Benutzen einer in einer externen Unit vorliegenden Klassenvereinbarung gezeigt werden:

  1. Die Unit wird dem Projekt hinzugefügt. Dadurch wird sichergestellt, dass die interne Projektverwaltung in der Projektdatei die richtigen Pfade setzt.
  2. Die Unit wird in der uses-Anweisung hinzugefügt.
  3. Eine Objekt-Variable wird vereinbart. In der Regel wird das Objekt nur intern genutzt, sodass die Sichtbarkeit 'private' ist. Bitte beachten, dass diese Variable nur ein Zeiger ist, der zunächst auf 'nil' zeigt.
  4. Das Objekt wird erzeugt. Ein häufiger Fehler ist der Aufruf des Konstruktors ohne Zuweisung an die Objekt-Variable. Häufig wird diese Erzeugung mit dem Ereignis OnFormCreate verknüpft.
  5. Das Objekt wird ein oder mehrere Mal benutzt, indem man dem Objekt Aufträge schickt oder an das Objekt Anfragen stellt
  6. Das Objekt wird freigegeben. OnFormDestroy ist oft ein passendes Ereignis.

Beispiel

Es soll ein Objekt der Klasse TNetzHW benutzt werden, um über die serielle Schnittstelle eine Leuchtdiode zum Leuchten zu bringen. Die Klassenvereinbarung befindet sich in der Unit mTNetzHW.pas (mTNetzHW.zip).

unit uNetzHWTest;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,
  mTNetzHW;                         // 2. Einbinden der Unit

type
  TForm1 = class(TForm)
    ....
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure bTasterMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    ....
  private
    NetzHW : TNetzHW;               // 3. Variablenvereinbarung
    ....
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  NetzHW := TNetzHW.Create;         // 4. Erzeugung des Objekts
  netzHW.Start(1);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  NetzHW.Free;                      // 6. Freigeben des Objekts
end;

....

procedure TForm1.bTasterMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  NetzHw.SetAus(true);              // 5. Benutzung des Objekts
end;

....

end.

Aufgabe 1

GUI zu TermEdit_Test Benutze die Unit mathedit.pas (TTermEdit in mathedit.zip), um die Funktionsvorschrift einer Funktion f während der Laufzeit einzugeben und um die Funktion zu benutzen. Erstelle dazu ein kleines Testprogramm, das etwa nebenstehende Benutzungsoberfläche haben könnte.

Aufgabe 2

Benutze die Klasse 'TMGraf' (MGraf.zip), um einen einfachen Plotter zu schreiben.

GUI zu Plotter

....
procedure TForm1.FormCreate(Sender: TObject);
begin
  mTest := TMGraf.Create(nil);
  with mTest do
  begin
    Parent := Form1;
    Width := 640;
    Height := 480;
    Left := 20;
    Top := 50;
    xmin := -2;
    xmax := 3;
    ymin := -2;
    ymax := 1.5;
    zeichne_Rahmen;
    zeichne_Achsen;
  end;
end;

procedure TForm1.bZeichneClick(Sender: TObject);
const
  dx = 0.001;
var
  x,y : real;

  function f(x : real) : real;
  begin
    result := (2*x-1)/(sqr(2*x+1)-3*x);
  end;

begin
  x := mTest.Getxmin;
  while x < mTest.Getxmax do
  begin
    y := f(x);
    mTest.SetzePunkt(x,y);
    x := x+dx;
  end;
end;
....

Aufgabe 3

Benutze den 'Bauplan' für eine Ampel (ampelform.zip), um eine Ampel zu erzeugen. Welche Botschaften kann man der Ampel senden, welche Anfragen kann man ihr stellen? Kann man auch mehrere Ampeln erzeugen?

....
procedure TfAmpeltest.FormCreate(Sender: TObject);
begin
  ampel1 := TAmpel.Create(nil);
  ampel1.Visible := true;
  ampel1.Caption := 'Ampel 1';
  ampel1.Left := 100;
end;
....

Aufgabe 4

Benutze den 'Bauplan' für einen Aufzug (aufzugform.zip), um einen Aufzug zu erzeugen. Was kann man mit dem Aufzug machen? Schreibe ein Experimentierprogramm.

Aufzug

Valid XHTML 1.0! lokal