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:
- Prinzip der alleinigen Verantwortung
- Klassen und Methoden
- Getter- und Setter-Methoden
- if-else-Anweisungen
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 Datum - Hier als Java-Datei zum Herunterladen
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.