|
|
Zeile 1: |
Zeile 1: |
| {{Box|Hinweis|
| | #redirect [[Java/Turtle-Grafik#Uhr]] |
| 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
| |
| |Hervorhebung}}
| |
| | |
| [[Bild:ScreenshotUhr.gif|thumb|Screenshot]] | |
| <source lang="java">
| |
| 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");
| |
| }
| |
| }
| |
| </source>
| |
| | |
| {{Ü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 <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 <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 <code>stelleDatumWeiter()</code>, 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:
| |
| #* <code>fuelleKreis(double radius)</code>
| |
| #* <code>schreibe(String text)</code>
| |
| }}
| |
| | |
| | |
| | |
| [[Kategorie:Java]]
| |
| [[Kategorie:Unterrichtsidee]]
| |
| [[Kategorie:Informatik]]
| |