Darstellung von Datum - Codes richtig?

Cookiieee

Mitglied
Hallo,

ich habe folgende Aufgabenstellung und ich wollte fragen, ob jemand auf meine Ergebnisse raufschauen kann, ob diese richtig sind.

Die Darstellung des Datums ist weltweit nicht einheitlich. Während es zwar einen internationalen Standard (ISO 8601) gibt, der das Format JJJJ-MM-TT vorschlägt, wird praktisch aber z.B. in Deutschland das Format TT.MM.JJJJ sowie (hauptsächlich) in den Vereinigten Staaten das Format MM/TT/JJJJ verwendet.

Schreiben Sie eine abstrakte Klasse Date, welche die streng gekapselten Ganzzahlattribute (int) day, month und year enthält. Die Klasse soll einen vollständig parametrisierten Konstruktor (mit Argumenten in der zuvor angegebenen Reihenfolge) haben, der die Attribute initialisiert.

Für jedes Attribut soll es eine, exakt nach Java-Konvention benannte, get-Methode geben.

Es soll eine öffentliche, abstrakte Methode formatString ohne Argumente, mit Rückgabetyp String geben.

Die toString-Methode soll überschrieben werden und den Rückgabewert von formatString zurückgeben.

Es soll eine statische Methode fill geben, die zwei Ganzzahlwerte (int) übergeben bekommt. Das erste Argument repräsentiert eine Datumszahl (zu Beispiel den Tag oder den Monat), das zweite Argument die Anzahl an Stellen auf die diese in einer Darstellung als Zeichenkette, falls nötig, aufgefüllt werden soll. Bsp.: der Methoden-Aufruf fill(4,2) soll den String "04" zurückgeben.

Es soll drei von Date abgeleitete Klassen ISODate, GermanDate und AmericanDate geben. Jede dieser Klassen soll einen Konstruktor besitzen, der den Konstruktor von Date aufruft. Jede der Klassen muss die Methode formatString implementieren, die eine Zeichenkette entsprechend der anfänglich gezeigten Darstellung zurückgibt.

Testen Sie Ihre Implementierungen in einer Klasse TestDate. Es soll eine statische Methode makeDates geben, die Werte für day, month und year übergeben bekommt und ein Date-Array zurückgibt, das je ein Objekt für ISODate, GermanDate und AmericanDate (in dieser Reihenfolge) enthält. In der main-Methode soll die makeDates-Methode mit Werten für den 25. Mai 2001 aufgerufen werden. Die Elemente des erhaltenen Arrays sollen zeilenweise ausgegeben werden.

Hinweis: Die Klassen "Date", "ISODate", "GermanDate" und "AmericanDate" müssen als einzelne .java-Dateien hochgeladen werden. Die Klasse "TestDate" muss ins Antwortfeld geschrieben werden. Die Reihenfolge beim Datum nach ISO ist in dieser Aufgabe invertiert, "ISODate" soll also, wie im Beispiel, im Format TT-MM-JJJJ dargestellt werden.

Code TestDate
Java:
public class TestDate {

public static void main(String[] args) {
    // gebe korrektes Datum vor
System.out.println("Erzeuge Objekte und gebe korrektes Datum in den "+"drei Formaten aus:");
int tag = 01;
 int monat = 04;
 int jahr = 2013;
 // erzeuge Instanzen der drei Klassen und gebe die formatierten Daten aus
 GermanDate datum_de = new GermanDate(tag, monat, jahr);
  System.out.println("Deutsche Formatierung: "+datum_de.formatiere()
);
 AmericanDate datum_us = new AmericanDate(tag, monat,
jahr);
 System.out.println("Amerikanische Formatierung: "+datum_us.
formatiere());
 ISODatum datum_iso = new ISODatum(tag, monat, jahr);
 System.out.println("ISO−Formatierung: "+datum_iso.formatiere());
 System.out.println(); // Leerzeile

 // gebe falsches Datum vor
 System.out.println("Erzeuge Objekte und gebe falsches Datum in den "+"drei Formaten aus:");
 tag = 32 ;
  monat = 13;
 jahr = 1994;
 // erzeuge Instanzen der drei Klassen und gebe die formatierten Daten aus
 datum_de = new DeutschesDatum(tag, monat, jahr);
 System.out.println("Deutsche Formatierung: "+datum_de.formatiere()
);
 datum_us = new AmerikanischesDatum(tag, monat, jahr);
 System.out.println("Amerikanische Formatierung: "+datum_us.
formatiere());
 datum_iso = new ISODatum(tag, monat, jahr);
 System.out.println("ISO−Formatierung: "+datum_iso.formatiere());
 }
 }

