Uhr programmieren

Hi muss das hier programmieren weiß aber nicht was da noch fehlt.

Schreiben Sie eine Klasse Uhr mit parameterlosem Konstruktor, der eine auf 0:00 Uhr eingestellte Uhr erstellt.
Die Klasse Uhr soll weiters u ̈ber folgende Methoden verfu ̈gen:

public int getStunden(),
public int getMinuten ()

geben die eingestellten Stunden bzw. Minuten der Uhr zuru ̈ck.

public void tick ()

soll die Uhrzeit um eine Minute erho ̈hen (wobei z.B. von 3:59h auf 4:00h und von 23:59h auf 0:00h erho ̈ht werden soll).

public boolean setStunden(int stunden),
public boolean setMinuten(int minuten)

setzen die Stunden bzw. Minuten der Uhr neu. Falls ein ungu ̈ltiger Wert eingegeben wurde, soll die Einstellung der Uhr unver ̈andert bleiben und false zuru ̈ckgegeben werden. Sonst soll sie Methode true zuru ̈ckgeben.

Verfassen Sie weiters eine Klasse Uhrmacher

mit Konstruktor public Uhrmacher(Uhr referenzUhr),

der einen Uhrmacher mit einer Referenzuhr erstellt. Schreiben Sie in die Klasse Uhrmacher weiters eine Methode
public void setTime(Uhr eineUhr),die die Zeit von eineUhr auf die Zeit der Referenzuhr einstellt.

Code:
Das hier für die Uhr:

public class Uhr
{
private int stunden;
private int minuten;
private  boolean stundenanzeige;
private boolean minutenanzeige;

public int getStunden()
{
    
return stunden;
}
public int getMinuten()
{
    
return minuten;
}

public void tick()
{
minuten=(minuten+1) ;
}
public boolean setStunden(int stunden)
{
    if(stunden<24){
    stundenanzeige=true;
    }
    else
    {
    stundenanzeige=false;
    }
return stundenanzeige;

}
public boolean setMinuten(int minuten)
{
    if(minuten<60)
    {
    minutenanzeige=true;
    }else{
    minutenanzeige=false;
    }
    
    return minutenanzeige;
    
}
}



Und das hier für die Klasse Uhrmacher:
public class Uhrmacher
{
    
    public Uhrmacher(Uhr referenzUhr)
    {
        
}

}
Was kann ich da machen?? Stimmt die Klasse UHR so?

Und beim UHRMACHER wie gehe ich da weiter vor?

Bin Neuling.

Danke
 
Nun ja das stimmt noch nicht ganz. Deine tick Methode macht noch nicht das, was eine Uhr eigentlich machen soll.
Was passiert denn (mit der Stunde), wenn Minute = 60 ist? Und was ist danach die Minute?

In deinen Setter Methoden für Stunden / Minuten brauchst du nicht extra boolsche Instanzvariablen anlegen. Du kannst auch so - ohne Variable - testen, ob stunden < 24 ist und true/false zurückgeben. Außerdem musst du die Stunden noch setzen. Selbes gilt für die Minuten.

Schreiben Sie in die Klasse Uhrmacher weiters eine Methode
public void setTime(Uhr eineUhr),die die Zeit von eineUhr auf die Zeit der Referenzuhr einstellt.
Steht ja quasi 1:1 da was du machen sollst. Wo hängt es?
 
Ums mal sprachlich zu beschreiben
Code:
Wenn minute > 59, dann setze minute auf 0 und erhöhe Stunde um 1. Wenn Stunde > 24 setze Stunde auf 0.
 
Code:
public void tick()
{
    if(stunden>23){
     stunden =0;
    }
    if(minuten>59){
        minuten=0 + stunden+1;
    }
Passt nicht oder ? Hab zwar keinen Fehler aber wenn ich && bei stunden+1 nehme, dann meint er, ich darf keinen int verwenden.
 
Mal ganz einfach:
Code:
Erhöhe die Minuten
Falls die Minuten 60 erreicht haben, dann
    müssen sie wieder auf 0 zurückgestellt werden
    und die Stunde rückt vor
    Falls die Stunde 24 zählt, dann
        muss sie wieder auf 0 zurückgestellt werden.
 
Ich verstehe schon aber wie schreib ich das, dass es richtig da steht?
Code:
{
    if(stunden=24){
     stunden =0;
    }
    if(minuten=60){
        minuten=0 + stunden+1;
    }
 
Also mit "=" hat meine Zuweisung. Der Vergleich ist durch "==" gegeben.

Desweiteren musst Du den Wert ja nur prüfen, wenn er verändert / gesetzt wird.

Also erst wenn Du minuten hochgezählt hast (also z.B. ein minuten++; gemacht hast), musst Du die Minuten prüfen, denn nur dann können sie 60 sein.
Und das sind dann mehrere Befehle nacheinander, also erst minuten auf 0 stellen, stunden um eins erhöhen und dann stunden prüfen.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben