i

Exkurs - Implementierung

Datenmodell

Wir gehen von dem folgenden objektorientierten Datenmodell aus:

Klassendiagramm zur Lernkartei

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:

Quelltext zur GUI

Suche

v
5.2.1.6.6
www.inf-schule.de/software/softwareentwicklung/projektlernkartei/projekt_kernsystem/exkurs_implementierungversion1
www.inf-schule.de/5.2.1.6.6

Rückmeldung geben