Homepage von Jean-René Thies — Projekte & Tools rund um Java, Groovy, Grails, PHP, Scala, MySQL...
    « Basic for BeginnersPicasa Web Album »

    Sparschwein-Tutorial

    Permalink 07.10.06 09:56, von jrt, Kategorien: Java, Minigames

    Die Grundlage für dieses Java-Programm fand ich in einem Buch über C#. Es demonstriert auf einfache Weise die Konzeption von Klassen und die Anwendung einer rekursiven Methode. Nach der Übersetzung in Java habe ich noch einen logischen Fehler des Originals korrigiert und eine grafische Benutzeroberfläche hinzugefügt.

    Fortsetzung:

    Hier zunächst mal der Download des Quellcodes mit Netbeans-Projektdaten und lauffähiger Version.

    Und hier ein Screenshot des Programms:
    Sparschwein

    Wie funktioniert das Sparschwein?
    Auf der rechten Seite befinden sich Buttons zum Einwerfen von Cent- oder Euromünzen. Das Sparschwein registriert die Anzahl jeder Münzsorte, die eingeworfen wurde (diese wird auch im unteren Bereich angezeigt). Ganz unten im Fenster kann man einen Wunschbetrag eingeben, den das Sparschwein wieder auswerfen soll. Das Sparschwein versucht, diesen Betrag mit möglichst wenigen Münzen zu erreichen.
    In dieser Version hat das Sparschein eine maximale Aufnahmekapazität von 100 Münzen.

    Wie ist das programmiert?
    Mit nur drei Java-Klassen: Dem Hauptfenster (ein JFrame), einer Sparschwein-Klasse und einer Münzfach-Klasse. Die letztere braucht man zur Aufnahme von Münzen einer bestimmten Sorte. Da es acht verschiedene Sorten gibt, gehören zu einem Sparschwein genau acht Münzfächer.
    Das Hauptfenster ist mit dem Matisse-Editor in Netbeans erstellt. In dessen Deklaration der Klassenvariablen wird mit
    Sparschwein freddy=new Sparschwein("Freddy",100);
    ein Sparschwein-Objekt konstruiert, das maximal 100 Münzen aufnehmen kann.
    Der Fehler des Originalprogramms lag darin, dass die Anzahl aller Münzen beim Herausnehmen nicht aktualisiert wurde. Dadurch blockierte das Programm irgendwann alle weiteren Münzeinwürfe. Das ist hier aber korrigiert.
    Die Hauptfenster-Klasse ist für die Darstellung der Werte und die Funktionalität der Bedienelemente zuständig. Ein Einwurf-Button macht nicht viel mehr als z.B. das:
    freddy.einwerfen(EURO.Cent5)
    Das Sparschwein-Objekt mit dem Bezeichner "freddy" übernimmt hier mit seiner Methode "einwerfen" eine 5-Cent-Münze und steckt sie ins passende Münzfach. Da die Methode einen boolschen Wert zurückliefert, kann damit geprüft werden, ob das Sparschwein schon voll ist. Das Einwerfen der 5-Cent-Münze verpackt man also sinnvollerweise in eine IF-Bedingung:

    if(freddy.einwerfen(EURO.Cent5)){
    updateSparschweinInhalt();
    } else {
    JOptionPane.showMessageDialog(null, "Das Sparschwein ist voll!");
    }

    Die Methode "updateSparschweinInhalt" des Hauptfensters sorgt für eine aktualisierte Darstellung der Gesamtsumme und aller Münz-Mengen. Sie ändert aber selbst nichts am Inhalt des Sparschweins, darum kümmert sich Freddy selbst!

    Die Sparschwein-Klasse definiert einen Namen (hier Freddy), eine maximale Münzanzahl, die aktuelle Anzahl und ein Array für die Münzfächer. Dieses Array wird im Konstruktor mit acht Münzfach-Objekten gefüllt. Die weiteren Methoden sind fast alle selbsterklärend, nur die doppelt vorhandene Methode "auswerfen" sollte genauer betrachtet werden. Hier steckt die ganze Cleverness des Sparschweins: Kann ein Wunschbetrag mit den vorhandenen Münzen überhaupt erreicht werden? Und gibt es eine Münzkombination mit möglichst wenigen Münzen?
    Dagegen ist ein Objekt der Münzfach-Klasse relativ beschränkt, es kann nur rudimentäre Aufgaben erfüllen. Münzen kommen eben nur einzeln herein oder heraus.

    Hinweis zum Schluss:
    Dieses Code-Tutorial ist für Java-Anfänger gedacht und erhebt nicht den Anspruch auf Perfektion. Für Verbesserungsvorschläge bin ich dankbar!

    Einen Kommentar hinterlassen »

    Noch kein Feedback

    Einen Kommentar hinterlassen


    Ihre E-Mail-Adresse wird nicht auf dieser Seite angezeigt.

    Ihr URL wird angezeigt.
    (Zeilenumbrüche werden zu <br />)
    (Name, E-Mail-Adresse & Webseite)
    (Benutzern erlauben, Sie durch ein Kontaktformular zu kontaktieren (Ihre E-Mail-Adresse wird nicht weitergegeben))

    ©2010 by Jean-René Thies

    Kontakt |