Initial commit of the source files.
This commit is contained in:
parent
8536335b71
commit
546b8c85d7
|
@ -0,0 +1,23 @@
|
||||||
|
Projekt: Zeitanzeige
|
||||||
|
Autoren: David Barnes und Michael Kölling
|
||||||
|
|
||||||
|
Dieses Projekt ist Teil des Zusatzmaterials zum Buch
|
||||||
|
|
||||||
|
Java lernen mit BlueJ - eine Einführung in die
|
||||||
|
objektorientierte Programmierung, 5. Auflage
|
||||||
|
David J. Barnes und Michael Kölling
|
||||||
|
Pearson Education Deutschland, 2012
|
||||||
|
|
||||||
|
Startpunkt: Erzeugen Sie ein Exemplar der Klasse Uhrenanzeige.
|
||||||
|
Untersuchen Sie es mit dem Objektinspektor und lassen Sie das Fenster
|
||||||
|
offen. Wenn Sie nun Operationen wie 'taktsignalGeben' oder 'setzeUhrzeit'
|
||||||
|
auf diesem Exemplar aufrufen, können sie im Inspektor-Fenster beobachten,
|
||||||
|
wie sich die Exemplarvariable 'zeitanzeige' verändert.
|
||||||
|
|
||||||
|
Diese Exemplarvariable simuliert die Anzeige einer Uhr. Wenn dieses
|
||||||
|
Programm Teil einer richtigen Uhr wäre, dann würde statt dieser
|
||||||
|
Zeichenkette die echte, physische Ausgabe verändert werden. Alles
|
||||||
|
andere könnte aber ziemlich genauso aussehen.
|
||||||
|
|
||||||
|
Hinweis: In diesem Projekt ist keine angemessene Fehlerbehandlung
|
||||||
|
implementiert.
|
|
@ -0,0 +1,107 @@
|
||||||
|
/**
|
||||||
|
* Die Klassen Uhrenanzeige implementiert die Anzeige einer Digitaluhr.
|
||||||
|
* Die Anzeige zeigt Stunden und Minuten. Der Anzeigebereich reicht von
|
||||||
|
* 00:00 (Mitternacht) bis 23:59 (eine Minute vor Mitternacht).
|
||||||
|
*
|
||||||
|
* Eine Uhrenanzeige sollte minütlich "Taktsignale" (über die Operation
|
||||||
|
* "taktsignalGeben") erhalten, damit sie die Anzeige aktualisieren
|
||||||
|
* kann. Dies geschieht, wie man es bei einer Uhr erwartet: Die
|
||||||
|
* Stunden erhöhen sich, wenn das Minutenlimit einer Stunde erreicht
|
||||||
|
* ist.
|
||||||
|
*
|
||||||
|
* @author Michael Kölling und David J. Barnes
|
||||||
|
* @version 31.07.2011
|
||||||
|
*/
|
||||||
|
public class Uhrenanzeige
|
||||||
|
{
|
||||||
|
private int stundenLimit;
|
||||||
|
private int stundenWert;
|
||||||
|
private int minutenLimit;
|
||||||
|
private int minutenWert;
|
||||||
|
private String zeitanzeige; // simuliert die tatsaechliche Anzeige
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Konstruktor fuer ein Exemplar von Uhrenanzeige.
|
||||||
|
* Mit diesem Konstruktor wird die Anzeige auf 00:00 initialisiert.
|
||||||
|
*/
|
||||||
|
public Uhrenanzeige()
|
||||||
|
{
|
||||||
|
stundenLimit = 24;
|
||||||
|
stundenWert = 0;
|
||||||
|
minutenLimit = 60;
|
||||||
|
minutenWert = 0;
|
||||||
|
anzeigeAktualisieren();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Konstruktor fuer ein Exemplar von Uhrenanzeige.
|
||||||
|
* Mit diesem Konstruktor wird die Anzeige auf den Wert
|
||||||
|
* initialisiert, der durch 'stunde' und 'minute'
|
||||||
|
* definiert ist.
|
||||||
|
*/
|
||||||
|
public Uhrenanzeige(int stunde, int minute)
|
||||||
|
{
|
||||||
|
stundenLimit = 24;
|
||||||
|
stundenWert = 0;
|
||||||
|
minutenLimit = 60;
|
||||||
|
minutenWert = 0;
|
||||||
|
setzeUhrzeit(stunde, minute);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Diese Operation sollte einmal pro Minute aufgerufen werden -
|
||||||
|
* sie sorgt dafuer, dass diese Uhrenanzeige um eine Minute
|
||||||
|
* weiter gestellt wird.
|
||||||
|
*/
|
||||||
|
public void taktsignalGeben()
|
||||||
|
{
|
||||||
|
minutenWert = (minutenWert + 1) % minutenLimit;
|
||||||
|
if(minutenWert == 0) { // Limit wurde erreicht!
|
||||||
|
stundenWert = (stundenWert + 1) % stundenLimit;
|
||||||
|
}
|
||||||
|
anzeigeAktualisieren();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setze die Uhrzeit dieser Anzeige auf die gegebene 'stunde' und
|
||||||
|
* 'minute'.
|
||||||
|
*/
|
||||||
|
public void setzeUhrzeit(int stunde, int minute)
|
||||||
|
{
|
||||||
|
if((stunde >= 0) && (stunde < stundenLimit)) {
|
||||||
|
stundenWert = stunde;
|
||||||
|
}
|
||||||
|
if((minute >= 0) && (minute < minutenLimit)) {
|
||||||
|
minutenWert = minute;
|
||||||
|
}
|
||||||
|
anzeigeAktualisieren();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Liefere die aktuelle Uhrzeit dieser Uhrenanzeige im Format SS:MM.
|
||||||
|
*/
|
||||||
|
public String gibUhrzeit()
|
||||||
|
{
|
||||||
|
return zeitanzeige;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aktualisiere die interne Zeichenkette, die die Zeitanzeige haelt.
|
||||||
|
*/
|
||||||
|
private void anzeigeAktualisieren()
|
||||||
|
{
|
||||||
|
if(stundenWert < 10) {
|
||||||
|
zeitanzeige = "0" + stundenWert;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
zeitanzeige = "" + stundenWert;
|
||||||
|
}
|
||||||
|
zeitanzeige = zeitanzeige + ":";
|
||||||
|
if(minutenWert < 10) {
|
||||||
|
zeitanzeige = zeitanzeige + "0" + minutenWert;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
zeitanzeige = zeitanzeige + minutenWert;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
#BlueJ package file
|
||||||
|
package.editor.height=533
|
||||||
|
package.editor.width=941
|
||||||
|
package.editor.x=1028
|
||||||
|
package.editor.y=164
|
||||||
|
package.numDependencies=0
|
||||||
|
package.numTargets=1
|
||||||
|
package.showExtends=true
|
||||||
|
package.showUses=true
|
||||||
|
project.charset=UTF-8
|
||||||
|
readme.editor.height=526
|
||||||
|
readme.editor.width=748
|
||||||
|
readme.editor.x=0
|
||||||
|
readme.editor.y=0
|
||||||
|
target1.editor.height=1024
|
||||||
|
target1.editor.width=795
|
||||||
|
target1.editor.x=16
|
||||||
|
target1.editor.y=22
|
||||||
|
target1.height=50
|
||||||
|
target1.name=Uhrenanzeige
|
||||||
|
target1.naviview.expanded=false
|
||||||
|
target1.showInterface=false
|
||||||
|
target1.type=ClassTarget
|
||||||
|
target1.width=100
|
||||||
|
target1.x=70
|
||||||
|
target1.y=40
|
Loading…
Reference in New Issue