AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit selbst erstellter Klasse

Ein Thema von XiONLuNiX · begonnen am 5. Jun 2005 · letzter Beitrag vom 7. Jun 2005
Antwort Antwort
XiONLuNiX

Registriert seit: 5. Jun 2005
3 Beiträge
 
#1

Re: Probleme mit selbst erstellter Klasse

  Alt 6. Jun 2005, 19:00
Also, eigentlich kriegen wir die Deklarationen aus nem Buch und müssen die Methoden dann nur "füllen",
was manchmal ziemlich in die Hose geht, da die Methoden kaum beschrieben werden und die Namen auch nicht gerade aussagekräftig sind.
Ich hab versucht die Kassen so selbstständig wie möglich zu machen und das ist das Ergebnis:

Delphi-Quellcode:
unit mKasse;

interface
        uses Classes, StdCtrls, ExtCtrls, mKunde;
 type TSchlange = class(TObject)
        private
         fAktuell,fEnde :TKunde;
         TimKunde, TimBedienung: TTimer;
         fLstKasse: TListBox;
         function IsEmpty: boolean; virtual;
         procedure TimKundeTimer(Sender:TObject);
         procedure TimBedienungTimer(Sender:TObject);
         procedure Verwaltung(P: boolean); virtual;
        public
         constructor Create(List: TListBox); virtual;
         procedure Enqueue(Elem: TKunde); virtual;
         procedure Dequeue; virtual;
         property Element: TKunde read fAktuell;
         property Ende: TKunde read fEnde;
         property Offen: Boolean write Verwaltung;
         end;


implementation
constructor TSchlange.Create(List: TListBox);
begin
    fLstKasse := List;
    TimKunde := TTimer.Create(nil);
    With TimKunde do begin
          Interval := 1000;
          Enabled := false;
          OnTimer := TimKundeTimer;
          end;

    TimBedienung := TTimer.Create(nil);
    With TimBedienung do begin
          Interval := 250;
          Enabled := false;
          OnTimer := TimBedienungTimer;
          end;
end;

procedure TSchlange.Enqueue(Elem: TKunde);
var SAnzahl : String;
 begin
        if not self.IsEmpty then
                Ende.Nach := Elem
            else
                fAktuell := Elem;
        fEnde := Elem;

        Str(fEnde.Anzahl,SAnzahl);
        fLstKasse.AddItem(SAnzahl,self);
 end;

procedure TSchlange.Dequeue;
var temp: TKunde;
 begin
      if not self.IsEmpty then begin;
         temp := fAktuell;
         fAktuell := temp.Nach;
         temp.Destroy;
         if fAktuell = nil then fEnde := nil;
      end;
 end;

function TSchlange.IsEmpty: boolean;
 begin
      If fAktuell <> nil then IsEmpty := false
                        else IsEmpty := true;
 end;

procedure TSchlange.TimKundeTimer(Sender:TObject);
begin
   Enqueue(TKunde.Create);
end;

procedure TSchlange.TimBedienungTimer(Sender:TObject);
var num: string;
begin
        if not IsEmpty then begin
         fAktuell.Gescannt;
         fLstKasse.Items.Delete(0);
         if fAktuell.Anzahl = -1 then Dequeue
                                else begin
                                     str(fAktuell.Anzahl,num);
                                     fLstKasse.Items.Insert(0,num);
                                 end;
         end;
         if (IsEmpty and (TimKunde.Enabled = false)) then TimBedienung.Enabled := false;
end;

procedure TSchlange.Verwaltung(P: boolean);
begin
  TimKunde.Enabled := P;
  if p = true then TimBedienung.Enabled := p;
end;

end.
Delphi-Quellcode:
unit mKunde;

interface
 type
     TKunde = class(TObject)
      private
       fanzahl :integer;
       fNach : TKunde;
      public
       constructor Create; virtual;
       procedure Gescannt;
       property Anzahl: Integer read fAnzahl;
       property Nach: TKunde read fNach write fNach;
      end;


implementation
 constructor TKunde.Create;
  begin
   inherited create;
   randomize;
   fanzahl := random(9) +1
  end;


  procedure TKunde.Gescannt;
   begin
    fanzahl := fanzahl -1;
   end;


end.
Die Kasse stellt so gesehen selber Kunden an und bearbeitet diese,
so dass das Formular nur die ListBox bereitstellen muss.
Es funzt, aber ich schätze mal, dass die Lösung nicht gerade elegant ist.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz