Datumswerte in Objekte speichern

Status
Nicht offen für weitere Antworten.

Cheefrocker

Bekanntes Mitglied
Hallo zusammen!

Ich hätte da ne Frage: Ich habe eine Anwendung, in der viele Eingaben gemacht werden müssen. Diese Angaben speicher ich in Variablen. Jetzt hab ich hier 2 Datumsfelder. Diese Datumsfelder parse ich bei der Eingabe um festzustellen ob das Datum gültig ist.

Datumsfelder können ja in solchen formen eingegeben werden :

ttmmjj, tt.mm.jj,ttmmjjjj .. undsoweiter. diese werden dann in die Ursprungform tt.mm.jjjjj ungewandelt.


Wenn das Datum falsch ist kommt eine Fehlermeldung....



Meine Frage ist wie handhabe ich das mit der Überprüfung?? Diese jetzt ja beim focusLost eines Textfeldes ein!


Bau ich ein Object auf das alle Variablen entgegen nimmt und beim focuslost wird nur der Wert(String) übergegeben. Die Überprüfung läuft im Object ab??? Oder kann ich sie wie unten behandeln???

Code:
try
{
  //Übergibt DFormat den String vom EingabeFeld
  String EingabeDatum = JdbTextField1.getText();
 if(EingabeDatum.length()<1)
 {
     
     Person.setDatum1 = "";
   
 }
 else
 {
   EingabeDatum =  DFormat.Datums_VW(JdbTextField1.getText());

   //Das formatierte Datum wird ausgegeben
  JdbTextField1.setText(EingabeDatum);
   //Fehlermeldung nicht anzeigen
  JdbTextField_EM_FMeldung.setText("");

  //Speicher Wert in Variable
  Perso.setDatum2 = EingabeDatum;


//------------------------------------------------------------------------------

}//ende else
}//ende if
catch(Exception alle)
{
   //leert und fokusiert das Feld
   JdbTextField1.setText("");
   JdbTextField1.requestFocus();
   //Gibt Fehlermeldung aus! Da die Eingabe nicht korrekt ist
  JdbTextField_EM_FMeldung.setText("Achtung! \n"+"Sie haben eine ungültiges Datum \n"+"in das Feld eingegeben.\n"+"Eingabe bitte wiederholen.");

}



Ist das überhaupt so sinnvoll oder mach da kompletten Unfug???????

Hoffe ihr könnt mir weiterhelfen.(jetzt kommt mir nicht mit DesignPattern oder so an)

:wink:
 

SnooP

Top Contributor
1. Bezeichner werden klein geschrieben ;)

2. Da gibts folgendes Designpattern.... :D

3. ich gehe davon aus, dass die obskur benannte Methode Datums_VW() die entsprechende Exception wirft? Sprich die komplette Datumsüberprüfung macht? Das sieht schonmal ganz gut aus... verstehe nur nicht, warum du erst noch nach <1 prüfst?

Und ich würde den Text der Fehlermeldung durch die geworfene Exception in Datums_VW() mitschicken - dann ists nämlich am Ende egal, ob das auf ner GUI ausgegeben wird, in nem Logfile oder auf der Konsole, du kannste jedes mal alle.getMessage() benutzen.
 

merxleben

Aktives Mitglied
Hallo,

ich würde wahrscheinlich das Datum in eine Klasse packen und die Zeichenkette dem Konstruktor übergeben.
Für den fall, dass die Zeichenkette ein ungültiges Format aufweist würde ich eine IllegalDateFormatException schmeissen.

Nur so kurz ins Blaue

Martin
 

Cheefrocker

Bekanntes Mitglied
SnooP hat gesagt.:
1. Bezeichner werden klein geschrieben ;)

2. Da gibts folgendes Designpattern.... :D

3. ich gehe davon aus, dass die obskur benannte Methode Datums_VW() die entsprechende Exception wirft? Sprich die komplette Datumsüberprüfung macht? Das sieht schonmal ganz gut aus... verstehe nur nicht, warum du erst noch nach <1 prüfst?

Und ich würde den Text der Fehlermeldung durch die geworfene Exception in Datums_VW() mitschicken - dann ists nämlich am Ende egal, ob das auf ner GUI ausgegeben wird, in nem Logfile oder auf der Konsole, du kannste jedes mal alle.getMessage() benutzen.

das VW steht für vorwärts, da es noch ein RW für rueckwärts gibt!!

ist alle.getMessage() eine selbstdefinierte Methode bei dir @snoop oder?????
 

Cheefrocker

Bekanntes Mitglied
merxleben hat gesagt.:
Hallo,

ich würde wahrscheinlich das Datum in eine Klasse packen und die Zeichenkette dem Konstruktor übergeben.
Für den fall, dass die Zeichenkette ein ungültiges Format aufweist würde ich eine IllegalDateFormatException schmeissen.

Nur so kurz ins Blaue

Martin

