Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Suche OOP-Modell für Projekt (https://www.delphipraxis.net/110494-suche-oop-modell-fuer-projekt.html)

Kuonrat 18. Mär 2008 23:25


Suche OOP-Modell für Projekt
 
Ich würde gerne mein Projekt (siehe unten), in OOP Art und Weise realisieren. Ich bin mit der rein praktischen Anwendung im Code bewandert, wie man Objekte erzeugt, einbindet etc. Was mir fehlt ist viel mehr das theoretische Denken, objektorientiert Denken! Sich das Programm und die Bestandteile in Objekte vorzustellen, da harpert es bei mir stark, vielleicht könnt ihr mir Vorschläge oder Anregungen geben.

Es handelt sich um ein Projekt, dass über ein Netzwerk ausgeübt wird. Es gibt mehrere Clients und einen Server. Die Clients stellen verschiedene Kassen dar (Supermarkt, Kaufhaus, Schreibwarengeschäft, usw.) in denen Kunden einkäufe erledigen können, dabei wird, wenn der Warenkorb gefüllt ist, die "EC"-Kartenr. des Kunden eingegeben, so dass sein Geld vom Bank-Server angebucht werden kann. Dabei wird dann auch ebend mitgeloggt, was er eingekauft hat. Die Kunden selber sind gespeichert und können bearbeitet (Daten) oder neue Kunden angelegt werden, selbiges gilt für die Artikellisten.

Also, vielleicht hat ja jemand eine Idee, denn bis auf GUI und "Rest" als Objekteinteilung, fällt mir so spontan nix ein.

Wäre dankbar :)



P.S.: Wo wir schon bei dem Projekt sind, hat jemand eine einfache Idee für die Datenspeicherung (Kunden, Artikel)? Ich dachte an typisierte Dateien oder XML, weiß nicht was besser ist, XML hab ich noch nicht ausprobiert und typisierte Dateienf and ich bisher etwas umständlich.

dajuhsa 18. Mär 2008 23:55

Re: Suche OOP-Modell für Projekt
 
wenn du kunde für kunde speichern möchtest, ist eine typ. Datei eigentlich eine gute Lösung, oder eben eine ini-datei.

ein paar Klassen-Vorschläge:
Delphi-Quellcode:
type

TArtikel = (Apfel,Papier,Eier,Buch,...(*kA was es da alles gibt*));

TKunde = class(TObject)
public
  ECNummer: Integer;
  zuletztGekauft: Array of TArtikel;
  Warenkorb: Array of TArtikel;
  procedure WarenkorbGefuellt(AKasse:TKasse);
  procedure AddToWarenkorb(AArtikel:TArtikel);
end;

TKasse = class(TObject)
public
  Kunden: Array of TKunde;
  GekaufteArtikel: Array of TArtikel;
  ErhaltenesGeld: Integer;
  function GetVerfuegbareArtikel: Array of TArtikel;virtual;abstract;
end;

TSupermarkt = class(TKasse)
public
  GetVerfuegbareArtikel:Array of TArtikel;override;
end;

TBank = class(TObject)
public
  Clients: Array of TKasse;
  function GetErhaltenesGeld:Integer;
  function GetKundenzahl:Integer;
end;

... //usw.
ich hoffe, dieser Vorschlag ist so etwa in deinem sinne, wenn nicht, tuts mir leid :mrgreen:

Dax 19. Mär 2008 00:05

Re: Suche OOP-Modell für Projekt
 
Öffentliche Felder sind böse, das sollte über Properties abgewickelt werden - und statt Arrays bitte TList-Nachfahren verwenden, sonst macht das keinen Sinn.

Kuonrat 19. Mär 2008 00:12

Re: Suche OOP-Modell für Projekt
 
Ja, doch.. das gefällt mir ganz gut so :)
Wegen den typisierten Dateien, da ist es ja so, es sollten eigentlich eher mehrere Kunden in einer Datei gespeichert werden und bei den Artikeln, müsste ich eh ähnlich verfahren, da 1000 Artikel zuviele Dateien sind. Ist denn von XML bei so einem Fall gänzlich abzuraten?

dajuhsa 19. Mär 2008 00:13

Re: Suche OOP-Modell für Projekt
 
das mit der TList hätte mir einfallen sollen :wall: *böse,böse*

öffentliche felder - ich weiß, ich weiß - aber das soll ja nur eine anregung sein, wenn ich jetzt private felder gemacht hätte und ein haufen properties wäre der code doppelt so lange gewesen^^

dajuhsa 20. Mär 2008 19:25

Re: Suche OOP-Modell für Projekt
 
also mit einer typisierten Datei kannst du soviele gleichartig aufgebaute Datensätze speichern wie du willst,
in einer ini- bzw. xml-datei kannst du jeden datensatz neu aufbauen, also:
Code:
datensatz1:
A=X
B=Y
datensatz2:
C=Z
datensatz3:
B=Z
D=X
eine typisierte datei ist eher so:
Code:
datensatz1:
A=U
B=V
datensatz2:
A=W
B=X
datensatz3:
A=Y
B=Z
du musst selbst entscheiden, was für dich das bessere ist

Klaus01 20. Mär 2008 20:48

Re: Suche OOP-Modell für Projekt
 
Zitat:

Zitat von Kuonrat

Es handelt sich um ein Projekt, dass über ein Netzwerk ausgeübt wird. Es gibt mehrere Clients und einen Server. Die Clients stellen verschiedene Kassen dar (Supermarkt, Kaufhaus, Schreibwarengeschäft, usw.) in denen Kunden einkäufe erledigen können, dabei wird, wenn der Warenkorb gefüllt ist, die "EC"-Kartenr. des Kunden eingegeben, so dass sein Geld vom Bank-Server angebucht werden kann. Dabei wird dann auch ebend mitgeloggt, was er eingekauft hat. Die Kunden selber sind gespeichert und können bearbeitet (Daten) oder neue Kunden angelegt werden, selbiges gilt für die Artikellisten.

.. aber sollte man da nicht eher an Datenbanken denken, als an typisierten Dateien oder XML files.
Hier könnte es zu Zugriffsproblemen im Client Server Betrieb kommen.
Mit einer Datenbank wäre das kein Problem.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz