Hallo liebes Forum,
mir bereitet folgende Aufgabe den ganzen Tag schon Kopfzerbrechen:
Programmieren Sie eine Klasse Notsignalgeber. Bleibt eine gewisse Zeit (z. B. 30 s) ohne Bewegung, wird ein Voralarm ausgelöst. Ist der Träger bei Bewusstsein, wird er sich dann leicht bewegen, um den Alarm auszuschalten. Ansonsten wird z. B. nach weiteren 10 s der Hauptalarm ausgelöst. Die Klasse Notsignalgeber soll die wesentliche Steuerungslogik enthalten. Informationen über die Bewegung und die Zeit kommen von außen (s. u., das brauchen Sie nicht zu programmieren). Die Klasse Notsignalgeber soll einen Konstruktur und zwei Methoden bekommen:
• Der Konstruktor hat zwei Parameter für die Zeit bis zum Voralarm und die zusätzliche Zeit bis zum Hauptalarm. Ein Aufruf könnte so aussehen:
Notsignalgeber notsig = new Notsignalgeber(30,10);
• Die Methode tick() (ohne Parameter) wird von einem externen Zeitgeber jede Sekunde einmal aufgerufen. Sie soll die Lautstärke des Alarms zurückliefern (als Rückgabewert der Methode), also 0 für kein Alarm, 50 für Voralarm und 100 für Hauptalarm. Ein möglicher Aufruf könnte so aussehen:
int lautstaerke = notsig.tick();
Beim oben erzeugten Objekt soll bei den ersten 30 Aufrufen der Wert 0 geliefert werden, beim 31. bis 40. Aufruf der Wert 50, und ab dem 41. Aufruf der Wert 100 (sofern nicht zwischendurch eine Bewegung festgestellt wurde).
• Eine Methode bewegt(), die aufgerufen wird, wenn der Bewegungsmelder eine Bewegung erkannt hat. Diese Methode hat keine Parameter und keinen Rückgabewert. Ein möglicher Aufruf könnte so aussehen:
notsig.bewegt();
Nachdem diese Methode aufgerufen wurde, sollen die nächsten 30 Aufrufe von tick() wieder den Wert 0 liefern. Die beiden Methoden (und natürlich der Konstruktor) sollen von außen aufrufbar sein. Entsprechend muß die Klasse auch von außerhalb benutzbar sein. Nichts sonst darf von außen zugreifbar sein (auch nicht von anderen Klassen des gleichen Paketes aus). Sie dürfen beliebige Attribute verwenden, die aber nur von innerhalb dieser Klasse aus zugreifbar sein dürfen. Hinweis: Offenbar muss man sich die Parameter des Konstruktors abspeichern und über die Zeit (Anzahl Aufrufe von tick()) seit dem letzten Aufruf von bewegt() ” Buch fuhren“ (wie Sie das genau realisieren, ist Ihnen überlassen).
Mein Programm bis jetzt:
Ich weis nicht wie ich die Methoden bewegt und tick verketten soll, dass das klappt.
Kann mir da jmd bitte weiterhelfen ;(
mir bereitet folgende Aufgabe den ganzen Tag schon Kopfzerbrechen:
Programmieren Sie eine Klasse Notsignalgeber. Bleibt eine gewisse Zeit (z. B. 30 s) ohne Bewegung, wird ein Voralarm ausgelöst. Ist der Träger bei Bewusstsein, wird er sich dann leicht bewegen, um den Alarm auszuschalten. Ansonsten wird z. B. nach weiteren 10 s der Hauptalarm ausgelöst. Die Klasse Notsignalgeber soll die wesentliche Steuerungslogik enthalten. Informationen über die Bewegung und die Zeit kommen von außen (s. u., das brauchen Sie nicht zu programmieren). Die Klasse Notsignalgeber soll einen Konstruktur und zwei Methoden bekommen:
• Der Konstruktor hat zwei Parameter für die Zeit bis zum Voralarm und die zusätzliche Zeit bis zum Hauptalarm. Ein Aufruf könnte so aussehen:
Notsignalgeber notsig = new Notsignalgeber(30,10);
• Die Methode tick() (ohne Parameter) wird von einem externen Zeitgeber jede Sekunde einmal aufgerufen. Sie soll die Lautstärke des Alarms zurückliefern (als Rückgabewert der Methode), also 0 für kein Alarm, 50 für Voralarm und 100 für Hauptalarm. Ein möglicher Aufruf könnte so aussehen:
int lautstaerke = notsig.tick();
Beim oben erzeugten Objekt soll bei den ersten 30 Aufrufen der Wert 0 geliefert werden, beim 31. bis 40. Aufruf der Wert 50, und ab dem 41. Aufruf der Wert 100 (sofern nicht zwischendurch eine Bewegung festgestellt wurde).
• Eine Methode bewegt(), die aufgerufen wird, wenn der Bewegungsmelder eine Bewegung erkannt hat. Diese Methode hat keine Parameter und keinen Rückgabewert. Ein möglicher Aufruf könnte so aussehen:
notsig.bewegt();
Nachdem diese Methode aufgerufen wurde, sollen die nächsten 30 Aufrufe von tick() wieder den Wert 0 liefern. Die beiden Methoden (und natürlich der Konstruktor) sollen von außen aufrufbar sein. Entsprechend muß die Klasse auch von außerhalb benutzbar sein. Nichts sonst darf von außen zugreifbar sein (auch nicht von anderen Klassen des gleichen Paketes aus). Sie dürfen beliebige Attribute verwenden, die aber nur von innerhalb dieser Klasse aus zugreifbar sein dürfen. Hinweis: Offenbar muss man sich die Parameter des Konstruktors abspeichern und über die Zeit (Anzahl Aufrufe von tick()) seit dem letzten Aufruf von bewegt() ” Buch fuhren“ (wie Sie das genau realisieren, ist Ihnen überlassen).
Mein Programm bis jetzt:
Java:
public class Notsignalgeber {
private int vor;
private int haupt;
private int speichervor;
private int speichernach;
private int anzahlderAufrufevonTick=0;
public Notsignalgeber(int vor, int haupt) {
this.vor=vor;
this.haupt=haupt;
speichervor=vor;
speichernach=haupt;
}
public int tick() {
anzahlderAufrufevonTick++;
if(anzahlderAufrufevonTick<=vor) return 0;
if(anzahlderAufrufevonTick>vor && anzahlderAufrufevonTick<=haupt) return 50;
return 100;
}
public void bewegt() {
}
}
Ich weis nicht wie ich die Methoden bewegt und tick verketten soll, dass das klappt.
Kann mir da jmd bitte weiterhelfen ;(