U
ulib83
Gast
Brauche mal ganz dirngend eure Hilfe sitz schon ewig dran aber bekomm nix hin.
Hier soll aus dem vorgegebenen Quelltext eine 12 h Uhr gemacht werden mit am und pm z.b. Der vorliegende Quelltext ist für eine 24 h Anzeige konzipiert.
Der erste Quelltext ist der der Klasse Uhrenanzeige der 2te der der Klasse Nummernanzeige!
Hier soll aus dem vorgegebenen Quelltext eine 12 h Uhr gemacht werden mit am und pm z.b. Der vorliegende Quelltext ist für eine 24 h Anzeige konzipiert.
Der erste Quelltext ist der der Klasse Uhrenanzeige der 2te der der Klasse Nummernanzeige!
Code:
* 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.
*
*/
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‰lt.
*/
private void anzeigeAktualisieren()
{
zeitanzeige = stunden.gibAnzeigewert() + ":"
+ minuten.gibAnzeigewert();
}
}
[b]AB HIER IST ES DIE NUMMERNANZEIGE[/b]
/**
* 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.
*/
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;
}
else{
System.out.println("Fehleingabe");
}
}
/**
* Erhˆhe den Wert um Eins. Wenn das Limit erreicht ist, setze
* den Wert wieder auf Null.
*/
public void erhoehen()
{
wert = (wert + 1) % limit;
}
// Buch S 101 Übung 3.20
public void erhoehen2()
{
if( wert + 1 < limit){
wert += 1;
}
else{
wert = 0;
}
}
}