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