Fernseher-Aufgabe (Methoden, Klassen und Objekte)

Diskutiere Fernseher-Aufgabe (Methoden, Klassen und Objekte) im Java Basics - Anfänger-Themen Bereich.
H

httpdigest

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

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

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)
 
T

temi

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

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

@ 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

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

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

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.
 
T

temi

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

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

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);

    }

}
 
T

temi

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.
 
T

temi

Ü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?
 
T

temi

@mihe7 hat die Frage ja schon mal gestellt: Lernst du Java privat, in der Schule, Ausbildung, Studium?
 
Thema: 

Fernseher-Aufgabe (Methoden, Klassen und Objekte)

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben