Exkurs - Implementierung
Datenmodell
Wir gehen von dem folgenden objektorientierten Datenmodell aus:
Implementierung des Datenmodells
Der folgende Quelltext zeigt eine mögliche Implementierung der konzipierten Klassen.
# Klassen zur Modellierung einer Lernkarte
# Autor: KB
# Datum: 16.06.09
# Deklaration der Klasse Karte
class Karte(object):
def __init__(self, stichwort, erlaeuterung):
self.stichwort = stichwort
self.erlaeuterung = erlaeuterung
# Deklaration der Klasse Kartenstapel
class Kartenstapel(object):
def __init__(self):
self.karten = []
def getKarte(self, index):
if index > -1 and index < len(self.karten):
return self.karten[index]
else:
return None
def getMaxIndex(self):
return len(self.karten)-1
def karteHinzufuegen(self, stichwort, erlaeuterung):
self.karten = self.karten + [Karte(stichwort, erlaeuterung)]
def karteLoeschen(self, index):
if index >= 0 and index <= self.getMaxIndex():
self.karten = self.karten[0:index] + \
self.karten[(index+1):len(self.karten)]
def kartenstapelToString(self):
text = '<?xml version="1.0" encoding="iso-8859-1"?>' + '\n'
text = text + '<kartenstapel>' + '\n'
for karte in self.karten:
text = text + '<karte>' + '\n'
text = text + '<stichwort>' + '\n'
text = text + karte.stichwort + '\n'
text = text + '</stichwort>' + '\n'
text = text + '<erläuterung>' + '\n'
text = text + karte.erlaeuterung + '\n'
text = text + '</erläuterung>' + '\n'
text = text + '</karte>' + '\n'
text = text + '</kartenstapel>' + '\n'
return text
def stringToKartenstapel(self, quelltext):
stringliste = quelltext.splitlines()
self.karten = []
i = 2
while stringliste[i] == '<karte>'.strip():
stichwort = stringliste[i+2].strip()
erlaeuterung = stringliste[i+5].strip()
self.karten = self.karten + [Karte(stichwort, erlaeuterung)]
i = i + 8
# Deklaration der Klasse Kartenmanager
class Kartenmanager(object):
def __init__(self):
self.kartenstapel = None
self.indexAktuelleKarte = -1
def setKartenstapel(self, kartenstapel):
self.kartenstapel = kartenstapel
def anfangKartenstapel(self):
if self.kartenstapel.getMaxIndex() > -1:
self.indexAktuelleKarte = 0
def endeKartenstapel(self):
if self.kartenstapel.getMaxIndex() > -1:
self.indexAktuelleKarte = self.kartenstapel.getMaxIndex()
def weiterKartenstapel(self):
if self.kartenstapel.getMaxIndex() > -1 and \
self.indexAktuelleKarte < self.kartenstapel.getMaxIndex():
self.indexAktuelleKarte = self.indexAktuelleKarte + 1
def zurueckKartenstapel(self):
if self.kartenstapel.getMaxIndex() > -1 and \
self.indexAktuelleKarte > 0:
self.indexAktuelleKarte = self.indexAktuelleKarte - 1
def aktuelleKarteLoeschen(self):
if self.kartenstapel.getMaxIndex() > -1:
self.kartenstapel.karteLoeschen(self.indexAktuelleKarte)
if self.indexAktuelleKarte > self.kartenstapel.getMaxIndex():
self.indexAktuelleKarte = self.indexAktuelleKarte - 1
def karteHinzufuegen(self, stichwort, erlaeuterung):
self.kartenstapel.karteHinzufuegen(stichwort, erlaeuterung)
self.indexAktuelleKarte = self.kartenstapel.getMaxIndex()
def getAktuelleKarte(self):
if self.indexAktuelleKarte >= 0 and \
self.indexAktuelleKarte <= self.kartenstapel.getMaxIndex():
return self.kartenstapel.getKarte(self.indexAktuelleKarte)
else:
return None
Implementierung der grafischen Benutzeroberfläche
Den Quelltext zu einer möglichen Implementierung der grafischen Benutzeroberfläche findest hier: