is-Logo Objektorientierte Programmierung (OOP)
M-V-C Implementierung - Ereignisse

S. Spolwig


[Home | Programmiersprachen | Delphi]
 

unit uPerson;
(* ******************************************************************** *)
(* K L A S S E : TPerson                                                *)
(* -------------------------------------------------------------------- *)
(* Version     : 0.9                                                    *)
(* Autor       : S. Spolwig, OSZ-Handel I, 10997 Berlin                 *)
(* Aufgabe     : bildet das Objekt Person ab und berechnet BMI.         *)
(* Compiler    : DELPHI 5.0                                             *)
(* Aenderung   : V. 0.9   15-AUG-01                                     *)
(*                  1.0   09-OCT-04    Ereignis                         *)
(* ******************************************************************** *)

interface
(* ==================================================================== *)
type
  TNotifyChange = procedure of object; // Deklaration eines Methodenzeigertyps

  TPerson = class(TObject)
   private
    Name    : string;
    Groesse : real;
    Gewicht : real;

   public
    OnChanged : TNotifyChange;        // Vereinbarung einer Referenzvariablen
    constructor Create;
    procedure Init;
    procedure SetName (n : string);
    function  GetName : string;
    procedure SetGroesse (gr : real);
    function  GetGroesse : real;
    procedure SetGewicht (gw : real);
    function  GetGewicht : real;

    function  HatBMI: real;
    procedure Abnehmen;
  end;


implementation
(* ==================================================================== *)

constructor TPerson.Create;
(* -------------------------------------------------------------------- *)
begin
  inherited Create;     
  Init;
end;

procedure TPerson.Init;
(* ----------------------------------------- *)
begin
  Name		:= '';
  Groesse := 1;        // muss <> 0 bei Division !
  Gewicht := 1;        // muss <> 0 bei Division !
end;

procedure TPerson.SetName (n : string);
(* ----------------------------------------- *)
begin
  Name := n;
  if assigned(OnChanged)
  then OnChanged;       		// Ereignis auslösen
end;

function TPerson.GetName : string;
(* ----------------------------------------- *)
begin
  Result := Name;
end;

procedure TPerson.SetGroesse (gr : real);
(* ----------------------------------------- *)
begin
  Groesse := gr;
  if assigned(OnChanged)
  then OnChanged;                    	// Ereignis auslösen
end;

function TPerson.GetGroesse: real;
(* ----------------------------------------- *)
begin
  Result := Groesse;
end;

procedure TPerson.SetGewicht (gw : real);
(* ----------------------------------------- *)
begin
  Gewicht := gw;
  if assigned(OnChanged)
  then OnChanged;                     	// Ereignis auslösen
end;

function TPerson.GetGewicht: real;
(* ----------------------------------------- *)
begin
  Result := Gewicht;
end;

function TPerson.HatBMI: real;
(* ----------------------------------------- *)
begin
  result:= gewicht / (Groesse * Groesse);
end;

procedure TPerson.Abnehmen;
(* ----------------------------------------- *)
begin
  Gewicht := Gewicht - 1;
  if assigned(OnChanged)
  then OnChanged;                     	// Ereignis auslösen
end;

END. // ----- UNIT -------

 

©    04. Oktober 2008     Siegfried Spolwig

Seitenanfang