Methode vom Typ einer Klasse!?

JimPanse24

Mitglied
hallo,

über die Ferien muss ich paar Programmieraufgaben für die Schule machen und hab dazu einige, immernoch ungeklärte Fragen!
Das zu schreibende Projekt hat 3 Klassen, nämlich Datum, Person und Geburtstagskalender

[JAVA=42]

public class Datum
{
java.util.GregorianCalendar cal =new java.util.GregorianCalendar();

public Datum (int tag, int monat, int jahr)
{
....
}
.
.
. // hier stehen die Mehtoden
.
}

[/code]


[JAVA=42]

public class Person
{
...

public Person (String name, Datum geburtstag, boolean istWeiblich)
{
...

}

.
.
. // Methoden
.
}
[/code]

[JAVA=42]

public class Geburtstagskalender
{
public Geburtstagskalender(int maxAnzahl)
{
...
}
.
.
. // Methoden
.
}
[/code]


Eine weitere Klasse TEST wurde uns vorgegeben! Sie startet das Programm und verwendet unsere selber geschriebenen Klassen/Methoden.

[JAVA=42]

import java.util.StringTokenizer;

public class TEST
{
public static void main(String[] args)
{

int groesse = Input.readInt("Groesse des Geburtstagskalenders: ");

Geburtstagskalender gebliste = new Geburtstagskalender(groesse);

.
.
.
.

}



private static Person personEinlesen() {



String name = Input.readString("Name: ");



Datum geburtstag = leseGeburtsdatum();


.
.
.
.
.


return new Person(name, geburtstag, (geschlecht.equals("w")));
}


public static Datum leseGeburtsdatum() {



String gebDatum;

.
.
.
.
.

int tag = Integer.parseInt(gebTokenzier.nextToken());
int monat = Integer.parseInt(gebTokenzier.nextToken());
int jahr = Integer.parseInt(gebTokenzier.nextToken());

return new Datum(tag, monat, jahr);
}



}

[/code]


Mein Problem ist jetzt, dass ich partu nicht verstehe, warum die Methode "private static Person personEinlesen()" als Typ "Person" hat, also einen andere Klasse!?! Wie funktioniert das?

Weiter gehts in der Methode mit "Datum geburtstag"! Geburtstag vom Typ Datum? hä, versteh das nicht! Außerdem wurde der String(oder was es auch immer ist) geburtstag noch nie vorher irgendwo erwähnt!

Ganz unten in der Methode dann "return new Person"! Ich kenne bis jetzt nur return, aber was ist return new?

In der nächsten Methode dann das ganze nochmal!

Google hat mir irgendwie nicht geholfen, weil ich auch gar nicht weiß, nach was zu suchen ist! Und auch in den ausgeteilten Aufschrieben kann ich nichts finden!

So, ich hoffe ihr versteht meine Fragen und könnt mir helfen!

Allen ein frohes Fest!
 
Mein Problem ist jetzt, dass ich partu nicht verstehe, warum die Methode "private static Person personEinlesen()" als Typ "Person" hat, also einen andere Klasse!?! Wie funktioniert das?

das hat nichts mit der Klasse zu tun, in der die Methode steht, sondern ist einfach der Rückgabetyp der Methode. D.h. die Methode personEinlesen liefert ein Objekt vom Typ Person

Weiter gehts in der Methode mit "Datum geburtstag"! Geburtstag vom Typ Datum? hä, versteh das nicht! Außerdem wurde der String(oder was es auch immer ist) geburtstag noch nie vorher irgendwo erwähnt!

weiß grad nicht, welche Methode du meinst 🙂. aber das deckt sich glaube dann mit deiner ersten Frage.

Ganz unten in der Methode dann "return new Person"! Ich kenne bis jetzt nur return, aber was ist return new?

das kommt auch sehr nahe an deine ersten Fragen 🙂. mit new erzeugst/instanziierst du eine neues Objekt von der Klasse. In dem Fall von der Klasse Person.
 
Vielen Dank für die schnelle Antwort!

Habe es auch teilweise verstanden 🙂

Dann hätte die Methode also auch so aussehen können;

[JAVA=42]

private static String personEinlesen() {

Person p1 = new Person();

.
.
.
.
.
.

return p1;
}
[/code]

Bei der vorgegebnen Variante wird das Objekt halt erst mit dem return erzeugt?

Was ich aber noch gar nicht verstehe, ist das "Datum geburtstag = leseGeburtsdatum();"

Es fällt mir sogar schwer, dazu eine Frage zu formulieren, weil ich überhaupt nichts damit anzufangen weiß! Vorne steht eine Klasse und hinten irgendwas, da könnt ich "bla" hinschreiben! Ohne zu initialisieren, deklarieren oder sonst was! :bahnhof:
 
Java:
public class Datum
{
    java.util.GregorianCalendar cal =new java.util.GregorianCalendar();
    
    public Datum (int tag, int monat, int jahr){}

}


Java:
public static Datum leseGeburtsdatum() {

        String gebDatum;
        
        int tag = Integer.parseInt(gebTokenzier.nextToken());
        int monat = Integer.parseInt(gebTokenzier.nextToken());
        int jahr = Integer.parseInt(gebTokenzier.nextToken());
        
       return new Datum(tag, monat, jahr);
    }

Beim Aufruf der Methode leseGeburtsdatum() werden paar int Werte festgelegt (tag, monat, jahr) und dann ein Objekt der Klasse Datum mit eben diesen int werten als Parameter erzeugt (diese werden ja im Konstruktor der Klasse Datum erwartet, siehe oben).

Java:
Datum geburtstag = leseGeburtsdatum();

Datum ist ja nur der "Datentyp", vllt verstehste es dann eher, und der Rückgabe Wert von leseGeburtsdatum() ist ja ein Datum Objekt.

das mim Tokenizer, woher da die int Werte kommen ist mir grad nich ganz klar (vllt in deinem !übersichtlichen code übersehn xD)

Grüße
 
Zuletzt bearbeitet:
in meinem !übersichtlichen Code 😀 😀

ok, Datum ist der Rückgabetyp! Von welchem Typ ist dieses "Datum" eigentlich? Int? Weil nur ints übergeben werden?
Aber was ist das "geburtstag" hinter dem "Datum"? Ein Objekt? Das nirgends erstellt wurde? Da könnte man auch irgendwas anderes hinschreiben und es würde gehen! Werden in der ??Variablen?? geburtstag die drei ints gespeichert? Sowas wie ein Array ???:L

Das mit dem Tokenizer weiß ich auch net! Hat der Lehrer gemacht und solang es funktioniert 🙂
 
Java:
Datum geburtstag = leseGeburtsdatum();

Datum ist die Klasse (vereinfacht einfach mal "Datentyp")
geburtstag ist der Name des Objekts (vereinfacht variabelnname so wie int x = 5; x entspräche geburtstag)

und leseGeburtsdatum() gibt ja zurück new Datum(tag, monat, jahr); also steht da eigentlich

Java:
Datum geburtstag = new Datum(tag, monat, jahr);

Gruß
 

Zurück
Oben