Java - speichern des Geburtsdatums in der Klasse Person - ich kom nicht weiter

Heurik

Commodore Special
Mitglied seit
14.10.2003
Beiträge
392
Renomée
4
Standort
Kempten
Hi,

ich habe nun Java angefangen und stehe schon vor einem Problem, ich versteh das mit dem Datum und der Zeit nicht so recht bei Java. Habe mir schon einiges im Internet rausgesucht, aber daraus werde ich nicht schlau.

Ich habe eine Klasse Person und möchte da nun neben dem Namen auch das Geburtsdatum speichern, ändern und abfragen können. Wie mache ich das?

Mein Stand:

Code:
import java.text.*;
import java.util.*;

public class Person {
	
	private String name;
	private GregorianCalendar dateOfBirth;



	public Person(String name) {
		this.name = name;
		this.dateOfBirth="20.01.2000";
	}


	public String getName() {
		return name;
	}


	public Date getDateOfBirth() {
 		return dateOfBirth;
	}
	
	public static void main (String[] args) {
		Person p1 = new Person("neu");
		System.out.println(getName(p1);
	}

}
 
DateOfBirth ist kein String, sondern eine eigene Klasse, d.h. du musst ihm das Geburtsdatum auch in der richtigen Syntax übergeben.

GregorianCalendar(int year, int month, int date)
Constructs a GregorianCalendar with the given date set in the default time zone with the default locale.

Das hier stammt aus der Java Dokumentation, d.h. also:

dateOfBirth = new GregorianCalendar(2000,1,20);

wäre die richtige Syntax. this ist außerdem nicht unbedingt von Nöten, aber auch nicht falsch :).

Und außerdem kann die Methode getDateOfBirth() so nicht klappen, da müsstest du als return Wert GregorianCalendar haben.

Warum benutzt du außerdem nicht die Klasse Date?

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html

EDIT: Ok, GregorianCalendar ist nicht schlecht, Date ist veraltet und wurde durch die Calendars ersetzt...
 
Zuletzt bearbeitet:
Dankes es klappt jetzt. Mit Date hatte ich vorher verstanden, aber was "veraltetes" wollte ich nicht. Habe mir zum Vorsatz genommen etwas sauberer zu programmieren ;)

Danke für deine einfache Erklärung! Hat geholfen!
 
Ok, schön dass alles gepasst hat :). Ich war ja selbst bis vor nem halben Jahr oder so Java technisch nicht so der Profi :P.
 
frage: wieso packst du deine main in die klasse Person?
 
Ist doch nichts derart ungewöhnliches in Java dass man eine public static void main() innerhalb der einzig vorhandenen klasse deklariert...!?
Wird IMHO in den meisten Tutorials etc. auch so gemacht.
Als static ist die Funktion ja direkt aufrufbar ohne Person-Instanz und AFAIK ist der Java-Loader so designt dass er per default nache eben so einer Methode als Einstiegspunkt sucht wenn das Programm startet...
Wohin hätte er main den sonst packen sollen? *noahnung*
 
wirklich sauber finde ich das aber nicht, wenn er schon davon spricht, dass er "sauberer" programmieren will...

also entweder Person{} überhaupt in nen eigenes File oder zumindest die main vor/nach Person{}
 
Ähm...
Zugegeben es ist ne ganze Weile her dass ich ge-JAVAt habe, aber ich war der Meinung dass Java keine Standalone-Funktionen akzeptiert, sondern jede Funktion in einer Klasse sein muss.
d.H. auch main() muss mitglied irgend einer Klasse sein und er kann es nicht einfach hinter die } - Klammer von Person verschieben...
Oder bin ich da aufm Holzweg?

"sauberer" Programmieren kann vieles heißen... aber sich als Anfänger, der noch "herumprobiert" den Aufwand zu geben für ein Programm das nur aus einer einzelnen Klasse besteht das Gaze noch in Files aufzuteilen o.ä. ist wohl schon ein bisschen übertrieben.
Wesentlich wichtiger ist es IMHO am Anfang doch mit der Sprache, den Konzepten, der Objektorientierten Progrmmierung als solchen (sofern man Java als objektorientiert bezeichnet ;D ) kennen- und verstehen zu lernen... und sich nicht mit solch Kleinkram aufzuhalten wie "wohin positioniere ich Funktion x"... Wenn das Ganze das Resultat einer Überelgung zur Software-Architektur ist, alla "Ich lagere das besser in eine Basisklasse aus" o.ä. dann seh ich das noch ein...
Aber ansonsten..?
Der Grund warum viele Leute so auf skriptsprachen wie Python oder Ruby abfahren ist schlicht die Tatsache dass einem derartiges Gedöns erspart bleibt... sich aufs Wesentliche konzentrieren kann... und gerade wenn man noch lernt, ist es besser so einfach wie möglich zum Ziel zu kommen, das erhält die Motivation...

