Java/Uhr: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
K (10 Versionen importiert)
(akt)
Markierung: 2017-Quelltext-Bearbeitung
Zeile 1: Zeile 1:
{{gelb|
{{Box|Hinweis|
;Hinweis:
Leider verschwinden nicht alle schwarzen Striche. Ich nehme an, das sind Rechenungenauigkeiten (Rundungsfehler) der Turtlemethode.
Leider verschwinden nicht alle schwarzen Striche. Ich nehme an, das sind Rechenungenauigkeiten (Rundungsfehler) der Turtlemethode.
; Benötigt:
; Benötigt:
* if, for, Turtlegrafik, int, double
* if, for, Turtlegrafik, int, double
* BlueJ, daher keine main-Mathode
* BlueJ, daher keine main-Mathode
}}
|Hervorhebung}}
==Quelltext==
 
[[Bild:ScreenshotUhr.gif|thumb|Screenshot]]
[[Bild:ScreenshotUhr.gif|thumb|Screenshot]]
<source lang="java">
<source lang="java">
Zeile 71: Zeile 70:
}
}
</source>
</source>
==Übungen==


{{Übung|
{{Übung|
# Analysieren Sie die Klasse Uhr.  
Analysieren Sie die Klasse Uhr.  
#Klären Sie am Beispiel der Uhr folgende Begriffe:
# Klären Sie am Beispiel der Uhr folgende Begriffe:
#*Klasse, Methode, Datentyp, Parameter, Schleife (for), Bedingte Ausführung (if)
#*Klasse, Methode, Datentyp, Parameter, Schleife (for), Bedingte Ausführung (if)
# Zeichnen Sie das Klassendiagramm zur Klasse Uhr.
# 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 <code>stelleUhr(int pStunde, int pMinute)</code>, 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!)
# Implementieren Sie die Methode <code>stelleUmXMinutenVor(int x)</code>, 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).
# Ergänzen Sie die Uhr um eine Datumsangabe mit Tag und Monat. Implementieren Sie dazu auch <code>stelleDatumWeiter()</code>, die das Datum um einen Tag vorstellt. (Zur Vereinfachung vernachlässigen wir die Schaltjahre).
# Zusatzaufgabe: Ergänzen Sie eine Alarmfunktion.  
# Zusatzaufgabe: Ergänzen Sie eine Alarmfunktion.  
# Zusatzaufgabe (Übungen zur Turtlegrafik):
# Zusatzaufgabe (Übungen zur Turtlegrafik):
#*Lassen Sie ein Ziffernblatt zeichnen.
#*Lassen Sie ein Ziffernblatt zeichnen.
#*Wahrscheinlich werden Sie die folgenden Befehle benötigen:
#*Wahrscheinlich werden Sie die folgenden Befehle benötigen:
#*fuelleKreis(double radius)
#* <code>fuelleKreis(double radius)</code>
#*schreibe(String text)
#* <code>schreibe(String text)<code>
}}
}}


==Weblinks==
* http://www.zitadelle.juel.nw.schule.de/if/java/P2.1/DigUhr.html
==Siehe auch==
* [[Java]]
* [[Informatik]]




[[Kategorie:Java]]
[[Kategorie:Java]]
[[Kategorie:Linksammlung]]
[[Kategorie:Unterrichtsidee]]
[[Kategorie:Unterrichtsideen/Informatik]]
[[Kategorie:Informatik]]

Version vom 19. August 2019, 06:05 Uhr

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
Screenshot
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.

  1. Klären Sie am Beispiel der Uhr folgende Begriffe:
    • Klasse, Methode, Datentyp, Parameter, Schleife (for), Bedingte Ausführung (if)
  2. Zeichnen Sie das Klassendiagramm zur Klasse Uhr.
  3. 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.
  4. Implementieren Sie die Methode stelleUmXMinutenVor(int x), die die Uhrzeit um x-Minuten verstellt. (Hinweis: es gibt zumindest 2 völlig verschiedene Lösungswege!)
  5. 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).
  6. Zusatzaufgabe: Ergänzen Sie eine Alarmfunktion.
  7. Zusatzaufgabe (Übungen zur Turtlegrafik):
    • Lassen Sie ein Ziffernblatt zeichnen.
    • Wahrscheinlich werden Sie die folgenden Befehle benötigen:
    • fuelleKreis(double radius)
    • schreibe(String text)