Fernseher-Aufgabe (Methoden, Klassen und Objekte)

C

Codix

Bekanntes Mitglied
Erstellen Sie ein Programm, das einen Fernseher als Objekt abbildet. Der Fernseher soll mindestens folgende Eigenschaften haben:

Lautstärke,

Programm und

eingeschaltet beziehungsweise ausgeschaltet.
Alle drei Eigenschaften sollen geändert werden können.
Beachten Sie bei der Umsetzung bitte folgende Vorgaben:

Eine Änderung von Lautstärke und Programm soll nur dann möglich sein, wenn der Fernseher eingeschaltet ist.

Schalten Sie den Fernseher in Ihrem Programm mindestens einmal ein und ändern Sie die Lautstärke. Wechseln Sie mindestens dreimal das Programm. Schalten Sie den Fernseher dann wieder aus.

Geben Sie nach jeder Änderung den aktuellen Zustand des Fernsehers auf der Konsole aus.

Greifen Sie nur über die Methoden der Klasse auf die Instanzvariablen zu. Das gilt auch für die Ausgabe der Werte.


Java:
public class Tv {
//Methode ausgabe festlegen
     static void ausgabe(Fernseher fernseher ) {
// mit einer if-Schleife & getStatus (für das einschalten des fernsehers)
            if (fernseher.getStatus() == true) {
//ausgabe für den fernseher (ob er an oder aus ist)
                System.out.println("Der Fernseher ist an.");
            }else {
                System.out.println("Der Fernseher ist aus.");
            }
    //ausgabe für das Programm       
            System.out.println("Sie haben Programm: " + fernseher.getProgramm());
    //ausgabe für die Lautstaerke
            System.out.println("Es ist Lautstaerke " + fernseher.getLautstaerke() + " eingestellt.");     

        }
    
    //Hauptklasse main festgelegt 
    //MERKE: in der Hauptmethode werden die Zustände der Objekte verändert.
     //z.B. Programm umgeschaltet oder Lautstaerke aufgedreht, etc.
     public static void main(String[] args) {
// Konstruktor verwendet
// Das eigentliche Erzeugen der Instanz erfolgt dann mit dem Operator new.
// Dahinter geben Sie den Namen der Klasse und die runden Klammern () an.
// Die Referenz, die der Operator new liefert, weisen Sie mit dem Zuweisungsoperator der Variablen vom Typ der Klasse zu. Dabei gibt es keine Besonderheiten.
         Fernseher fernseher = new Fernseher();

        //fernseher.init(0, 0, false);                   
        //ausgabe(fernseher);

        // Zustand ändern & ausgeben
        
        //erst wird der Fernseher eingeschalten
        fernseher.setStatus(true);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
        
        //jetzt ändern man die Lautstärke auf 5
        fernseher.setProgramm(1);
        fernseher.setLautstaerke(10);
        ausgabe(fernseher);
        
        //jetzt ändern man das Programm auf 4
        fernseher.setProgramm(6);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);

        //jetzt ändern man die Programm auf 5
        fernseher.setProgramm(7);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
        
        //jetzt ändern man die Programm auf 12
        fernseher.setLautstaerke(15);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
              
        //jetzt schaltet man den Fernseher aus
        fernseher.setStatus(false);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
    }

}

// andere Klasse Fernseher im gleichen Packet und im gleichen Projekt
public class Fernseher {
    int lautstaerke, programm;
    boolean status;

    //methode init muss angewendet werden, weil s. Beschreibung:
    //wir weisen den Objekten Anfangswerte zu.
    //init = In der Programmierung die Zuweisung eines
    //Initial- oder Anfangswertes zu einem Objekt oder einer Variablen
    void init(int lautstaerke, int programm, boolean status) {
      
    }

    boolean getStatus() {
        return status;
    }

    int getLautstaerke() {
        return lautstaerke;
    }

    int getProgramm() {
        return programm;
    }

    int setLautstaerke(int setLautstaerke){

        if (status == true) {
            lautstaerke = setLautstaerke;
        } else {
            lautstaerke = 0;
        }
        return lautstaerke;

    }

    int setProgramm (int setProgramm) {
        if (status == true) {
        programm = setProgramm;
        } else {
            programm = 0;
        }
        return programm;
    }

    boolean setStatus(boolean setS) {
        if (setS == true) {
            status = setS;
        } else {
            status = setS;
        }
        return status;
    }
}

Frage: ist die Aufgabe hiermit erfolgreich gelöst? Bitte um Antworten. Danke im Voraus.
 
H

httpdigest

Top Contributor
ist die Aufgabe hiermit erfolgreich gelöst?
Nein. In der Aufgabenstellung ist doch gefordert, dass sowohl Programm als auch Lautstärke nur im eingeschalteten Zustand geändert werden können.
Du aber setzt beides einfach auf 0 (egal, welchen Wert sie vorher hatten), wenn der Fernseher aus ist und jemand die Lautstärke bzw. das Programm ändern möchte. Auf 0 Setzen ist ja auch eine Änderungen (sofern der vorherige Wert nicht auch 0 war).
 
C

Codix

Bekanntes Mitglied
Nein. In der Aufgabenstellung ist doch gefordert, dass sowohl Programm als auch Lautstärke nur im eingeschalteten Zustand geändert werden können.
Du aber setzt beides einfach auf 0 (egal, welchen Wert sie vorher hatten), wenn der Fernseher aus ist und jemand die Lautstärke bzw. das Programm ändern möchte. Auf 0 Setzen ist ja auch eine Änderungen (sofern der vorherige Wert nicht auch 0 war).

aber ich regel doch im code, ob der TV an oder aus ist. Erst wenn er an ist kann die Lautstärke & das Programm geändert werden. Und wir gucken jedes mal ob der TV auch an ist, erst dann können wir die Lautstärke & das Programm einstellen.

Java:
public class Tv {
//Methode ausgabe festlegen
     static void ausgabe(Fernseher fernseher ) {
// mit einer if-Schleife & getStatus (für das einschalten des fernsehers)
            if (fernseher.getStatus() == true) {
//ausgabe für den fernseher (ob er an oder aus ist)
                System.out.println("Der Fernseher ist an.");
            }else {
                System.out.println("Der Fernseher ist aus.");
            }

Java:
 //erst wird der Fernseher eingeschalten
        fernseher.setStatus(true);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);

wie würdest du den Code ändern @httpdigest
 
H

httpdigest

Top Contributor
Bitte lies noch einmal, was ich oben geschrieben habe.
Vielleicht testest du dann mal folgendes:
Java:
Fernseher fernseher = new Fernseher();
fernseher.setStatus(true);
fernseher.setProgramm(4);
fernseher.setStatus(false);
fernseher.setProgramm(5); // <- hier VERÄNDERST du das Programm auf 0, obwohl der Fernseher AUS ist!
System.out.println(fernseher.getProgramm()); // <- sollte 4 ausgeben, gibt aber 0 aus!
 
C

Codix

Bekanntes Mitglied
Bitte lies noch einmal, was ich oben geschrieben habe.
Vielleicht testest du dann mal folgendes:
Java:
Fernseher fernseher = new Fernseher();
fernseher.setStatus(true);
fernseher.setProgramm(4);
fernseher.setStatus(false);
fernseher.setProgramm(5); // <- hier VERÄNDERST du das Programm auf 0, obwohl der Fernseher AUS ist!
System.out.println(fernseher.getProgramm()); // <- sollte 4 ausgeben, gibt aber 0 aus!

???

Java:
Fernseher fernseher = new Fernseher();
fernseher.setStatus(true);   //TV ist an 
fernseher.setProgramm(4);
fernseher.setStatus(false);
fernseher.setProgramm(5); // <- (hier verändern wir das Programm auf 5 & der TV ist an   "fernseher.setStatus(true);"  )
System.out.println(fernseher.getProgramm());    //gibt 5 aus
[/QUOTE]
 
H

httpdigest

Top Contributor
Willst du mich verarschen? Hast du den Testcode von mir denn überhaupt mal ausgeführt?
Nach dem Aufruf von setProgramm(4); steht ganz eindeutig ein setStatus(false), um den Fernseher wieder auszuschalten.
Und der nachfolgende Aufruf von setProgramm(5) bei dem gerade ausgeschaltenen Fernseher, verändert das Programm effektiv auf 0.
 
C

Codix

Bekanntes Mitglied
Willst du mich verarschen? Hast du den Testcode von mir denn überhaupt mal ausgeführt?
Nach dem Aufruf von setProgramm(4); steht ganz eindeutig ein setStatus(false), um den Fernseher wieder auszuschalten.
Und der nachfolgende Aufruf von setProgramm(5) bei dem gerade ausgeschaltenen Fernseher, verändert das Programm effektiv auf 0.

wo finde ich bitte die Codestelle, die du gerade beschreibst? Sie ist nicht aus dem obigen Quellcode!
 
C

Codix

Bekanntes Mitglied
Java:
Fernseher fernseher = new Fernseher();

        //fernseher.init(0, 0, false);                   
        //ausgabe(fernseher);

        // Zustand ändern & ausgeben
        
        //erst wird der Fernseher eingeschalten
        fernseher.setStatus(true);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
        
        //jetzt ändern man die Lautstärke auf 5
        fernseher.setProgramm(2);
        fernseher.setLautstaerke(10);
        ausgabe(fernseher);

hier wird doch erst geprüft, ob der TV an oder aus ist. Erst wenn er an ist switchen wir die Programme und die Lautstärke wird verändert :)
 
H

httpdigest

Top Contributor
Bitte lies dir noch einmal meinen ersten Post #2 durch und dann lies ihn bitte noch einmal durch und dann noch einmal, bis du verstanden hast, was ich damit aussagen wollte. Dann führe bitte den Testcode in meinem Post #4 aus.
hier wird doch erst geprüft, ob der TV an oder aus ist. Erst wenn er an ist switchen wir die Programme und die Lautstärke wird verändert :)
Du prüfst dort überhaupt nichts. Dein Code schaltet den Fernseher an, ja. Und dann setzt es das Programm und die Lautstärke, ja. Aber dein Code testet nicht, was passiert, wenn du Programm und Lautstärke setzt, wenn der Fernseher aus ist!
Diese Fälle sollen ja gerade implementiert werden und werden sicherlich bei der Abnahme der Aufgabe auch so geprüft.
 
C

Codix

Bekanntes Mitglied
Bitte lies dir noch einmal meinen ersten Post #2 durch und dann lies ihn bitte noch einmal durch und dann noch einmal, bis du verstanden hast, was ich damit aussagen wollte. Dann führe bitte den Testcode in meinem Post #4 aus.

Du prüfst dort überhaupt nichts. Dein Code schaltet den Fernseher an, ja. Und dann setzt es das Programm und die Lautstärke, ja. Aber dein Code testet nicht, was passiert, wenn du Programm und Lautstärke setzt, wenn der Fernseher aus ist!

@
Du prüfst dort überhaupt nichts. Dein Code schaltet den Fernseher an, ja. Und dann setzt es das Programm und die Lautstärke, ja. Aber dein Code testet nicht, was passiert, wenn du Programm und Lautstärke setzt, wenn der Fernseher aus ist!
=> aber es kann nichts passieren, weil wir im if/else statement das so gesetzt haben ,dass das Umschalten/Verändern der Lautstärke nur funkt, wenn TV an ist. Warum sollen wir nochmals testen, was passiert, wenn TV aus ist? Es kann ja nichts passieren, weil (s. statement in der vorigen Zeile :) )
 
H

httpdigest

Top Contributor
Bitte lies dir noch einmal meinen ersten Post #2 durch und dann lies ihn bitte noch einmal durch und dann noch einmal, bis du verstanden hast, was ich damit aussagen wollte. Dann führe bitte den Testcode in meinem Post #4 aus.
 
C

Codix

Bekanntes Mitglied
Java:
ernseher fernseher = new Fernseher();
fernseher.setStatus(true);
fernseher.setProgramm(4);
fernseher.setStatus(false);
fernseher.setProgramm(5); // <- hier VERÄNDERST du das Programm auf 0, obwohl der Fernseher AUS ist!
System.out.println(fernseher.getProgramm()); // <- sollte 4 ausgeben, gibt aber 0 aus!

natürlich gibt er hier 0 aus, weil fernseher.setStatus(false) ist.
Was willst du denn, das welcher Wert ausgegeben wird, wenn der TV aus ist? Nicht 0, sondern ???
 
H

httpdigest

Top Contributor
natürlich gibt er hier 0 aus, weil fernseher.setStatus(false) ist.
Diese Schlussfolgerung kann ich nicht nachvollziehen. getProgramm() soll deiner Meinung nach also immer 0 ausgeben, wenn der Fernseher aus ist? Dann teste mal folgendes:
Java:
Fernseher fernseher = new Fernseher();
fernseher.setStatus(true);
fernseher.setProgramm(4);
fernseher.setStatus(false);
System.out.println(fernseher.getProgramm());

Was willst du denn, das welcher Wert ausgegeben wird, wenn der TV aus ist? Nicht 0, sondern ???
Wie ich geschrieben habe: 4. Der initial im eingeschalteten Zustand per setProgramm(4) gesetzte Wert sollte sich im ausgeschalteten Zustand nicht ändern lassen und eben solange 4 bleiben, bis das Programm im eingeschalteten Zustand wieder geändert wird.
 
H

httpdigest

Top Contributor
Alternativ kannst du das Fehlverhalten auch mit folgendem Code testen:
Java:
Fernseher fernseher = new Fernseher();
fernseher.setStatus(true); // <- Fernseher anschalten
fernseher.setProgramm(4); // <- Programm auf 4 wechseln
fernseher.setStatus(false); // <- Fernseher ausschalten
fernseher.setProgramm(5); // <- Versuchen, Programm auf 5 zu wechseln (wird 0 werden)
fernseher.setStatus(true); // <- Fernseher anschalten
System.out.println(fernseher.getProgramm()); // <- gibt immer noch 0 aus, sollte aber wohl 4 sein.
 
C

Codix

Bekanntes Mitglied
Diese Schlussfolgerung kann ich nicht nachvollziehen. getProgramm() soll deiner Meinung nach also immer 0 ausgeben, wenn der Fernseher aus ist? Dann teste mal folgendes:
Java:
Fernseher fernseher = new Fernseher();
fernseher.setStatus(true);
fernseher.setProgramm(4);
fernseher.setStatus(false);
System.out.println(fernseher.getProgramm());


Wie ich geschrieben habe: 4. Der initial im eingeschalteten Zustand per setProgramm(4) gesetzte Wert sollte sich im ausgeschalteten Zustand nicht ändern lassen und eben solange 4 bleiben, bis das Programm im eingeschalteten Zustand wieder geändert wird.

Warum soll der TV im ausgeschalteten Modus Programm 4 anzeigen? Überleg doch mal logisch. Wie soll das gehen?
 
H

httpdigest

Top Contributor
Eine einfache Programmieraufgabe zu befolgen, hat in erster Linie nichts mit Logik zu tun, sondern damit, eine Aufgabenstellung zu befolgen. Da in der Aufgabenstellung anscheinend nirgendwo steht, dass getProgramm() im ausgeschalteten Zustand einfach mal 0 zurückgibt, sollte es das auch nicht tun (zumal es ja auch nicht deswegen 0 zurückliefert, weil der Fernseher aus ist, sondern, weil du im ausgeschalteten Zustand bei setProgramm() einfach mal 0 zuweist). Wohl aber steht in der Aufgabenstellung, dass sich das Programm und die Lautstärker nicht ändern dürfen, wenn der Fernseher aus ist. Genau das setzt du aber eben nicht um. Du setzt im else-Fall in setProgramm() und setLautstärke() die entsprechenden Variablen einfach auf 0.
 
C

Codix

Bekanntes Mitglied
Eine einfache Programmieraufgabe zu befolgen, hat in erster Linie nichts mit Logik zu tun, sondern damit, eine Aufgabenstellung zu befolgen. Da in der Aufgabenstellung anscheinend nirgendwo steht, dass getProgramm() im ausgeschalteten Zustand einfach mal 0 zurückgibt, sollte es das auch nicht tun (zumal es ja auch nicht deswegen 0 zurückliefert, weil der Fernseher aus ist, sondern, weil du im ausgeschalteten Zustand bei setProgramm() einfach mal 0 zuweist). Wohl aber steht in der Aufgabenstellung, dass sich das Programm und die Lautstärker nicht ändern dürfen, wenn der Fernseher aus ist. Genau das setzt du aber eben nicht um. Du setzt im else-Fall in setProgramm() und setLautstärke() die entsprechenden Variablen einfach auf 0.


Wohl aber steht in der Aufgabenstellung, dass sich das Programm und die Lautstärker nicht ändern dürfen, wenn der Fernseher aus ist. Genau das setzt du aber eben nicht um. Du setzt im else-Fall in setProgramm() und setLautstärke() die entsprechenden Variablen einfach auf 0.

Damit ist gemeint, dass der Wert im ausgeschalteten Modus konstant 0 bleibt und nicht verändert werden darf.

Java:
if (status == true) {
            lautstaerke = setLautstaerke;
        } else {
            lautstaerke = 0;
        }
        return lautstaerke;

    }

    int setProgramm (int setProgramm) {
        if (status == true) {
        programm = setProgramm;
        } else {
            programm = 0;
        }
        return programm;

auf welchen Wert oder Aussage sollen wir die Lautstärke & Programm im ausgeschalteten Modus einstellen. else { lautstaerke = ? }
 
H

httpdigest

Top Contributor
auf welchen Wert oder Aussage sollen wir die Lautstärke & Programm im ausgeschalteten Modus einstellen. else { lautstaerke = ? }
Auf gar nichts. Du brauchst hier einfach keinen else-Fall und keine Zuweisung im else-Fall.
Ich z.B. bin ein Freund von "early-out", also:
Java:
public void setProgramm(int programm) {
  if (!this.status)
    return; // <- Methodenausführung hier beenden
  this.programm = programm;
}
 
C

Codix

Bekanntes Mitglied
Eine Änderung von Lautstärke und Programm soll nur dann möglich sein, wenn der Fernseher eingeschaltet ist.

d.h. dass es einen neutralen Wert geben muss, wenn der TV ausgeschaltet ist. Einen neutralen Wert, der auf den ausgeschalteten Modus hinweist und nicht verändert werden darf. 0.
 
H

httpdigest

Top Contributor
d.h. dass es einen neutralen Wert geben muss, wenn der TV ausgeschaltet ist. Einen neutralen Wert, der auf den ausgeschalteten Modus hinweist und nicht verändert werden darf. 0.
Nein. Es heisst nur, dass eben der aktuelle Wert im ausgeschalteten Zustand nicht geändert werden darf. Nicht auf 0, und auch nicht auf sonst einen anderen Wert.
 
H

httpdigest

Top Contributor
Doch, ein if brauchst du, aber eben keinen else-Fall. Oder, wenn du unbedingt einen else-Fall haben willst, kann der auch leer sein:
Java:
public void setProgramm(int programm) {
  if (this.status) {
    this.programm = programm;
  } else {
    // nix.
  }
}
 
C

Codix

Bekanntes Mitglied
Doch, ein if brauchst du, aber eben keinen else-Fall. Oder, wenn du unbedingt einen else-Fall haben willst, kann der auch leer sein:
Java:
public void setProgramm(int programm) {
  if (this.status) {
    this.programm = programm;
  } else {
    // nix.
  }
}

ich versuchs, danke
 
C

Codix

Bekanntes Mitglied
Java:
public class Fernseher {
    int lautstaerke, programm;
    boolean status;

    //methode init muss angewendet werden, weil s. Beschreibung:
    //wir weisen den Objekten Anfangswerte zu.
    //init = In der Programmierung die Zuweisung eines
    //Initial- oder Anfangswertes zu einem Objekt oder einer Variablen
    void init(int lautstaerke, int programm, boolean status) {
      
    }

    boolean getStatus() {
        return status;
    }

    int getLautstaerke() {
        return lautstaerke;
    }

    int getProgramm() {
        return programm;
    }

    int setLautstaerke(int setLautstaerke){

        if (status == true) {
            lautstaerke = setLautstaerke;
        } else {
            
        }
        return lautstaerke;

    }

    int setProgramm (int setProgramm) {
        if (status == true) {
        programm = setProgramm;
        } else {
            
        }
        return programm;
    }

    boolean setStatus(boolean setS) {
        if (setS == true) {
            status = setS;
        } else {
            
        }
        return status;
    }
}

ist das so in Ordnung? (für die Aufgabenstellung)
 
temi

temi

Top Contributor
Java:
public class Fernseher {
    int lautstaerke, programm;
    boolean status;

    //methode init muss angewendet werden, weil s. Beschreibung:
    //wir weisen den Objekten Anfangswerte zu.
    //init = In der Programmierung die Zuweisung eines
    //Initial- oder Anfangswertes zu einem Objekt oder einer Variablen
    void init(int lautstaerke, int programm, boolean status) {
   
    }

    boolean getStatus() {
        return status;
    }

    int getLautstaerke() {
        return lautstaerke;
    }

    int getProgramm() {
        return programm;
    }

    int setLautstaerke(int setLautstaerke){

        if (status == true) {
            lautstaerke = setLautstaerke;
        } else {
         
        }
        return lautstaerke;

    }

    int setProgramm (int setProgramm) {
        if (status == true) {
        programm = setProgramm;
        } else {
         
        }
        return programm;
    }

    boolean setStatus(boolean setS) {
        if (setS == true) {
            status = setS;
        } else {
         
        }
        return status;
    }
}

ist das so in Ordnung? (für die Aufgabenstellung)
Nein.

Du kannst deinen Fernseher jetzt nicht mehr ausschalten.

Wofür ist denn die Methode init(), die angeblich so dringend gebraucht, aber nie aufgerufen wird. Wie wäre es stattdessen mit einem Konstruktor?

else-Zweige, die nichts machen, sollte man am besten ganz weglassen.
 
C

Codix

Bekanntes Mitglied
Nein.

Du kannst deinen Fernseher jetzt nicht mehr ausschalten.

Wofür ist denn die Methode init(), die angeblich so dringend gebraucht, aber nie aufgerufen wird. Wie wäre es stattdessen mit einem Konstruktor?

else-Zweige, die nichts machen, sollte man am besten ganz weglassen.

was bringt mir der Konstruktor hier? Bitte etwas konkreter

Mit dem Konstruktor erstellen wir ein neues Objekt an. Und welches sollen wir denn erstellen und warum?
 
Zuletzt bearbeitet:
C

Codix

Bekanntes Mitglied
@ temi: also du würdest ein neues Objekt anlegen mit dem Konstruktor, welches?

die else-Zweige kann ich ja wegmachen.

wie kriege ich das hin, dass die Konsole anzeigt, dass der TV aus ist, wenn das letzte statement im code lautet:

fernseher.setStatus(false); //TV ist aus
Java:
public class Tv {
//Methode ausgabe festlegen
     static void ausgabe(Fernseher fernseher ) {
// mit einer if-Schleife & getStatus (für das einschalten des fernsehers)
            if (fernseher.getStatus() == true) {
//ausgabe für den fernseher (ob er an oder aus ist)
                System.out.println("Der Fernseher ist an.");
            }else {
                System.out.println("Der Fernseher ist aus.");
            }
    //ausgabe für das Programm      
            System.out.println("Sie haben Programm: " + fernseher.getProgramm());
    //ausgabe für die Lautstaerke
            System.out.println("Es ist Lautstaerke " + fernseher.getLautstaerke() + " eingestellt.");    

        }
   
    //Hauptklasse main festgelegt
    //MERKE: in der Hauptmethode werden die Zustände der Objekte verändert.
     //z.B. Programm umgeschaltet oder Lautstaerke aufgedreht, etc.
     public static void main(String[] args) {
// Konstruktor verwendet
// Das eigentliche Erzeugen der Instanz erfolgt dann mit dem Operator new.
// Dahinter geben Sie den Namen der Klasse und die runden Klammern () an.
// Die Referenz, die der Operator new liefert, weisen Sie mit dem Zuweisungsoperator der Variablen vom Typ der Klasse zu. Dabei gibt es keine Besonderheiten.
         Fernseher fernseher = new Fernseher();

        //fernseher.init(0, 0, false);                  
        //ausgabe(fernseher);

        // Zustand ändern & ausgeben
       
        //erst wird der Fernseher eingeschalten
        fernseher.setStatus(true);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
       
        //jetzt ändern man die Lautstärke auf 5
        fernseher.setProgramm(1);
        fernseher.setLautstaerke(10);
        ausgabe(fernseher);
       
        //jetzt ändern man das Programm auf 4
        fernseher.setProgramm(6);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);

        //jetzt ändern man die Programm auf 5
        fernseher.setProgramm(7);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
       
        //jetzt ändern man die Programm auf 12
        fernseher.setLautstaerke(15);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
             
        //jetzt schaltet man den Fernseher aus
        fernseher.setStatus(false);   //ich bekomme keine Antwort in der Konsole, dass der TV aus ist.
    }

}



Java:
public class Fernseher {
    int lautstaerke, programm;
    boolean status;

    //methode init muss angewendet werden, weil s. Beschreibung:
    //wir weisen den Objekten Anfangswerte zu.
    //init = In der Programmierung die Zuweisung eines
    //Initial- oder Anfangswertes zu einem Objekt oder einer Variablen
    void init(int lautstaerke, int programm, boolean status) {
    
    }

    boolean getStatus() {
        return status;
    }

    int getLautstaerke() {
        return lautstaerke;
    }

    int getProgramm() {
        return programm;
    }

    int setLautstaerke(int setLautstaerke){

        if (status == true) {
            lautstaerke = setLautstaerke;
        }
        return lautstaerke;

    }

    int setProgramm (int setProgramm) {
        if (status == true) {
        programm = setProgramm;
        }
        return programm;
    }

    boolean setStatus(boolean setS) {
        if (setS == true) {
            status = setS;
        }
        return status;
    }
}
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
was bringt mir der Konstruktor hier? Bitte etwas konkreter

Du hast aktuell eine (leere) init-Methode. Vom Namen her soll die Methode das Objekt initialisieren – genau das ist aber der Job des Konstruktors. Also: init-Methode mit Konstruktor ersetzen.

Mit dem Konstruktor erstellen wir ein neues Objekt an. Und welches sollen wir denn erstellen und warum?
Guck doch mal in deinem eigenem Code wo du da ein new stehen hast...

die else-Zweige kann ich ja wegmachen.
Ja, solltest du.

wie kriege ich das hin, dass die Konsole anzeigt, dass der TV aus ist, wenn das letzte statement im code lautet:
Indem du einfach eine Ausgabe dahin schreibst, wo du eine Ausgabe möchtest?! Genau so, wie du es in den Zeilen darüber machst.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Hab ich dir bereits schon mal gesagt, aber hier nochmal: du solltest dich erstmal noch mit etwas grundlegendere Grundlagen beschäftigen, so eine Aufgabe sollte nicht so arge Schwierigkeiten bereiten...
 
C

Codix

Bekanntes Mitglied
Hab ich dir bereits schon mal gesagt, aber hier nochmal: du solltest dich erstmal noch mit etwas grundlegendere Grundlagen beschäftigen, so eine Aufgabe sollte nicht so arge Schwierigkeiten bereiten...
ich kann die Grundlagen schon, aber nicht 100%. nobody is perfect. Mir fehlt es mehr an Übung, damit ich die Grundlagen mithilfe der praktischen Programmierung verinnerlichen kann.
 
temi

temi

Top Contributor
Mein Fernseher würde ungefähr so aussehen:
Java:
public class Fernseher {
 
    private boolean istAn;
    private int lautstaerke;
    private int programm;
 
    public Fernseher() {
     
    }
 
    public void schalteAn() {
     
    }
 
    public void schalteAus() {
     
    }
 
    public boolean istAn() {
     
    }
 
    public int setProgramm(int programm) {
     
    }
 
    public int getProgramm() {
     
    }
 
    public int setLautstaerke(int lautstaerke) {
     
    }
 
    public int getLautstaerke() {
     
    }
}

Die Methode für den Ein-/Ausschaltzustand heißt jetzt istAn() und zwar ganz einfach aus Gründen der leichteren Lesbarkeit.

Anstatt von if (fernseher.getStatus() == true) kann man einfach if (fernseher.getStatus()) schreiben, denn in der Klammer der if-Abfrage muss nur ein boolean stehen und die Methode liefert bereits ein boolean als Rückgabewert, so dass der darauffolgende Vergleich auf "true" überflüssig ist.

Allerdings ist die Aussage von if (fernseher.getStatus()) sehr unklar, vergleiche im Gegensatz dazu:
if (fernseher.istAn()).
 
C

Codix

Bekanntes Mitglied
Du hast aktuell eine (leere) init-Methode. Vom Namen her soll die Methode das Objekt initialisieren – genau das ist aber der Job des Konstruktors. Also: init-Methode mit Konstruktor ersetzen.
soll ich einen default Konstruktor ohne Parameter nehmen? Weil void init steht. Oder 2 Konstruktoren (1.ten für Lautstärke & 2.ten für das Programm)?

Guck doch mal in deinem eigenem Code wo du da ein new stehen hast...


Ja, solltest du.
=> else Zweige sind weg


Indem du einfach eine Ausgabe dahin schreibst, wo du eine Ausgabe möchtest?! Genau so, wie du es in den Zeilen darüber machst.
=> ich habe die Ausgabe davor stehen gehabt, habe aber keine korrekte Ausgabe bekommen mit dem Code:
Java:
 //jetzt schaltet man den Fernseher aus
        fernseher.setStatus(false);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
 
Zuletzt bearbeitet von einem Moderator:
C

Codix

Bekanntes Mitglied
Was hast du denn als Ausgabe erwartet? Und was hast du erhalten?

Übrigens: Versuch mal ordentlich zu zitieren. Es ist etwas nervig, deinen Beitrag aus dem Zitat heraus zu suchen.

wie zitiert man hier ordentlich? Wo gibt es Zitat-Option. Entschuldigung und Danke.

Übrigens wenn ich deine Fernseher-Version nehme, bekomme ich keine gescheite Ausgabe in der Konsole: Lautstärke = 0, Programm = 0

so habe ich deinen Quellcode bearbeitet:

Java:
public class Fernseher {

    private boolean istAn;
    private int lautstaerke;
    private int programm;

    public Fernseher() {
   
    }

    public void schalteAn() {
   
    }

    public void schalteAus() {
   
    }

    public boolean istAn() {
        return true;
    }

    public int setProgramm(int programm) {
        return programm;
   
    }

    public int getProgramm() {
        return programm;
   
    }

    public int setLautstaerke(int lautstaerke) {
        return lautstaerke;
   
    }

    public int getLautstaerke() {
        return lautstaerke;
   
    }
}

Java:
public class Tv{
//Methode ausgabe festlegen
     static void ausgabe(Fernseher fernseher ) {
// mit einer if-Schleife & getStatus (für das einschalten des fernsehers)
            if (fernseher.istAn()) {
//ausgabe für den fernseher (ob er an oder aus ist)
                System.out.println("Der Fernseher ist an.");
            }else {
                System.out.println("Der Fernseher ist aus.");
            }
    //ausgabe für das Programm      
            System.out.println("Sie haben Programm: " + fernseher.getProgramm());
    //ausgabe für die Lautstaerke
            System.out.println("Es ist Lautstaerke " + fernseher.getLautstaerke() + " eingestellt.");    

        }
   
    //Hauptklasse main festgelegt
    //MERKE: in der Hauptmethode werden die Zustände der Objekte verändert.
     //z.B. Programm umgeschaltet oder Lautstaerke aufgedreht, etc.
     public static void main(String[] args) {
// Konstruktor verwendet
// Das eigentliche Erzeugen der Instanz erfolgt dann mit dem Operator new.
// Dahinter geben Sie den Namen der Klasse und die runden Klammern () an.
// Die Referenz, die der Operator new liefert, weisen Sie mit dem Zuweisungsoperator der Variablen vom Typ der Klasse zu. Dabei gibt es keine Besonderheiten.
         Fernseher fernseher = new Fernseher();

        //fernseher.init(0, 0, false);                  
        //ausgabe(fernseher);

        // Zustand ändern & ausgeben
       
        //erst wird der Fernseher eingeschalten
        fernseher.istAn();
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
       
        //jetzt ändern man die Lautstärke auf 5
        fernseher.setProgramm(1);
        fernseher.setLautstaerke(10);
        ausgabe(fernseher);
       
        //jetzt ändern man das Programm auf 4
        fernseher.setProgramm(6);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);

        //jetzt ändern man die Programm auf 5
        fernseher.setProgramm(7);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
       
        //jetzt ändern man die Programm auf 12
        fernseher.setLautstaerke(15);
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);
             
        //jetzt schaltet man den Fernseher aus
        fernseher.schalteAus();
        //gibt in der Konsole das ergebnis aus
        ausgabe(fernseher);

    }

}
 
temi

temi

Top Contributor
wie zitiert man hier ordentlich? Wo gibt es Zitat-Option.
Entweden ganz unten rechts auf "Zitieren" klicken, dann wird mehr oder weniger der gesamte Beitrag als Zitat übernommen. Oder du markierst die zu zitierenden Stelle und klickst dann auf den in der Folge erscheinenden "Zitieren" Button.

Deinen Teil musst du dann natürlich außerhalb des zitierten Textes schreiben.
 
temi

temi

Top Contributor
Übrigens wenn ich deine Fernseher-Version nehme, bekomme ich keine gescheite Ausgabe in der Konsole
Wie wäre es, wenn du den Code noch komplettierst, anstatt mit einer zur Hälfte ausprogrammierten Klasse zu testen? Und diese Hälfte ist auch noch größtenteils fehlerhaft.

Was erwartest du?

Und versuche mal, die Fragen, die dir gestellt werden, auch zu beantworten.
Was hast du denn als Ausgabe erwartet? Und was hast du erhalten?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
soll ich einen default Konstruktor ohne Parameter nehmen? Weil void init steht. Oder 2 Konstruktoren (1.ten für Lautstärke & 2.ten für das Programm)?
Weißt du, was ein Konstruktor macht?

Haben hier zwei verschiedene Konstruktoren Sinn, wenn man zwei unabhängige Variablen hat?
Ist es sinnvoll, eine Initiale Lautstärke übergeben zu können?

Übrigens wenn ich deine Fernseher-Version nehme, bekomme ich keine gescheite Ausgabe in der Konsole: Lautstärke = 0, Programm = 0

so habe ich deinen Quellcode bearbeitet:
Hast du die den Code auch angeguckt und gemerkt, dass alle Methoden leer sind?
 
temi

temi

Top Contributor
Oder 2 Konstruktoren (1.ten für Lautstärke & 2.ten für das Programm)?
Weißt du, was ein Konstruktor macht?
Haben hier zwei verschiedene Konstruktoren Sinn, wenn man zwei unabhängige Variablen hat?
Ist es sinnvoll, eine Initiale Lautstärke übergeben zu können?
Und ergänzend noch: Hättest du deine zwei Konstruktoren, wäre es dann möglich für die Erzeugung einer Instanz der Klasse, zwei Konstruktoren aufzurufen?

Zur Klarstellung: Klassen können natürlich mehrere Konstruktoren haben und es gibt viele Klassen in der Java-Klassenbibliothek, bei denen das der Fall ist. Das ist aber aktuell nicht das Thema. Falls dich interessiert, wofür das gut sein kann, dann kann man das später gerne ausführen. Jetzt reicht es aus, zu wissen, dass das geht.
 
kneitzel

kneitzel

Top Contributor
@mihe7 hat die Frage ja schon mal gestellt: Lernst du Java privat, in der Schule, Ausbildung, Studium?
LALALALALALA *Ohren zuhalt*

Willst Du diese Frage wirklich beantwortet haben? Ist es nicht viel einfacher, sich vorzustellen, wie da ein kleiner Junger alleine einsam vor dem Rechner sitzt und sich das selbst beibringt? Ohne Möglichkeit, sich ein Buch zu kaufen. Internet ist nur wenige Minuten am Tag erlaubt (Böse Mami - vor allem die Drohung bei Überschreitung der Zeit "das Internet zu löschen"! Diese roten Knöpfe von Mamis sind hart - denk mal über die Konsequenzen nach!), so dass online Recherche nicht geht und wir die einzige Chance sind? Noch können wir uns die Welt schön machen! Willst Du das zerstören?

*SCNR*
 
C

Codix

Bekanntes Mitglied
Weißt du, was ein Konstruktor macht?

Haben hier zwei verschiedene Konstruktoren Sinn, wenn man zwei unabhängige Variablen hat?
doch ja, die machen schon Sinn (Anfängermeinung)
Ist es sinnvoll, eine Initiale Lautstärke übergeben zu können?
Jaein


Hast du die den Code auch angeguckt und gemerkt, dass alle Methoden leer sind?
ich habe auch return eingefügt.
 
C

Codix

Bekanntes Mitglied
Vermutlich erste Programmiersprache. Hoffentlich mit einem sinnvollen Buch? Aber egal, es fehlen dir echt viele Grundlagen. Das ist nicht schlimm, denn man kann das alles lernen und Einsicht ist der erste Weg zur Besserung ;)
Java von Kopf bis Fuss als Buch, Udemy Kurs in Deutsch und 1 Kurs in Englisch, dann noch Online-Unterlagen. Was denkst du: welche Grundlagen fehlen denn? Habe auch schon Front-End Languages erlernt (JavaScript, HTML, CSS). Ein wenig Pythonluft geschnuppert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 17
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
C Rechnungen-Aufgabe Java Basics - Anfänger-Themen 17
C Biene-Aufgabe Java Basics - Anfänger-Themen 2
K Algorithmen und Datenstrukturen Programmier Aufgabe Java Basics - Anfänger-Themen 10
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
B Methoden Ausgeben Aufgabe Java Basics - Anfänger-Themen 15
M Lösung Aufgabe - Java Programmiren lernen für Dummies Java Basics - Anfänger-Themen 11
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
F Aufgabe: Abstand von einem Punkt zu einem anderen Punkt Java Basics - Anfänger-Themen 10
T Aufgabe zum Verschlüsselungsalgorithmus Java Basics - Anfänger-Themen 11
J Erste Schritte Aufgabe Java Basics - Anfänger-Themen 24
T Methoden BinaryTree transformieren Aufgabe Java Basics - Anfänger-Themen 36
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
S Sortieralgorithmus - Aufgabe mit Lösungsidee Java Basics - Anfänger-Themen 20
A Aufgabe: Gleitkommazahlen Java Basics - Anfänger-Themen 3
A Java-Programmierungs Aufgabe Java Basics - Anfänger-Themen 2
U Aufgabe zu Kontrollstrukturen Java Basics - Anfänger-Themen 8
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
J Aufgabe als Feuertaufe Java Basics - Anfänger-Themen 8
S Unbedingte hilfe bei Java Aufgabe [Schleife / Zinsrechnung] Java Basics - Anfänger-Themen 14
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
H aufgabe 4 Java Basics - Anfänger-Themen 297
M Hilfe bei Projektorientierungs-Aufgabe !! Java Basics - Anfänger-Themen 3
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
H java aufgabe Java Basics - Anfänger-Themen 7
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
H was verlangt die aufgabe ? Java Basics - Anfänger-Themen 10
H java aufgabe Java Basics - Anfänger-Themen 68
H java aufgabe Java Basics - Anfänger-Themen 25
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
R Java Aufgabe (Teilbarkeit) Java Basics - Anfänger-Themen 7
H java aufgabe Java Basics - Anfänger-Themen 44
H java aufgabe Java Basics - Anfänger-Themen 7
H java string aufgabe Java Basics - Anfänger-Themen 10
H array aufgabe Java Basics - Anfänger-Themen 13
D Erste Schritte Lösen dieser Aufgabe, Hilfe! Java Basics - Anfänger-Themen 12
H aufgabe Java Basics - Anfänger-Themen 9
H lösung aufgabe Java Basics - Anfänger-Themen 12
S Hilfe für Aufgabe Java Basics - Anfänger-Themen 4
H java online aufgabe Java Basics - Anfänger-Themen 4
H Array aufgabe Java Basics - Anfänger-Themen 7
H oop aufgabe probe kalusur Java Basics - Anfänger-Themen 11
H oop aufgabe Java Basics - Anfänger-Themen 19
H JAVA AUFGABE Java Basics - Anfänger-Themen 7
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
J Problem bei Aufgabe "Geldstückelung" Java Basics - Anfänger-Themen 5
P Problem bei Java-Aufgabe Java Basics - Anfänger-Themen 12
B Verständnis Frage zu der Aufgabe Java Basics - Anfänger-Themen 30
L Klassen Geldrückgabe - Aufgabe Programmieren Java Basics - Anfänger-Themen 23
F Studium aufgabe ...Anfänger sucht hilfe :D Java Basics - Anfänger-Themen 24
V Hilfe Aufgabe Zahlen Java Basics - Anfänger-Themen 9
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
O Hilfe bei Aufgabe Java Basics - Anfänger-Themen 3
F Collection Aufgabe mit LinkedList Java Basics - Anfänger-Themen 3
F Problem mit der Aufgabe(Array) Java Basics - Anfänger-Themen 21
C Problem mit der Aufgabe Java Basics - Anfänger-Themen 3
J Brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 3
B For Schleife Aufgabe Java Basics - Anfänger-Themen 13
J Bradley Kjell java Aufgabe Java Basics - Anfänger-Themen 3
A Frage zur Aufgabe Uhrzeit einstellen mit Objekten Java Basics - Anfänger-Themen 18
S Verständnisproblem Aufgabe Java Basics - Anfänger-Themen 9
kokojamboo92 Problem bei Aufgabe Java Basics - Anfänger-Themen 9
H Aufgabe so richtig gelöst? Java Basics - Anfänger-Themen 14
C Terminkalender Aufgabe Java Basics - Anfänger-Themen 7
L Aufgabe Java Basics - Anfänger-Themen 2
M Aufgabe: Eine Klasse und viele Untermethoden Java Basics - Anfänger-Themen 30
D Erste Schritte ArrayList Aufgabe Java Basics - Anfänger-Themen 68
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
M Ausgabe einer kleinen Aufgabe Java Basics - Anfänger-Themen 2
D Primzahl Aufgabe Java Basics - Anfänger-Themen 5
Z Threads Executor Framework - Aufgabe auf n Threads aufteilen Java Basics - Anfänger-Themen 10
M Collection Aufgabe Java Basics - Anfänger-Themen 22
T Spezielle Aufgabe zu Schleifen Java Basics - Anfänger-Themen 3
N Java Aufgabe Java Basics - Anfänger-Themen 3
F Tarifrechner Aufgabe Java Basics - Anfänger-Themen 13
V Verstehe die Lösung einer Aufgabe von Grunkurs-Java nicht. Java Basics - Anfänger-Themen 11
J Aufgabe(Threads) richtig verstanden/implementiert Java Basics - Anfänger-Themen 27
H Aufgabe zu Zahlenmengen Java Basics - Anfänger-Themen 3
H Aufgabe zu Teilfolgen Java Basics - Anfänger-Themen 4
J Tipp für Aufgabe Java Basics - Anfänger-Themen 19
P Verstehe Lösung einer Aufgabe von "Grundkurs-Java" nicht Java Basics - Anfänger-Themen 5
F Java Aufgabe Java Basics - Anfänger-Themen 8
L Logarithmus-Aufgabe Java Basics - Anfänger-Themen 8
S Hinweis zu Fehler im Kalender-Code - Aufgabe 5.3 aus Grundkurs Programmieren in Java 7. Auflage Java Basics - Anfänger-Themen 4
P Hilfestellung bei einer Aufgabe Java Basics - Anfänger-Themen 3
N Datentypen StringToFloat - Aufgabe Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Anzeige

Neue Themen


Oben