![]() |
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. |
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:
ich hoffe, dieser Vorschlag ist so etwa in deinem sinne, wenn nicht, tuts mir leid :mrgreen:
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. |
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.
|
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? |
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^^ |
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:
eine typisierte datei ist eher so:
datensatz1:
A=X B=Y datensatz2: C=Z datensatz3: B=Z D=X
Code:
du musst selbst entscheiden, was für dich das bessere ist
datensatz1:
A=U B=V datensatz2: A=W B=X datensatz3: A=Y B=Z |
Re: Suche OOP-Modell für Projekt
Zitat:
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 14:44 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