Java/Uhr
Aus ZUM-Unterrichten
< Java
Hinweis
Leider verschwinden nicht alle schwarzen Striche. Ich nehme an, das sind Rechenungenauigkeiten (Rundungsfehler) der Turtlemethode.
- Benötigt
- if, for, Turtlegrafik, int, double
- BlueJ, daher keine main-Mathode
public class Uhr
{
private int minute;
private int stunde;
private Turtle t;
public Uhr(int pStunde, int pMinute)
{
if (stunde==0) {
stunde=12;
}
minute=pMinute;
stunde=pStunde;
t=new Turtle();
t.drehe(-90);
t.zeige();
}
public void laufe15Sekunden(){
for (int k=1;k<=15;k++){
zeichneUhr(100,8); // 8 entspr. weiß
stelleWeiter();
zeichneUhr(100,0); // 0 entspr. schwarz
t.ruhe(1000);
}
}
public void stelleWeiter()
{
minute++;
if (minute>59) {
minute=0;
stunde++;
if (stunde>12) {
stunde=1;
}
}
}
public void zeichneUhr(double pZeigerlaenge, int pFarbe){
t.setzeFarbe(pFarbe);
t.drehe(minute*360/60);
t.vor(pZeigerlaenge);
t.vor(-pZeigerlaenge);
t.drehe(-minute*360/60);
t.drehe(stunde*360/12);
t.vor(pZeigerlaenge*0.8);
t.vor(-pZeigerlaenge*0.8);
t.drehe(-stunde*360/12);
}
public int gibVergangeneMinutenSeitMitternacht() {
int zwischenspeicher;
zwischenspeicher = minute + stunde * 60;
return zwischenspeicher;
}
public void schreibeUhrzeit() {
System.out.println("Es ist "+stunde+":"+minute+", das ist "+gibVergangeneMinutenSeitMitternacht()+" Minuten nach Mitternacht");
}
}
Übung
Analysieren Sie die Klasse Uhr.
- Klären Sie am Beispiel der Uhr folgende Begriffe:
- Klasse, Methode, Datentyp, Parameter, Schleife (for), Bedingte Ausführung (if)
- Zeichnen Sie das Klassendiagramm zur Klasse Uhr.
- Implementieren Sie die Methode
stelleUhr(int pStunde, int pMinute)
, die die Uhrzeit auf die angegebenen Parameter verstellt. Das soll aber nur dann geschehen, wenn eine gültige Uhrzeit übergeben wurde (Stunden bis max. 12 und Minuten bis 59). Falls als Stunde 0 angegeben wurde, soll der Wert auf 12 gestellt werden. - Implementieren Sie die Methode
stelleUmXMinutenVor(int x)
, die die Uhrzeit um x-Minuten verstellt. (Hinweis: es gibt zumindest 2 völlig verschiedene Lösungswege!) - Ergänzen Sie die Uhr um eine Datumsangabe mit Tag und Monat. Implementieren Sie dazu auch
stelleDatumWeiter()
, die das Datum um einen Tag vorstellt. (Zur Vereinfachung vernachlässigen wir die Schaltjahre). - Zusatzaufgabe: Ergänzen Sie eine Alarmfunktion.
- Zusatzaufgabe (Übungen zur Turtlegrafik):
- Lassen Sie ein Ziffernblatt zeichnen.
- Wahrscheinlich werden Sie die folgenden Befehle benötigen:
fuelleKreis(double radius)
schreibe(String text)