ich arbeite an einer Idee, die später als Webanwendung realisiert werden soll. Der erste Prototyp ohne GUI, um die Logik zu testen. Dabei trete ich aber schon früh auf der Stelle.
Es sollen zwei Nutzer miteinander in eine längerfristige Interaktion treten können. Diese besteht darin, dass sie füreinander Einkäufe erledigen, Geld leihen und später zurückzahlen, usw. Es soll darüber Übersicht behalten werden, und auch wer wem aktuell wie viel schuldet. Beide Nutzer sollen Einträge anlegen können, die das Gegenüber bestätigen muss. Eine Übersichtsseite zeigt alle Einträge der Interaktion und die aktuellen Summen. Nachrichten sollen ausgetauscht werden, falls bestimmte Ereignisse eintreten, bspw. Betrag X oder Zeitraum Y überschritten wurde (noch genauer zu definieren)
Ich habe folgende Klassen vorgesehen: Nutzer, Interaktion, Eintrag, Nachricht
Nun strauchle ich schon kurz nach dem Anlegen der Nutzer, wenn es darum geht, welche Datenstruktur empfehlenswert sein könnte, um die Interaktionen der Nutzer untereinander darzustellen, und welche Klasse welche Daten bereithalten soll. Aktuelles Beispiel: Ein Nutzer lädt den anderen ein, einer neuen Interaktion teilzunehmen. Welche Daten behält der Nutzer, welche die Interaktion? Brauche ich vielleicht weitere Klassen?
Das wird nicht leichter dadurch, dass ich die Klassen so schneiden will, dass sie später auch per Web benutzt werden können. Dann natürlich mit Login, usw. Aber dort soll ein User alle Informationen in Formulare eintragen können und im Hintergrund wird die gleiche Logik angesteuert.
Freu mich auf eure Kommentare!
Code: Alles auswählen
from datetime import date
class Entry(object):
def __init__(self, title, amount = 0, description = "", timestamp = None):
self.title = title
self.amount = amount
self.description = description
self.timestamp = timestamp
class Note(object):
def __init__(self, sender, receiver, timestamp, head, body):
self.sender = sender
self.receiver = receiver
self.timestamp = timestamp
self.head = head
self.body = body
class User(object):
users = 0
def __init__(self, name, chips = 0, passwd = "", mail = ""):
self.name = name
self.chips = chips
self.passwd = passwd
self.mail = mail
self.interactions = {}
User.users += 1
self.number = User.users
def show(self):
show_me = "#{} User {} has {} chips".format(self.number, self.name, self.chips)
if self.passwd != "":
show_me += "and a password"
if self.mail != "":
show_me += "and a mail"
show_me += "."
return show_me
def receive_message(self, message):
pass
def interact_with(self, opponent):
new_interaction = Interaction(self, opponent)
self.interactions[opponent.number] = new_interaction
def accept_interaction(self, opponent):
pass
def extend_interaction(self, opponent, entry):
pass
def show_interaction(self, opponent):
pass
class Interaction(object):
def __init__(self, founder, invited, name = ""):
self.founder = founder
self.invited = invited
self.name = name
def show(self):
pass
def main():
pass
def test():
r = User("Robert", 10)
print r.show()
m = User("Maria", 10)
print m.show()
r.interact_with(m)
m.accept_interaction(r)
e = Entry("Einkauf", 3.99, "Brot, Wasser", date(2018, 03, 17))
r.extend_interaction(m, e)
print r.show_interaction(m)
e2 = Entry("Zahlung", 3.99, "für Einkauf", date(2018, 03, 23))
m.extend_interaction(r, e2)
print m.show_interaction(r)
if __name__ == "__main__":
# main()
test()