ich beschäftige mich seit einiger weniger Zeit mit objektorientierter Programmierung und habe da, denke ich, ein grundlegendes Verständnisproblem, welches nach wochenlanger Googlerecherche leider nicht geklärt werden konnte:
Nehmen wir das Beispiel eines Bankkontoprogrammes:
Der Programmbenutzer soll Bankkonten erstellen können, auf die Geld eingezahlt und ausgezahlt werden kann und deren Kontostand man sich anzeigen lassen kann.
Nun will ich natürlich nicht, dass der Nutzer sich mit komplizierten Befehlen herumschlagen muss wie z.B. konto1 = Bankkonto(Startbetrag), was in diesem Fall bei mir eine Instanz der Klasse Bankkonto erstellen würde. Also gibt's eine Eingabemaske per tkinter, wo abgefragt wird, wie das neue Konto heißen soll. Und dann wirds angelegt.
Für alle anderen Funktionen wie einzahlen auszahlen etc gibts natürlich auch ein eigenes Fenster.
Wie muss ich dieses Problem grundsätzlich angehen ?
Kann mir das jemand mal in muttersprachlichen Ausdrücken nahebringen ?
Bin übrigens kein Informatikstudent, der seine Hausaufgabe nicht lösen kann. Ist alles nur Hobby bei mir und ich freu mich schon darauf, meinen Code von euch zerissen zu sehen.
Vielen Dank für eure Mühe im voraus.
Falls es jemanden interessiert, ist hier auch der code, mit dem ich zur Zeit herumprobiere:
Code: Alles auswählen
from tkinter import *
import sys
class Bankkonto:
def __init__(self, startbetrag):
self.kontostand = startbetrag
def einzahlung(self, betrag):
betrag = float(betrag)
self.kontostand = self.kontostand + betrag
def auszahlung(self, betrag):
betrag = float(betrag)
self.kontostand = self.kontostand - betrag
def anzeigen(self):
print (self.kontostand)
def ueberweise(self, betrag, zielkonto):
betrag = float(betrag)
zielkonto.kontostand = zielkonto.kontostand + betrag
self.kontostand = self.kontostand - betrag
class createWidgets:
def __init__(self):
self.hauptfenster = Tk()
self.hauptfenster.title("Kontomanager")
Label(self.hauptfenster, text="Hallo", anchor="n").grid(row = 0)
Button(self.hauptfenster, command=self.einzahlen,
text="einzahlen").grid(row = 1)
Button(self.hauptfenster, command=self.kontostandfenster,
text="Kontostand anzeigen").grid(row=2)
Button(self.hauptfenster, command=self.kontomachen,
text="Konto machen").grid(row=3)
self.hauptfenster.mainloop()
def einzahlen(self):
einzahlung01 = Abfragefuereinzahlung()
def kontostandfenster(self):
kontostand = Kontostand_abfragen()
def kontomachen(self):
machjetzt = Konto_erstellen()
class Abfragefuereinzahlung:
def __init__(self):
self.einzbetragentry = DoubleVar()
self.kontonrentry = StringVar()
self.fenster_einzahlung = Tk()
self.fenster_einzahlung.title("Einzahlen")
Label(self.fenster_einzahlung, text="wie viel ?",
anchor="w").grid(row = 1)
self.einzbetragentry = Entry(self.fenster_einzahlung, width=5)
self.einzbetragentry.grid(row = 2)
Label(self.fenster_einzahlung, text="auf welches Konto ?",
anchor="w").grid(row = 3)
self.kontonrentry = Entry(self.fenster_einzahlung, width = 5)
self.kontonrentry.grid(row = 4)
self.buttoneinzahlen = Button(self.fenster_einzahlung,
command=self.einzahlenausmaske,
text="einzahlen")
self.buttoneinzahlen.grid(row = 5)
def einzahlenausmaske(self):
einzbetrag = self.einzbetragentry.get()
einzkontonr = self.kontonrentry.get()
einzbetrag = float(einzbetrag)
einzkontonr = eval(einzkontonr) # das hier ist nur mal grad
# dass es überhaupt funktioniert
Bankkonto.einzahlung(einzkontonr, einzbetrag)
self.fenster_einzahlung.destroy()
class Kontostand_abfragen:
def __init__(self):
self.kontostand_fenster = Tk()
self.kontostand_fenster.title("Kontostand")
Label(self.kontostand_fenster, text="welches Konto ?",
anchor="w").grid(row = 1)
self.kontonr_entry = Entry(self.kontostand_fenster, width=5)
self.kontonr_entry.grid(row = 2)
self.button_anzeigen = Button(self.kontostand_fenster,
command=self.standabfragen, text="anzeigen")
self.button_anzeigen.grid(row = 5)
def standabfragen(self):
kontonr = self.kontonr_entry.get()
kontonr = eval(kontonr) # das hier ist nur mal grad
# dass es überhaupt funktioniert
Bankkonto.anzeigen(kontonr)
self.kontostand_fenster.destroy()
class Konto_erstellen:
def __init__(self):
self.konto_erstellen_fenster = Tk()
self.konto_erstellen_fenster.title("Konto erstellen")
Label(self.konto_erstellen_fenster, text="welcher Kontoname ?",
anchor="w").grid(row = 1)
self.kontonr_entry = Entry(self.konto_erstellen_fenster, width=5)
self.kontonr_entry.grid(row = 2)
self.button_anzeigen = Button(self.konto_erstellen_fenster,
command=self.mache_Konto, text="mach jetzt")
self.button_anzeigen.grid(row = 5)
def mache_Konto(self):
kontonr = self.kontonr_entry.get()
#kontonr = Bankkonto(15)
self.konto_erstellen_fenster.destroy()
konto1 = Bankkonto(50)
konto2 = Bankkonto(0)
konto1.einzahlung(50)
konto2.einzahlung(100)
konto2.einzahlung(3)
createWidgets()