Klasse
TAmpel implementieren
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
|