Index

Datentypen (12)


Objekt-Typ

3. Auto-Beispiel als PASCAL-Programm (Delphi)

unit uAuto;
 
interface
 
uses Dialogs;
 
type
  TAuto = class(TObject)
  private
    Geschwindigkeit: real;
    MaxLeistung: integer;
    MaxGeschw: integer;
    MotorBetrieb: boolean;
  public
    function getGeschwindigkeit(): real;
    procedure setMaxLeistung(Wert: integer);
    function getMaxLeistung(): integer;
    procedure setMaxGeschw(Wert: integer);
    function getMaxGeschw(): integer;
    function getMotorStatus(): boolean;
    procedure starteMotor();
    procedure stoppeMotor();
    procedure beschleunige();
    procedure bremse();
    constructor Create(iMaxLeistung,iMaxGeschw: integer);
    {destructor destroy();}
end;
 
implementation
 
constructor TAuto.Create(iMaxLeistung,iMaxGeschw: integer);
begin
  inherited Create; // Geerbten Konstruktor aufrufen
  Geschwindigkeit := 0; // Neue Felder initialisieren.
  MotorBetrieb := false;
  MaxLeistung := iMaxLeistung;
  MaxGeschw := iMaxGeschw;
end;
{
destructor TAuto.destroy();
begin
 
end;
}
function TAuto.getGeschwindigkeit(): real;
begin
  result := Geschwindigkeit;
end;
 
procedure TAuto.setMaxLeistung(Wert: integer);
begin
  MaxLeistung := Wert;
end;
 
function TAuto.getMaxLeistung(): integer;
begin
  result := MaxLeistung;
end;
 
procedure TAuto.setMaxGeschw(Wert: integer);
begin
  MaxGeschw := Wert;
end;
 
function TAuto.getMaxGeschw(): integer;
begin
  result := MaxGeschw;
end;
 
function TAuto.getMotorStatus(): boolean;
begin
  result := MotorBetrieb;
end;
 
procedure TAuto.starteMotor();
begin
  if not MotorBetrieb
    then MotorBetrieb := true
    else ShowMessage('Sie können den Motor nicht starten,'+chr(13)+ 'da er schon läuft!');
end;
 
procedure TAuto.stoppeMotor();
begin
  if Geschwindigkeit > 0
    then ShowMessage('Bremsen Sie lieber zuerst!')
    else
      if MotorBetrieb
        then MotorBetrieb := false
        else ShowMessage('Sie können den Motor nicht stoppen,'+chr(13)+ 'da er schon steht!');
end;
 
procedure TAuto.beschleunige();
begin
  if not MotorBetrieb
    then ShowMessage('Sie müssen zuerst den Motor starten!')
    else begin
      Geschwindigkeit := Geschwindigkeit + MaxLeistung*(MaxGeschw-Geschwindigkeit)/MaxGeschw/5;
      if Geschwindigkeit > MaxGeschw then Geschwindigkeit := MaxGeschw;
    end;
end;
 
procedure TAuto.bremse();
begin
  Geschwindigkeit := Geschwindigkeit - 18;
  if Geschwindigkeit < 0 then Geschwindigkeit := 0;
end;
 
end.

Die Unit uAuto muss in der Hauptunit angegeben werden:
 
implementation
 
uses uAuto;
 
{$R *.DFM}
 
var MeinAuto: TAuto;

Bei Create des Formulars erzeugen wir das Auto:
 
procedure TAutoGUI.FormCreate(Sender: TObject);
begin
  {Aufruf des Konstruktors}
  MeinAuto := TAuto.Create(72,178);
  ZeigeStatus();
end;

Beispielprozedur:
 
procedure TAutoGUI.buMotoranClick(Sender: TObject);
begin
  MeinAuto.starteMotor();
  ZeigeStatus();
end;

Die Prozedur ZeigeStatus:
 
procedure TAutoGUI.ZeigeStatus();
{Zeigt Geschwindigkeit und Motorstatus an}
var Stat : string;
begin
  edGeschw.Text := IntToStr(Round(MeinAuto.getGeschwindigkeit()));
  if MeinAuto.getMotorStatus() then Stat := 'an' else Stat:= 'aus';
  edMotorStatus.Text := 'Motor ist ' + Stat;
end;

 

[Index] [Zurück/Objekttyp-UML]


Autor: Jürgen Dehmer
Letzte Änderung: 27. April 2003