is-Logo Taschenlampe V. 1.3.2
 

S. Spolwig
 

[Home | Unterrichtssequenzen]
Startseite

unit uFenster;

/// ist unverändert

UNIT uTaschenlampe;

(* ******************************************************************** *)
(* K L A S S E : TTaschenlampe                                          *)
(* -------------------------------------------------------------------- *)
(* Version     : 1.3.2                                                  *)
(* Autor       :                                                        *)
(* Beschreibung: Die Klasse abstrahiert und modelliert eine Taschenlampe*)
(*               mit einer diskreten Gluehlampe und 3 x 1.5 V Batterien.*)
(* Compiler    : Delphi 6.0                                             *)
(* Aenderungen : V. 1.2   - 01-OKT-05   TGluehlampe, TBatterie          *)
(*                  1.3   -             abnehmende Helligkeit           *)
(*                  1.3.2 -             OHM                             *)
(* ******************************************************************** *)


INTERFACE
// =======================================================================

uses uGluehLampe, uBatterie;

type
  TTaschenlampe = class(TObject)
   private
    Lampe     : TGluehLampe;
    Batterie1,
    Batterie2,
    Batterie3 : TBatterie;
    Schalter  : boolean;

   public
    constructor Create;
    procedure Einschalten;
    procedure Ausschalten;
    function  Leuchtet : boolean;
    function  GetHelligkeit : integer;
  end;

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

Oberklasse    :
Bezugsklassen : ...........      import:


Methoden
--------
Einschalten
  Auftrag: TL einschalten
  vorher : -
  nacher : Schalter true; Lampe bekommt Spannung von Batt.

Ausschalten
  Auftrag: TL ausschalten
  vorher : -
  nacher : Schalter false; Lampe bekommt Spannung 0.

GetHelligkeit
  Anfrage: nach der aktuellen Helligkeit der Lampe, Spannung sinken lassen,
           neue Spannung an Lampe
  vorher : -
  nachher: done

Leuchtet
  Anfrage: ob die Taschenlampe 'brennt'
  vorher :
  nachher: leuchtet, wenn Lampe Licht gibt und Batteriespannung > 0 und Schalter auf EIN.
           Lampe bekommt aktuelle Batteriespannung

--------------------------------------------------------------------- *)

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

constructor TTaschenlampe.Create;
// --------------------------------------------------------------------
begin
  inherited Create;
  Lampe     := TGluehLampe.Create;
  Batterie1 := TBatterie.Create;   // 3 Batt. einbauen!
  Schalter  := false               // aus
end;


procedure TTaschenlampe.Einschalten;
// --------------------------------------------------------------------
var U : double;

begin
  Schalter := true;
  U := Batterie1.GetSpannung (15); //+ Batterie2.GetSpannung + Batterie3.GetSpannung;
  Lampe.SetSpannung(U);
end;

procedure TTaschenlampe.Ausschalten;
// --------------------------------------------------------------------
begin
  Schalter := false;
  Lampe.SetSpannung(0);
end;

function TTaschenlampe.Leuchtet : boolean;
// --------------------------------------------------------------------
var
  RL : double;  
      // Lastwiderstand der Lampe in Ohm

begin
  Result := (Lampe.GetLicht = true) AND (Lampe.GetSpannung > 0) AND (Schalter = true);
  if true
  then
    begin
      RL := Lampe.GetWiderstand;
      Lampe.SetSpannung(Batterie1.GetSpannung(RL));
    end;
end;

function  TTaschenlampe.GetHelligkeit : integer;
// --------------------------------------------------------------------
begin
  Result := Lampe.GetHelligkeit;
end;                                 

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

 

UNIT uLampe;

/// ist unverändert

UNIT uGluehlampe;

(* ******************************************************************** *)
(* K L A S S E : TGluehlampe                                            *)
(* -------------------------------------------------------------------- *)
(* Version     : 1.3.2                                                  *)
(* Autor       :                                                        *)
(* Beschreibung: Die Klasse abstrahiert und modelliert eine Lampe 4.5 V,*)
(*               300 mA                                                 *)
(* Compiler    : Delphi 6.0                                             *)
(* Aenderungen : V. 1.3.2 - 01-OKT-05   GetWiderstand                   *)
(* ******************************************************************** *)


