Initial commit of the source files.
This commit is contained in:
parent
4b315c6ee8
commit
bd00165af0
|
@ -0,0 +1,74 @@
|
||||||
|
/**
|
||||||
|
* Die Klasse Nummernanzeige repräsentiert Darstellungen von
|
||||||
|
* digitalen Werten, die von null bis zu einem vorgegebenen Limit
|
||||||
|
* reichen können. Das Limit wird definiert, wenn eine Nummernanzeige
|
||||||
|
* erzeugt wird. Die darstellbaren Werte reichen von null bis Limit-1.
|
||||||
|
* Wenn beispielsweise eine Nummernanzeige für die Sekunden einer
|
||||||
|
* digitalen Uhr verwendet werden soll, würde man ihr Limit auf 60
|
||||||
|
* setzen, damit die dargestellten Werte von 0 bis 59 reichen.
|
||||||
|
* Wenn der Wert einer Nummernanzeige erhöht wird, wird bei Erreichen
|
||||||
|
* des Limits der Wert automatisch auf null zurückgesetzt.
|
||||||
|
*
|
||||||
|
* @author Michael Kölling und David J. Barnes
|
||||||
|
* @version 31.07.2011
|
||||||
|
*/
|
||||||
|
public class Nummernanzeige
|
||||||
|
{
|
||||||
|
private int limit;
|
||||||
|
private int wert;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Konstruktor für Exemplare der Klasse Nummernanzeige.
|
||||||
|
* Setzt das Limit, bei dem die Anzeige zurückgesetzt wird.
|
||||||
|
*/
|
||||||
|
public Nummernanzeige(int anzeigeLimit)
|
||||||
|
{
|
||||||
|
limit = anzeigeLimit;
|
||||||
|
wert = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Liefere den aktuellen Wert als int.
|
||||||
|
*/
|
||||||
|
public int gibWert()
|
||||||
|
{
|
||||||
|
return wert;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Liefere den Anzeigewert, also den Wert dieser Anzeige als
|
||||||
|
* einen String mit zwei Ziffern. Wenn der Wert der Anzeige
|
||||||
|
* kleiner als zehn ist, wird die Anzeige mit einer führenden
|
||||||
|
* null eingerückt.
|
||||||
|
*/
|
||||||
|
public String gibAnzeigewert()
|
||||||
|
{
|
||||||
|
if(wert < 10) {
|
||||||
|
return "0" + wert;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "" + wert;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setze den Wert der Anzeige auf den angegebenen 'ersatzwert'.
|
||||||
|
* Wenn der angegebene Wert unter null oder über dem Limit liegt,
|
||||||
|
* tue nichts.
|
||||||
|
*/
|
||||||
|
public void setzeWert(int ersatzwert)
|
||||||
|
{
|
||||||
|
if((ersatzwert >= 0) && (ersatzwert < limit)) {
|
||||||
|
wert = ersatzwert;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erhöhe den Wert um eins. Wenn das Limit erreicht ist, setze
|
||||||
|
* den Wert wieder auf null.
|
||||||
|
*/
|
||||||
|
public void erhoehen()
|
||||||
|
{
|
||||||
|
wert = (wert + 1) % limit;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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,87 @@
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 Nummernanzeige stunden;
|
||||||
|
private Nummernanzeige minuten;
|
||||||
|
private String zeitanzeige; // simuliert die tatsächliche Anzeige
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Konstruktor für ein Exemplar von Uhrenanzeige.
|
||||||
|
* Mit diesem Konstruktor wird die Anzeige auf 00:00 initialisiert.
|
||||||
|
*/
|
||||||
|
public Uhrenanzeige()
|
||||||
|
{
|
||||||
|
stunden = new Nummernanzeige(24);
|
||||||
|
minuten = new Nummernanzeige(60);
|
||||||
|
anzeigeAktualisieren();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Konstruktor für 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)
|
||||||
|
{
|
||||||
|
stunden = new Nummernanzeige(24);
|
||||||
|
minuten = new Nummernanzeige(60);
|
||||||
|
setzeUhrzeit(stunde, minute);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Diese Operation sollte einmal pro Minute aufgerufen werden -
|
||||||
|
* sie sorgt dafür, dass diese Uhrenanzeige um eine Minute
|
||||||
|
* weiter gestellt wird.
|
||||||
|
*/
|
||||||
|
public void taktsignalGeben()
|
||||||
|
{
|
||||||
|
minuten.erhoehen();
|
||||||
|
if(minuten.gibWert() == 0) { // Limit wurde erreicht!
|
||||||
|
stunden.erhoehen();
|
||||||
|
}
|
||||||
|
anzeigeAktualisieren();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setze die Uhrzeit dieser Anzeige auf die gegebene 'stunde' und
|
||||||
|
* 'minute'.
|
||||||
|
*/
|
||||||
|
public void setzeUhrzeit(int stunde, int minute)
|
||||||
|
{
|
||||||
|
stunden.setzeWert(stunde);
|
||||||
|
minuten.setzeWert(minute);
|
||||||
|
anzeigeAktualisieren();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Liefere die aktuelle Uhrzeit dieser Uhrenanzeige im Format SS:MM.
|
||||||
|
*/
|
||||||
|
public String gibUhrzeit()
|
||||||
|
{
|
||||||
|
return zeitanzeige;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aktualisiere die interne Zeichenkette, die die Zeitanzeige h<EFBFBD>lt.
|
||||||
|
*/
|
||||||
|
private void anzeigeAktualisieren()
|
||||||
|
{
|
||||||
|
zeitanzeige = stunden.gibAnzeigewert() + ":"
|
||||||
|
+ minuten.gibAnzeigewert();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
#BlueJ package file
|
||||||
|
dependency1.from=Uhrenanzeige
|
||||||
|
dependency1.to=Nummernanzeige
|
||||||
|
dependency1.type=UsesDependency
|
||||||
|
package.editor.height=460
|
||||||
|
package.editor.width=776
|
||||||
|
package.editor.x=163
|
||||||
|
package.editor.y=30
|
||||||
|
package.numDependencies=1
|
||||||
|
package.numTargets=2
|
||||||
|
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=797
|
||||||
|
target1.editor.width=936
|
||||||
|
target1.editor.x=693
|
||||||
|
target1.editor.y=111
|
||||||
|
target1.height=50
|
||||||
|
target1.name=Nummernanzeige
|
||||||
|
target1.naviview.expanded=false
|
||||||
|
target1.showInterface=false
|
||||||
|
target1.type=ClassTarget
|
||||||
|
target1.width=120
|
||||||
|
target1.x=190
|
||||||
|
target1.y=100
|
||||||
|
target2.editor.height=731
|
||||||
|
target2.editor.width=764
|
||||||
|
target2.editor.x=516
|
||||||
|
target2.editor.y=22
|
||||||
|
target2.height=50
|
||||||
|
target2.name=Uhrenanzeige
|
||||||
|
target2.naviview.expanded=false
|
||||||
|
target2.showInterface=false
|
||||||
|
target2.type=ClassTarget
|
||||||
|
target2.width=100
|
||||||
|
target2.x=70
|
||||||
|
target2.y=40
|
Loading…
Reference in New Issue