Java Eingabe aus einer anderen Klasse in eine andere an Konstruktor übergeben

itS

Mitglied
Hallo, ich habe ein kleines Problem …

Wir sollen einen „Termin(kalender)“ mit insgesamt 3 Klassen erstellen. Wir dürfen keine Standardklassen verwenden.

1. Klasse Termin
2. Klasse Datum
3. Klasse Uhrzeit

Ich habe die Klassen Uhrzeit und Datum soweit fertig … nun soll es in der Klasse Termin eine Eingabemöglichkeit für „Datum“, „Uhrzeit beginn“, „Uhrzeit ende“ und „Beschreibung“ geben.

Ich habe aber leider absolut keine Ahnung wie ich diese übergeben soll. Ich habe in der Klasse „Datum“ bspw. einen Konstruktor erstellt, der vom User die Eingabe von einem Tag (t), einem Monat (m) und einem Jahr (j) verlangt und diese auf Richtigkeit (sprich 31 bzw. 30 Tage Monat … Schaltjahre etc.) überprüft. Nun möchte ich gerne auf diesen Konstruktor aus der anderen Klasse „Termin“ zugreifen … allerdings wird das nicht so einfach sein wie ich es mir vorgestellt habe … oder?

Auszug aus Klasse Termin:
Java:
public Termin(String beschreibung, Datum datum, Uhrzeit beginn, Uhrzeit ende)
    {
        this.beschreibung = beschreibung;
        this.datum = datum;
        this.beginn = beginn;
        this.ende = ende;
    }

Auszug aus Klasse Datum:

Java:
public class Datum
{
    private int tage;
    private int monate;
    private int jahre;

    public void konstruktorDatum(int t, int m, int j) 
    {
...
}
wenn ich jetzt etwas eingebe (den String Beschreibung in „“ gesetzt … und die Bestandteile vom Datum durch , getrennt … erhalte ich immer die Fehlermeldung: „Error: <identifier> expected.

Kann mir jemand von euch helfen? (Ich will noch dazusagen dass es sich hierbei um keine Hausübung handelt … wir sind im Unterricht gerademal bei if und else und dieses Bsp. ist eine Freiwillige Übung, wenn jemand schon mehr machen will.)

Vielen Dank! 🙂
 
Überlege Dein Konzept noch einmal genau.

Das Datum und die Uhrzeit sind doch Bestandteil des Termins würde ich sagen. Also hat die Klasse Termin drei Attribute:

Datum, Uhrzeit, Beschreibung

Der Termin bekommt also im Konstruktor genau diese drei Parameter.

Das Datum braucht Tag, Monat und Jahr (sicher nicht Jahre es ist ja nur ein Datum)

Die Uhrzeit Stunden, Minuten und eventuell Sekunden.

Diese drei Klassen solltest du so unabhängig voneinander erstellen. Mit genau diesen Attributen und diese Attribute auch als Parameter im Konstruktor.

Um es jetzt richtig schön zu machen, würde ich noch eine Klasse TerminKalender erstellen, welche in der main() instanziert wird (new TerminKalender) und die die Methode addTermin() hat.

Du rufst dann in der main() dieses addTermin vom Terminkalender auf um einen Termin hinzuzufügen.

Die addTermin() erfragt dann erst einmal das Datum und erstellt daraus ein Datum. Das Gleiche macht es mit der Uhrzeit und dann erfragt es noch die Beschreibung und erstellt aus diesen drei Variablen dann einen Termin.

Gruß

Claus
 
Hallo Claus,

vielen herzlichen Dank für deine genaue Antwort 🙂

Das ist in der Angabe bei uns leider ziemlich genau vorgegeben.

Erstelle die folgenden Klassen Termin, Datum und Uhrzeit, wobei die Klasse Termin die beiden
anderen Klassen verwendet. (Es handelt sich hier um ein Übungsbeispiel – in einem echten
Programm würde man so etwas anders lösen.) Alle Namen der Klassen, Attribute und Methoden sind
genau aus dem UML-Diagramm zu übernehmen. Neben den geforderten Methoden kann jede Klasse
noch zusätzliche Hilfsmethoden enthalten. Diese sollen jedoch private sein. Es dürfen keine weiteren
Klassen verwendet werden.

Anhang anzeigen 6985

Kann natürlich sein dass ich es trotzdem falsch gemacht habe. 😳
 
Zuletzt bearbeitet:
So vielleicht oder wie jetzt?

Java:
public class Uhrzeit {
	int stunde,minute,sekunde;
	public Uhrzeit(){
		 stunde = wiemanhaltdiestundetabfragt();
		 minute = wiemanhaltdieminuteabfragt();
		 sekunde = wiemanhaltdiesekundeabfragt();
		
	}
   public String toString(){
	   String c = stunde + "." + minute + "." + sekunde;
	   return c;
   }
}
 
..... Ich habe in der Klasse „Datum“ bspw. einen Konstruktor erstellt, der vom User die Eingabe von einem Tag (t), einem Monat (m) und einem Jahr (j) verlangt ....

Java:
public void konstruktorDatum(int t, int m, int j) 
{
   ....
}

Achtung, was du hier hast ist kein Konstruktor (nur weil du der Methode "konstruktor" in den Namen schreibst).
Schaue doch nochmal in den Grundlagen nach was ein Konstruktor ist. 🙂
 

Zurück
Oben