Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Moin, ich hätte mal eine Frage.
Ich habe mehrere Klassen erstellt und eine davon ist Uhr und die andere Klasse ist Playstation.
In der Uhr Klasse habe ich definiert, dass eine Uhrzeit eingegeben wird und dann daraus ausgerechnet wird wie viele Stunden man noch hat (2 verschiedene Methoden), bis man "schlafen" muss.
Nun habe ich in der anderen Klasse es so vor, dass ich ebenfalls eine Variable boolean isPlaystationOn habe und ich möchte eine Methode schreiben, in der ich die Uhrzeit Abfrage aus Uhr und anhand dessen kann ich dann den Status von isPlaystationOn auf true oder false setzen und ebenfalls eine Textausgabe ausgeben, welche besagt ob das Gerät noch in Betrieb ist oder nicht.
[CODE lang="java" title="Uhr"]
public int getUhrzeit() {
if (uhrzeit <= 0 || uhrzeit > 24) {
System.out.println("Diese Uhrzeit existiert nicht");
return -1;
} else {
return this.uhrzeit;
}
}
public String getRestzeit() {
return "Du hast noch " + restzeit + " Stunde(n) bis du schlafen musst";
}
}
[/CODE]
Irgendwie stehe ich hier auf dem Schlauch, da wenn ich das ausführe eine NullPointerException kommt.
[CODE lang="java" title="Playstation"]public class Playstation {
private int controller;
private Uhr uhr;
private boolean isPlaystationOn;
das sagt aus "hier ist platz für ne Uhr zu speichern"
jaaa oke... du hast nen bauplan für die Uhr, du hast den Platz für ne Uhr... du hast aber keine Uhr gebaut !
"bauen von Objekten" macht man mithilfe des new Operators
EIN beispiel wie man es machen könnte
Java:
public Playstation(int controller) {
this.controller = controller;
this.isPlaystationOn = isPlaystationOn;
this.uhr = new Uhr(10);
}
hier fällt mir ein zusätzlicher fehler auf
vllt kannst du es dir selber erklären was passiert in den zwei zeilen
Java:
public Playstation(int controller) {
// was passiert hier?
this.controller = controller;
// was passiert hier? und warum ist es anders als oben!
this.isPlaystationOn = isPlaystationOn;
}
Danke für die schnell Antwort, ich habe tatsächlich in einer dritten Klasse eine "Testkonsole" und dort das Objekt erzeugt:
[CODE lang="java" title="Main"] public static void main(String[] args) {
Playstation playstation = new Playstation(1);
Uhr uhr = new Uhr(12);
System.out.println(uhr.getRestzeit());
playstation.status();
}[/CODE]
Das zweite habe ich nicht ganz verstanden, also was genau jetzt gemeint war.
die uhr "kennt" ja nicht die playstation .. dh deine PLaystation erwartet im konstruktor eine uhr , diese ist die die du in der main erzeugst die übergibst du da
das MUSST du so schreiben ... warum? die lokale Variable controller überdeckt den namen im attribut
deswegen musst du "this." davor schreiben dass der ocmputer weis "ich muss das aus der klasse nehmen und nicht das lokale"
da du hier keine Lokale variable hast nimmt der Computer auf der rechten seite das attribut der Uhr her, aber links steht auch das attribut der uhr dh hier setzt du in isOn den gleichen wert wieder ein weil du im konstruktor den namen nicht überschreibst
du sagst im prinzip
nimm den status des schalters und trag da den status des gleichen schalters ein
Nur weil du zufällig zweimal die ein Boolean mit demselben Namen in der Klasse hast, muß man es nicht zwangsläufig zusammenwürgen.
Wenn aber zwei Klassen eine Überschneidung in ihren Aufgaben haben, hast du wahrscheinlich ein grundlegenes Designproblem.
Ansonsten wäre die Zeitverwaltung vielleicht eine Aufgabe für eine dritte Klasse...ohne deine Problemstellung jetzt genauer zu kennen würde ich als möglichen Lösungsvorschlag mal "Observermuster" in den Raum reinwerfen. Schau dir mal an was das ist und was es macht, vielleicht bringt dich das auf eine Idee für eine Lösung.
Nur weil du zufällig zweimal die ein Boolean mit demselben Namen in der Klasse hast, muß man es nicht zwangsläufig zusammenwürgen.
Wenn aber zwei Klassen eine Überschneidung in ihren Aufgaben haben, hast du wahrscheinlich ein grundlegenes Designproblem.
Ansonsten wäre die Zeitverwaltung vielleicht eine Aufgabe für eine dritte Klasse...ohne deine Problemstellung jetzt genauer zu kennen würde ich als möglichen Lösungsvorschlag mal "Observermuster" in den Raum reinwerfen. Schau dir mal an was das ist und was es macht, vielleicht bringt dich das auf eine Idee für eine Lösung.