is-Logo Ampelanlage
Implementation TAmpel

S. Spolwig
 

[Home | Unterrichtssequenzen]
Startseite

Ziele:
Eigene Klasse schreiben

Informationen
zur Vertiefung

Klasse TAmpel implementieren  
TAmpel
Mit Create werden der Kasten und die 3 Lampen erzeugt und initialisiert (Init).

In SetPosition  werden die Größe und die Lage der Grafikobjekte zu einander festgelegt. Die Methoden dazu kommen von TRechteck und TKreis, ebenso wie Zeigen.

Auch in dieser Klasse sieht man, daß mit einer exakten Spezifikation ein halbwegs geübter Programmierer sofort sieht, was er zu codieren hat.

 

 

 

 

UNIT uAmpel;
(* ******************************************************************** *)
(* K L A S S E : TAmpel                                                 *)
(* -------------------------------------------------------------------- *)
(* Version     : 1.0                                                    *)
(* Autor       : S. Spolwig                                             *)
(* Beschreibung: Die Klasse bildet eine dumme Ampel mit diskreten       *)
(* Lampen ab.                                                           *)
(* Compiler    : Delphi 5.0                                             *)
(* Aenderungen : 0.9 11-MAY-01                                          *)
(* ******************************************************************** *)

INTERFACE
// =======================================================================
uses uLampe,
     uGrafik;
type
  TAmpel = class(TObject)
   private
    Kasten      : TRechteck;
    RoteLampe,
    GelbeLampe,
    GrueneLampe : TLampe;
    XPosition,
    YPosition   : integer;    // wo sie steht
   public
    constructor Create;       // herstellen
    procedure Init;
    procedure Rot;            // Zustand
    procedure Gelb;
    procedure Gruen;
    procedure Abschalten;

    procedure SetPosition(xp, yp: integer);
    procedure Zeigen;

  end;
(* -------------------- B e s c h r e i b u n g -------------------------

Oberklasse     : -
Bezugsklassen  : TRechteck, TLampe

Methoden
--------
Init
  Auftrag: gesamte Ampel erzeugen mit Lampen
  vorher : TLampe existiert
  nachher: Kasten und Lampen erzeugt

Init
  Auftrag: den Lampen Fuellfarbe rot, gelb, gruen zuweisen
  vorher : -
  nachher: done

Rot
  Auftrag: auf ROT schalten
  vorher : -
  nachher: ROT, Gelb-Aus, Grün-Aus.

Gelb
  Auftrag: auf GELB schalten
  vorher : -
  nachher: GELB, Rot-Aus, Grün-Aus.

Gruen
  Auftrag: auf GRUEN schalten
  vorher : -
  nachher: GRUEN, Gelb-Aus, Rot-Aus.


SetPosition(xp, yp: integer);
  Auftrag: Position auf dem Zeichenblatt übergeben
  vorher : -
  nachher: done

Zeigen
  Auftrag: Ampel auf dem Zeichenblatt anzeigen im jeweiligen Zustand
  vorher : -
  nachher: done

Abschalten
  Auftrag: alle Lampen aus
  vorher : -
  nachher: alle Lampen sind dunkel
----------------------------------------------------------------------- *)


IMPLEMENTATION
// ====================================================================

uses graphics; // importiert TColor

constructor TAmpel.Create;
// --------------------------------------------------------------------
begin
  inherited create;
  Kasten      := TRechteck.Create; 
  RoteLampe   := TLampe.Create;
  GelbeLampe  := TLampe.Create;
  GrueneLampe := TLampe.Create;
  Init;
end;

procedure TAmpel.Init;
// --------------------------------------------------------------------
begin
  Kasten.SetFuellFarbe(clGray);
  RoteLampe.SetFuellFarbe(clRed);
  GelbeLampe.SetFuellFarbe(clYellow);
  GrueneLampe.SetFuellFarbe(clLime);
end;

procedure TAmpel.SetPosition(xp, yp : integer);
// --------------------------------------------------------------------
begin
  XPosition := xp;
  YPosition := yp;
  Kasten.SetPos(XPosition, YPosition, XPosition + 30, YPosition + 80);
  RoteLampe.SetPos(XPosition + 15, YPosition + 15);
  GelbeLampe.SetPos(XPosition + 15, YPosition + 40);
  GrueneLampe.SetPos(XPosition + 15, YPosition + 65);
end;

procedure TAmpel.Rot;
// --------------------------------------------------------------------
begin
   RoteLampe.Ein;
   GelbeLampe.Aus;
   GrueneLampe.Aus
end;

procedure TAmpel.Gelb;
// --------------------------------------------------------------------
begin
  RoteLampe.Aus;
  GelbeLampe.Ein;
  GrueneLampe.Aus;
end;

procedure TAmpel.Gruen;
// --------------------------------------------------------------------
begin
  RoteLampe.Aus;
  GelbeLampe.Aus;
  GrueneLampe.Ein;
end;

procedure TAmpel.Zeigen;
// --------------------------------------------------------------------
begin
  Kasten.Zeigen;
  RoteLampe.Zeigen;
  GelbeLampe.Zeigen;
  GrueneLampe.Zeigen;
end;

procedure TAmpel.Abschalten;
// --------------------------------------------------------------------
begin
  RoteLampe.Aus;
  GelbeLampe.Aus;
  GrueneLampe.Aus;
end;

END.

 

 

 

s. Vorlage

 

 

 

 

 


©  05. Oktober 2008    Siegfried Spolwig