Ich verzweifle an Elixir

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hallo,

ich wollte eine Art kleines Kassensystem programmieren, und habe mich diesmal entschieden Elixir zu verwenden.

Das ganze besteht aus folgenden Klassen:

Product:
ein Produkt mit seinen jeweiligen Werten, so aus der Datenbank geladen
Name
Preis
Beschreibung
...

ProductInstance:
ein Produkt wie es während dem einkaufen verwendet wird
Erlaubt das Bündeln von mehreren Produkten, und repräsentiert gemeinsam einige Produkte (z.B. 5x Cola)
Die Unterscheidung wird per Hash gemacht, so dass, sollte man ein Produkt zum Beispiel rabattieren, es nicht mehr dazu gebündelt wird, sondern eine eigene ProductInstance bekommt. Eine ProductInstance bündelt immer nur die Product-Objekte die den selben Hash haben.

Transaction:
Der jeweilige Verkaufsprozess, während er stattfindet. Enthält die Produktinstanzen, und erlaubt zum Beispiel den Zahlungsvorgang und das Abschließen des ganzen Prozesses.




DAs ganze ist noch in einem weiten Vorstadium, aber schon jetzt verzweifle ich.
Anbei mal der Code:
http://python-forum.de/pastebin.php?mode=view&s=35

Hoffe da kann jemand meinen Denkfehler rausfinden, ich sitze jetzt schon Stunden dran, und weiß nicht was ich falsch verstanden habe, an Elixir.

Liebe Grüße
Chris
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Wie sieht der Fehler denn aus, also was geht nicht?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hallo,

Es ist ganz komisch, wenn ich mir das in der SQLite-Datenbank danach anschaue.

Bei den Produkten wird in das Feld transaction_tid die ID von der letzten Transaction eingetragen,
bei den Transactionen werden überhaupt nicht die Produkte eingetragen, sondern eben nur die ID von der Transaktion,
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Der Thread gehört imho ins Datenbanken-Subforum.

Die Getter und Setter sind so unschön; würde ich mit Propertirs lösen. Einige sind komplett unnötig (GetID in Product).

Achte mehr auf PEP8; Methoden werden mit underscores geschrieben und klein:
"foo_bar()" statt FooBar().

Ich verstehe Deine Fehlerbeschreibung nicht. Werde doch da noch einmal ein wenig genauer, was Du erwartest und was passiert.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Was ich mir wünschen würde:

Wenn die Funktion Finish() ausgeführt wird, soll folgendes passieren:

Tabelle Products:
-nichts passiert

Tabelle ProductInstance:
-Es wird eine Liste erzeugt, mit den pid-s von den Produkten die darin sind
Tabelle Transaction:
-Es wird die Transaction mit dem aktuellen Datum sowie den dort enthaltenen ProductInstances erstellt.

Danach wird alles für einen weiteren EInkauf zurückgesetzt.
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Machst du auch immer brav ein 'commit', nachdem du Änderungen (weitere Werte eingetragen) vorgenommen hast? Mit Elixir selbst kenne ich mich nicht aus, aber ich bin noch keinem DB-Toolkit begegnet, in dem du das nicht machen müßtest.
Antworten