Sind meine Codes so richtig?
Ich würde mich über jede Hilfe freuen :)
 

Anhänge

  • AmericanDate.java
    436 Bytes · Aufrufe: 0
  • Date.java
    1,1 KB · Aufrufe: 0
  • GermanDate.java
    432 Bytes · Aufrufe: 0
  • ISODate.java
    430 Bytes · Aufrufe: 0

Robert Zenz

Top Contributor
Du musst weniger denken fuer bessere Namen. ;)

Java:
GermanDate germanDate = new GermanDate(tag, monat, jahr);
GermanDate deutschesDatum = new GermanDate(tag, monat, jahr);

Der Rest sieht relativ gut aus, ein paar Kommentare in keiner beliebigen Reihenfolge.

Ich bin kein Freund von impliziten Konvertierungen basierend auf String-Konaktenierung, sondern mache diese stattdessen immer explizit:

Java:
return ""+0;

return Integer.toString(0);

Auch deswegen weil man nicht genau sagen was der Compiler aus dem Konstrukt macht, koennte

Java:
return new StringBuilder().append(0).toString();

werden, was teurer ist als die reine String-Konvertierung.

Das gesagt, nachdem deine Klassen unveraenderlich sind, koenntest du den formatierten String einmal erzeugen und zwischenspeichern um ein staendiges neuerzeugen vom String zu vermeiden.

Deine Formatierung ist auch nicht gut, du solltest einen Auto-Formatter darueber laufen lassen, idealerweise automatisch wenn du die Dateien speicherst.

ISODate ist falsch, das ist kein Bindestrich den du da eingefuegt hast.

Deine Kommentare ueber den Funktion kannst du direkt als Javadoc schreiben, dann koennen sie auch alle Werkzeuge verwenden und verstehen.

Von einem API-Design Standpunkt aus ist deine Klasse auch nicht wirklich gut. Es gibt die Methoden getTT, getMM und getJahr. Alle solten ident heiszen, entweder getTT/getMM/getYYYY oder getDay/getMonth/getYear oder noch besser getFormattedDay/getFormattedMonth/getFormattedYear. Die Klasse Datum sollte Date heiszen und noch besser AbstractDate.

Java:
 // Warnungen fuer offensichtlich falsche Daten 
 if (tag <= 0 || tag > 31){ 
 System.out.println("Warnung: Ungueltiger Tag "+tag+"."); 
 } 
 if (monat <= 0 || monat > 12){ 
 System.out.println("Warnung: Ungueltiger Monat "+monat+"."); 
 } 
 if (jahr <= 0){ 
 System.out.println("Warnung: Ungueltiges Jahr"+jahr+"."); 
 }

Eventuell waeren die Pruefungen besser lesbar wenn beide Seiten idente Operatoren verwenden:

Java:
 // Warnungen fuer offensichtlich falsche Daten 
 if (tag < 1 || tag > 31){ 
     System.out.println("Warnung: Ungueltiger Tag "+tag+"."); 
 } 
 if (monat < 1 || monat > 12){ 
     System.out.println("Warnung: Ungueltiger Monat "+monat+"."); 
 } 
 if (jahr <= 0){ 
     System.out.println("Warnung: Ungueltiges Jahr"+jahr+"."); 
 }
 