Also versteh mich nicht falsch, es gibt nichts schlimmeres als spaghetticode... vor allem wenn er 10 jahre alt ist und keiner mehr weiß wie und warum...
Aber für ein Beispiel wie das obige, sollte man erstmal alles weglassen was in irgendeiner Form Verwirrung stiften kann oder zu unerwünschten Fehlern führt (File nicht gefunden o.ä.) und damit Frust erzeugt... *noahnung*
 
1. wir sind bei java, da heisst das methoden, nicht funktionen ;)

2. die vm sucht als erstes nach der main()

3. spaghetti-code, ist genau das was er jetzt hat, die main hat in der Klasse Person nichts zu suchen und gehört da raus...

4. ich hab ihn nicht dazu aufgefordert HIER Person{} in ein eigenes File zu schmeissen, nur ist es für spätere/größere Aufgaben sicherlich überschaubarer, mMn ;) ich wollt ihm halt tipps geben wie es besser sein könnte...
 
Ist mir schon klar dass die VM zuerst nach einer main() sucht, ich will nur wissen WO!?
- Also kann Java neuerdings mit mehtoden umgehen die im nirgendwo stehen, oder braucht es, wie ich es kenne immer eine klasse?
Denn wenn es eine klasse braucht, ist main() doch richtig positioniert, er kann es ja nicht einfach aus person{} herausziehen, oder?
 
Die Main liegt in einer extra Klasse, aber um hier mein Posting nicht unnötig aufzubohren habe ich beides zusammengelegt.

Schlage mich gerade mit MySQL im Zusammenspiel mit Java rum. Werde sicher morgen noch ein paar Fragen formulieren müssen :S
 
/edit: hier stand blödsinn

Die Main liegt in einer extra Klasse, aber um hier mein Posting nicht unnötig aufzubohren habe ich beides zusammengelegt.

Schlage mich gerade mit MySQL im Zusammenspiel mit Java rum. Werde sicher morgen noch ein paar Fragen formulieren müssen :S

"womit" (buch/online-tutorial/...) lernst du denn bzw. woher beziehst du deine informationen?
 
Zuletzt bearbeitet:
wie würde denn deiner meinung nach ein programm aussehen, das nur aus einer main besteht, also sagen wir einfach mal ein 'hello world'?!?
Code:
public class Hello {
public static void main (String[] args) {
System.out.println("Hello World");
}
}

Oder, wers noch "objektiger" mag...

Code:
public class Hello {
public void sayHello() {
System.out.println("Hello World");
}
public static void main (String[] args) {
Hello hello = new Hello();
hello.sayHello();
}
}

Damit wäre sogar der kapselung genüge getan indem die Klasse "Hello" selbst bestimmt was genau gesagt wird (es könnte ja auch "Hello Java-World" sein), ohne dass main() davon weiß oder wissen muss... main instanziiert einfach eine klasse und ruft eine Methode dieser auf....

Damit wäre deine Frage wohl beantwortet, aber wie genau bringt uns das weiter? *noahnung*
 
blödsinn, hast natürlich recht ;)
 
Zuletzt bearbeitet:
*lol* ok...bin ich doch nicht so eingerostet wie ich dachte :D
 
Stichwort "alter Code, wo keiner mehr weiß, wie und warum was gemacht wurde" - ich würde mir gleich angewöhnen, Kommentare einzubauen. Hilft einem auch selbst, den Überblick zu behalten.
 
Natürlich...
Ist auch der einzige Weg... hilft dir aber erst im Nachhinein wenn du bereits ein paar Stunten totgeschlagen hast um zu verstehen was zweitausend zeilen spaghetticode in vbscript (ASP-webseite) machen... ;D
 
Zurück
Oben Unten