03_Praktikum_ZeitanzeigeEin.../Uhrenanzeige.java

127 lines
3.4 KiB
Java
Raw Permalink Normal View History

2017-09-17 17:06:04 +02:00
/**
* 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;
2021-10-09 16:14:12 +02:00
private int sekundenLimit;
private int sekundenWert;
2017-09-17 17:06:04 +02:00
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;
2021-10-09 16:14:12 +02:00
sekundenLimit = 60;
sekundenWert = 0;
2017-09-17 17:06:04 +02:00
anzeigeAktualisieren();
}
/**
* Konstruktor fuer ein Exemplar von Uhrenanzeige.
* Mit diesem Konstruktor wird die Anzeige auf den Wert
* initialisiert, der durch 'stunde' und 'minute'
* definiert ist.
*/
2021-10-09 16:14:12 +02:00
public Uhrenanzeige(int stunde, int minute, int sekunde)
2017-09-17 17:06:04 +02:00
{
stundenLimit = 24;
stundenWert = 0;
minutenLimit = 60;
minutenWert = 0;
2021-10-09 16:14:12 +02:00
sekundenLimit = 60;
sekundenWert = 0;
setzeUhrzeit(stunde, minute, sekunde);
2017-09-17 17:06:04 +02:00
}
/**
* Diese Operation sollte einmal pro Minute aufgerufen werden -
* sie sorgt dafuer, dass diese Uhrenanzeige um eine Minute
* weiter gestellt wird.
*/
public void taktsignalGeben()
{
2021-10-09 16:14:12 +02:00
sekundenWert = (sekundenWert + 1) % sekundenLimit;
if(sekundenWert == 0) {
minutenWert = (minutenWert + 1) % minutenLimit;
if (minutenWert == 0) { // Limit wurde erreicht!
stundenWert = (stundenWert + 1) % stundenLimit;
}
2017-09-17 17:06:04 +02:00
}
anzeigeAktualisieren();
}
/**
* Setze die Uhrzeit dieser Anzeige auf die gegebene 'stunde' und
* 'minute'.
*/
2021-10-09 16:14:12 +02:00
public void setzeUhrzeit(int stunde, int minute, int sekunde)
2017-09-17 17:06:04 +02:00
{
if((stunde >= 0) && (stunde < stundenLimit)) {
stundenWert = stunde;
}
if((minute >= 0) && (minute < minutenLimit)) {
minutenWert = minute;
}
2021-10-09 16:14:12 +02:00
if((sekunde >= 0) && (sekunde < sekundenLimit)) {
sekundenWert = sekunde;
}
2017-09-17 17:06:04 +02:00
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()
{
2021-10-09 16:14:12 +02:00
if(stundenWert < 16) {
zeitanzeige = "0" + Integer.toHexString(stundenWert);
}
else {
zeitanzeige = "" + Integer.toHexString(stundenWert);
}
zeitanzeige = zeitanzeige + ":";
if(minutenWert < 16) {
zeitanzeige = zeitanzeige + "0" + Integer.toHexString(minutenWert);
2017-09-17 17:06:04 +02:00
}
else {
2021-10-09 16:14:12 +02:00
zeitanzeige = zeitanzeige + Integer.toHexString(minutenWert);
2017-09-17 17:06:04 +02:00
}
zeitanzeige = zeitanzeige + ":";
2021-10-09 16:14:12 +02:00
if(sekundenWert < 16) {
zeitanzeige = zeitanzeige + "0" + Integer.toHexString(sekundenWert);
2017-09-17 17:06:04 +02:00
}
else {
2021-10-09 16:14:12 +02:00
zeitanzeige = zeitanzeige + Integer.toHexString(sekundenWert);
2017-09-17 17:06:04 +02:00
}
}
}