LimDul

Top Contributor
Uff, da ist einiges im Argen:

Für jedes Attribut soll es eine, exakt nach Java-Konvention benannte, get-Methode geben.
Fehlt. Stattdessen sind Methoden wie getTT da, die nie gefordert wurden.

Die toString-Methode soll überschrieben werden und den Rückgabewert von formatString zurückgeben.
Fehlt

Es soll eine statische Methode fill geben
Fehlt.

Testen Sie Ihre Implementierungen in einer Klasse TestDate. Es soll eine statische Methode makeDates geben, die Werte für day, month und year übergeben bekommt und ein Date-Array zurückgibt, das je ein Objekt für ISODate, GermanDate und AmericanDate (in dieser Reihenfolge) enthält
Die Method fehlt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkelod Binäre Darstellung Bitwise-Operator Java Basics - Anfänger-Themen 10
W OOP Objektorientiert: Darstellung von Uhrzeiten im 24-Stunden-Format Java Basics - Anfänger-Themen 15
J Frage zur Darstellung Java Basics - Anfänger-Themen 2
I Darstellung von Brüchen Java Basics - Anfänger-Themen 25
T Erste Schritte Darstellung der Java-Projekte in Eclipse Java Basics - Anfänger-Themen 2
H Eclipse , Design-Modus, unvollständige Darstellung Java Basics - Anfänger-Themen 0
I Fehlermeldung bei Darstellung von Arrays Java Basics - Anfänger-Themen 2
G Graphische Darstellung (Arbeiten mit einem Window) Java Basics - Anfänger-Themen 1
V Rechenzeichen bei Termen - Darstellung bei Schleifen Java Basics - Anfänger-Themen 7
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1
B Quadratwurzel nach Heron in rekursiver Darstellung Java Basics - Anfänger-Themen 1
M Darstellung von Dezimalzahlen Java Basics - Anfänger-Themen 2
S Darstellung eines Balkendiagrammes Java Basics - Anfänger-Themen 14
G Adjazenzlisten-Darstellung Java Basics - Anfänger-Themen 2
J Falsche Darstellung von Float Java Basics - Anfänger-Themen 2
J Automatentheorie-Darstellung der regulären Sprache eines DEA Java Basics - Anfänger-Themen 5
A Char Bytes Umwandlung und Darstellung Java Basics - Anfänger-Themen 3
Fab1 Interface UML Darstellung von impl. Methoden Java Basics - Anfänger-Themen 7
K Problem mit JTable Daten-darstellung Java Basics - Anfänger-Themen 6
-horn- Einfache graphische Darstellung von 3D Koordinaten für Flugbahnen? Java Basics - Anfänger-Themen 4
Z Probleme bei Darstellung von Brüchen Java Basics - Anfänger-Themen 15
D Bit-Darstellung Gleitkommazahl Java Basics - Anfänger-Themen 2
E JLabel deaktivieren ohne Veränderung der Darstellung Java Basics - Anfänger-Themen 2
F Tabellenähnliche Darstellung Java Basics - Anfänger-Themen 17
F Datentypen 4- bit darstellung Java Basics - Anfänger-Themen 5
DStrohma Alternative Darstellung von Paketen in Eclipse Java Basics - Anfänger-Themen 2
H Darstellung ComboBox in jTable Java Basics - Anfänger-Themen 5
B Effektive Implementierung für Darstellung großer Datenmengen in Jogl Java Basics - Anfänger-Themen 5
E Darstellung der Choice Einträge Java Basics - Anfänger-Themen 4
W Darstellung negativer Zahlen und Mengen von Zahlen Java Basics - Anfänger-Themen 9
A Program zur Darstellung von Zahlen in Java Java Basics - Anfänger-Themen 4
S Darstellung der Ausgabe Java Basics - Anfänger-Themen 8
A GregorianCalendar -Darstellung mit drawString Java Basics - Anfänger-Themen 3
D Darstellung in Swing Java Basics - Anfänger-Themen 6
A JFileChooser Darstellung Java Basics - Anfänger-Themen 3
K Silo Volumenberechnung mit Visueller darstellung Java Basics - Anfänger-Themen 20
S Darstellung von Umlauten Java Basics - Anfänger-Themen 24
P Problem mit Darstellung im Baum Java Basics - Anfänger-Themen 4
T Special Character darstellung Java Basics - Anfänger-Themen 4
G Problem mit der Darstellung (JFreechart) Java Basics - Anfänger-Themen 3
D JFileChooser Darstellung ändern? Java Basics - Anfänger-Themen 4
B Darstellung eines gesperrten JTextField Java Basics - Anfänger-Themen 2
M Illegal Escape Character und keine Darstellung? Java Basics - Anfänger-Themen 7
S Swing-Darstellung in Windows-Optik? Java Basics - Anfänger-Themen 13
M Programm zur Darstellung von Abschreibungen Java Basics - Anfänger-Themen 5
B Grafische Darstellung einer Emailverteilerliste Java Basics - Anfänger-Themen 2
G Problem bei der Darstellung von bestimmten ASCII-Zeichen Java Basics - Anfänger-Themen 4
L Datum - Monat und Jahr werden falsch angezeigt Java Basics - Anfänger-Themen 4
T Datum als Variable wert Java Basics - Anfänger-Themen 4
T Datum in die als Variabelwert Java Basics - Anfänger-Themen 5
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
berserkerdq2 Wie datum im default format speichern? Java Basics - Anfänger-Themen 5
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Datum und Uhrzeit Java Basics - Anfänger-Themen 4
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
B Datum in dieser Range SQL? Java Basics - Anfänger-Themen 3
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
D Kontoauszüge von bestimmtem Datum Java Basics - Anfänger-Themen 35
B Termine (Datum erstellen), Abhängig von Intervallen Java Basics - Anfänger-Themen 0
A Nächstes Datum ausgeben, if-Schleife unklar Java Basics - Anfänger-Themen 6
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Bluedaishi Datum in Jtextarea füllen Java Basics - Anfänger-Themen 5
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Datum umformatieren Java Basics - Anfänger-Themen 2
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
D Projekte + Datum + löschen Java Basics - Anfänger-Themen 11
M Datum serialisieren Java Basics - Anfänger-Themen 1
S Datum einlesen Java Basics - Anfänger-Themen 1
D Aktuelles Datum wird falsch ausgegeben Java Basics - Anfänger-Themen 2
K Methoden Datum parsen Java Basics - Anfänger-Themen 16
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
2 Uhrzeit und Datum aktualisieren Java Basics - Anfänger-Themen 12
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
O Datum-Werte gruppieren Java Basics - Anfänger-Themen 6
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
M Methoden Aus Timestamp das Datum berechnen Java Basics - Anfänger-Themen 3
B Kontoauszug mit Datum ausgeben Java Basics - Anfänger-Themen 4
M Datum in Millisekunden allerdings ohne Uhrzeit Java Basics - Anfänger-Themen 4
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
T Datum mit einem Datums-Bereich vergleichen Java Basics - Anfänger-Themen 10
J Datum und Uhrzeit in Datenbank falsch hinterlegt Java Basics - Anfänger-Themen 13
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
P Wieviele Tage seit dem Datum vergangen sind Java Basics - Anfänger-Themen 5
P Liste nach Datum sortieren Java Basics - Anfänger-Themen 7
B tageszahl in Datum umrechnen Java Basics - Anfänger-Themen 6
F Datum Differenz berechnen Java Basics - Anfänger-Themen 7
B String in Datum Java Basics - Anfänger-Themen 3
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben