diff --git a/README.TXT b/README.TXT new file mode 100644 index 0000000..aa2330e --- /dev/null +++ b/README.TXT @@ -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. \ No newline at end of file diff --git a/Uhrenanzeige.java b/Uhrenanzeige.java new file mode 100644 index 0000000..e5b5348 --- /dev/null +++ b/Uhrenanzeige.java @@ -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; + } + } +} diff --git a/package.bluej b/package.bluej new file mode 100644 index 0000000..d453383 --- /dev/null +++ b/package.bluej @@ -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