INTERFACE
// =======================================================================
uses uLampe;

type
  TGluehlampe = class(TLampe)
   private
    Nennspannung,
    Spannung  : double;   // eff. anliegende Sp.
    Widerstand: double;
   public
    constructor Create;
    procedure   SetSpannung (u : double);
    function    GetSpannung : double;     // prüfen, ob Saft da ist
    function    GetHelligkeit : integer;
    function    GetWiderstand : double;
  end;

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

Oberklasse    : TLampe
Bezugsklassen : -     import:


Methoden
--------
Create
  Auftrag: erzeugen und init.
  vorher : -
  nachher: Nennspannung ist 4.5, Spannung 0, Widerstand 15.

SetSpannung
  Auftrag: Lampe mit Strom versorgen und leuchten lassen
  vorher : -
  nachher: Leuchtet oder nicht

Get...
  Auftrag: Attribut aus dem Objekt lesen
  vorher : Objekt ist init.
  nachher: -

GetHelligkeit : integer;
  Anfrage: nach prozentualem Stand der Spannung = Helligkeitsfaktor
  vorher :
  nachher:  hell, wenn 100%;

--------------------------------------------------------------------- *)

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

//uses dialogs, sysutils;


constructor TGluehlampe.Create;
// --------------------------------------------------------------------
begin
  inherited Create;
  Nennspannung := 4.5;
  Spannung     := 0;
  Widerstand   := 15;          // R=U/I
end;

procedure TGluehlampe.SetSpannung (u : double);
// --------------------------------------------------------------------
begin
  Spannung := u;
  if Spannung > 0
  then Leuchten;
end;

function TGluehlampe.GetSpannung : double;
// --------------------------------------------------------------------
begin
  Result := Spannung;
end;

function TGluehlampe.GetHelligkeit : integer;
// --------------------------------------------------------------------
begin
   Result := Round(Spannung / Nennspannung * 100);  // 100 % = hell
   if Result <= 0
   then Result := 1;
//showmessage(inttostr(result));
end;


function TGluehlampe.GetWiderstand : double;
// --------------------------------------------------------------------
begin
  Result := Widerstand;
end;

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

 

UNIT uBatterie;

(* ******************************************************************** *)
(* K L A S S E : TBatterie                                              *)
(* -------------------------------------------------------------------- *)
(* Version     : 1.3.2                                                  *)
(* Autor       :                                                        *)
(* Beschreibung: Die Klasse abstrahiert und modelliert eine Batterie    *)
(*               mit 1.5 V, 1.200 mAh                                   *)
(* Aenderungen : v. 1.3.2 - 01-OKT-5    Spannung sinkt nach OHM         *)
(* ******************************************************************** *)

INTERFACE
// =======================================================================

type
  TBatterie = class(TObject)
   private
    Spannung : double;              // eff. Spannung
    Ri       : double;              // Innenwiderstand

   public
    constructor Create;
    function    GetSpannung (RLast : double) : double;
  end;

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

Oberklasse    : -
Bezugsklassen :      import:

Methoden
--------
Create
  Auftrag: Erzeugen und initialisieren
  vorher :
  nachher: Spannung ist 1.5 V, Innenwiderstand ist 0

GetSpannung ()
  Anfrage: nach der aktuellen Spannung unter Belastung;
  vorher : Batt. ist init.
  nachher: Innenwiderstand ist erhoeht, Spannung vermindert

--------------------------------------------------------------------- *)

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

constructor TBatterie.Create;
// --------------------------------------------------------------------
begin
  inherited Create;
  Spannung := 1.5;
  Ri       :=   0;
end;

function TBatterie.GetSpannung (RLast : double) : double;
// --------------------------------------------------------------------
var                                      // weglassen????
  U,          // Spannung in Volt
  I,          // Strom in Amp
  UL : double;  // LastSpannung; neue Spannung an der Lampe

begin
   U  := Spannung;

   Ri := Ri + 0.001;      // der Innenwiderstand der realen Spannungsquelle steigt
   I  := U /(Ri + RLast); // der Strom sinkt
   UL := I * RLast;       // die Spannung unter Last an der Lampe sinkt

   Spannung := UL;
   Result := Spannung;
end;


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

 

©  05. Oktober 2008    Siegfried Spolwig

page_top