Vielen dank Martin, werd mir das mal zu Gemüte führen!! Aber ist das den Sinnvoll eine eigenständige Klasse dafür zu bauen???? Es gibt ja viele Datumseingaben deshalb!
 

merxleben

Aktives Mitglied
Hallo,

Cheefrocker hat gesagt.:
Aber ist das den Sinnvoll eine eigenständige Klasse dafür zu bauen???? Es gibt ja viele Datumseingaben deshalb!

Gerade weil es viele Datumseingaben gibt, würde es sich anbieten.

Anstatt das Datum in einer Zeichenkette abzulegen, packst du das in eine separate Klasse. Das hat mehrere Vorteile. Zum einen befindet sich die Validitätsüberprüfung genau da wo sie hingehört, nämlich direkt beim Datum. Zweitens hast du die Möglichkeit das Datum unabhängig von der Darstellung im GUI zu speichern. Das wird dann interessant, wenn du unterschiedliche Ausgabeformate anbieten möchtest.

Wenn du die Variante noch ein bischen aufbohren möchtest, dann trennst du die Formatinformation noch von der Datumsklasse. Du hast also eine Klasse, die das Datum selber speichert und du hast eine Klasse, die ein Datumsformat speichert.

Sprich wenn du eine Instanz der Klasse Datum ezeugst, dann übergibst du diesem Objekt alle gültigen Formatobjekte. Somit kannst du je nach Bedarf eine mehr oder weniger restriktive Eingabe ermöglichen.

@SnooP

An welches Pattern hattest du den gedacht

Das wars erstmal

Martin
 

Cheefrocker

Bekanntes Mitglied
merxleben hat gesagt.:
Hallo,

Cheefrocker hat gesagt.:
Aber ist das den Sinnvoll eine eigenständige Klasse dafür zu bauen???? Es gibt ja viele Datumseingaben deshalb!

Gerade weil es viele Datumseingaben gibt, würde es sich anbieten.

Anstatt das Datum in einer Zeichenkette abzulegen, packst du das in eine separate Klasse. Das hat mehrere Vorteile. Zum einen befindet sich die Validitätsüberprüfung genau da wo sie hingehört, nämlich direkt beim Datum. Zweitens hast du die Möglichkeit das Datum unabhängig von der Darstellung im GUI zu speichern. Das wird dann interessant, wenn du unterschiedliche Ausgabeformate anbieten möchtest.

Wenn du die Variante noch ein bischen aufbohren möchtest, dann trennst du die Formatinformation noch von der Datumsklasse. Du hast also eine Klasse, die das Datum selber speichert und du hast eine Klasse, die ein Datumsformat speichert.

Sprich wenn du eine Instanz der Klasse Datum ezeugst, dann übergibst du diesem Objekt alle gültigen Formatobjekte. Somit kannst du je nach Bedarf eine mehr oder weniger restriktive Eingabe ermöglichen.

@SnooP

An welches Pattern hattest du den gedacht

Das wars erstmal

Martin

Vielen dank erstmal. Das hört sich alles logisch an. Aber angenommen ich habe ein Versicherten(Name,Vorname..) , dann hat der Versicherte ein Von-Datum, ein Bis-Datum und weitere Variablen.

Mach ich Von-Datum und das Bis-Datum dann als eigenständiges Obect(mit integriertem Parser) und füge es dem Versicherten an oder ist Von-Datum und Bis-Datum jeweils nur Variablen vom Object Versicherten die dann je nach bedarf durch den Parser gejaggt werden?

Sorry für meine Doofheit :oops:
 

merxleben

Aktives Mitglied
Hallo,

Mach ich Von-Datum und das Bis-Datum dann als eigenständiges Obect(mit integriertem Parser) und füge es dem Versicherten an oder ist Von-Datum und Bis-Datum jeweils nur Variablen vom Object Versicherten die dann je nach bedarf durch den Parser gejaggt werden?
Entschuldige, wenn ich deine Frage jetzt nicht ganz genau verstehe. Aber ich vermute, du möchtest wissen, ob die Datumsobjekte als Attribute deiner Klasse Versicherter implemtieren solltest oder nicht. Und falls ja, in welcher Form.

Das hängt jetzt allerdings davon ab, ob ein Versicherter nur jeweils genau ein von_datum Element und bis_datum Element besitzt, oder ob ein Versicherter mehrere solcher Paare haben kann.

Ich nehme jetzt mal der Einfachheit halber an, dass es nur genau ein Anfangs- und Endedatum gibt, dann du die Objekte von_datum und bis_datum einfach als Attribute deiner Klasse Versicherter implementieren. Das ganze sähe dann ungefähr so aus:

Code:
class Datum {
.
.
.
}

class Versicherter {

  protected Datum von_datum;
  protected Datum bis_datum;
}

BTW Versuche dich noch ein bischen mit den Begrifflichkeiten auseinander zusetzen.

Martin
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben