Home > Informatik > Einf. in die OPP mit Java > Java-Beispiele > Datumsberechnunge

Beispiel Datumsberechnung

Kontext

Dieses Java-Beispiel stammt aus den Vorbereitungen für die Vorlesung zur Einführung in die OOP an der PHWT Vechta/Diepholz.

Das Beispiel "Datumsberechnung" deckt folgende Aspekte der OOP ab:

Zielsetzung

Es soll eine Klasse Datum mit weiteren Hilfsklassen erstellt werden, mit denen einfache Berechnungen durchgeführt werden können wie zum Beispiel "Wie viele Tage sind seit dem 1.1.1920 vergangen?".

Solche Berechnungen werden allerdings in diesem Projekt noch nicht durchgeführt, dies ist eine Aufgabe für spätere Erweiterungen.

Es wurde versucht, dieses Projekt unter Berücksichtigung des OOP-Prinzips der alleinigen Verantwortung zu implementieren.

Wenn Sie die Erstellung dieses Projektes Schritt für Schritt nachvollziehen möchten, können Sie gern die Seite mit dem Workshop "Das Projekt Datum" aufrufen.

1. Die Klasse Datum

Diese Klasse ist nur für die Instanzvariablen sowie deren Setter und Getter zuständig. Die Überprüfung des Datums (ob zum Beispiel ein Datum wie der 31.02.2025 gültig ist) wird in eine eigene Klasse augelagert, ebenso die Formatierung des Datums sowie die Ausgabe des Datums als String, in die Konsole oder als Graphik.

Die Klasse DatumRegeln, auf die hier zugegriffen wird, stellt keine statischen Methoden zur Verfügung (dieses Beispiel ist für Programmieranfänger gedacht). Daher muss zunächst ein Objekt regeln dieser Klasse deklariert und initialisiert werden, wenn man aus Datum heraus auf die drei Korrektur-Regeln zugreifen will.

2. Die Klasse DatumRegeln

Die Klasse DatumRegeln - Hier als Java-Datei zum Herunterladen

Diese Regeln korrigieren ungültige Tages-, Monats- oder Jahreseingaben. Wird beispielsweise eine Null oder eine negative Zahl als Tag, Monat oder Jahr eingegeben, wird diese Zahl auf 1 gesetzt. Eine Tageszahl, die größer ist als die Tageszahl des jeweiligen Monats wird auf diese maximale Tageszahl gesetzt. Im Fall Februar ist dann auch noch zu überprüfen, ob es sich um ein Schaltjahr handelt.

In späteren Versionen oder Übungen kann die Methode tageImMonat() optimiert werden, beispielsweise durch eine switch-case-Anweisung.

3. Die Klasse DatumFormatierer

Diese Klasse ist ausschließlich für die Formatierung des Datum-Strings zuständig. Wenn die Formatierungs-Regeln erweitert oder verändert werden, dann muss nur diese Klasse angepasst werden.

Die Klasse DatumFormatierer - Hier als Java-Datei zum Herunterladen

Man könnte hier leicht weitere Datumsformate definieren, z.B das amerikanische MM-DD-YYYY oder das englische DD-MM-YYYY oder das international gebräuchliche YYYY-MM-DD.

4. Die Klasse DatumsAusgabe

Diese Klasse ist ausschließlich für die Formatierung des Datum-Strings zuständig. Wenn die Formatierungs-Regeln erweitert oder verändert werden, dann muss nur diese Klasse angepasst werden.

Die Klasse DatumsAusgabe - Hier als Java-Datei zum Herunterladen

Bisher enthält die Klasse nur eine Methode, nämlich ausgeben(). Diese Methode nimmt den von der Klasse DatumFormatierer gelieferten String entgegen und schreibt ihn auf die Konsole. Andere noch zu implementierende Methoden könnten diesen String beispielsweise graphisch darstellen, in eine Textbox oder Dialogbox schreiben etc.

5. Die Testklasse

Hier der Quelltext einer Testklasse für das Datums-Projekt:

public class TesteDatum
{
    DatumsAusgabe konsole;

    public TesteDatum()
    {
        konsole = new DatumsAusgabe();
        konsole.ausgeben(new Datum(31,4,2025));
        konsole.ausgeben(new Datum(17,13,2025));
        konsole.ausgeben(new Datum(34,11,2025));
        konsole.ausgeben(new Datum(-5, 0,2025));
        konsole.ausgeben(new Datum(30, 2,2025));    
        konsole.ausgeben(new Datum(30, 2,2024));        
        konsole.ausgeben(new Datum(30, 2,2000));      
        konsole.ausgeben(new Datum(29, 2,1900));        
    }
}

Sie können diese Klasse natürlich nach Belieben erweitern oder verändern.