Fernseher programmieren mit Java

thor_norsk

Bekanntes Mitglied
Guten Abend,
ich habe eine Aufgabe erhalten und würde gerne Wissen, ob ich die Aufgabe richtig gelöst habe?

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

Mein Vorschlag wäre:

[CODE lang="java" title="Fernseher Programmieren mit Java"]class TvSteuern {

// Instanzvariablen

int lautStaerke;
String programm;
boolean eingeschaltet = false;


boolean tvEinschalten() {

this.eingeschaltet = true;
System.out.println("Der Fernseher ist eingeschaltet");
return eingeschaltet;
}

boolean tvAusschalten () {
this.eingeschaltet = false;
System.out.println("Der Fernseher ist ausgeschaltet!");
return eingeschaltet;
}

// Lautstärkenregelung mit 1,2,3,4,... ändern.
void lautRegeln(int drehen) {

if(eingeschaltet == true) {
this.lautStaerke = drehen;
System.out.println("Die aktuelle Lautstärke beträgt:"+lautStaerke);
}
else {
System.out.println("Der Fernseher ist ausgeschaltet, bitte Schalten Sie den Fernseher ein!");
}
}

void programmWechseln(String programmNeu) {

if(eingeschaltet == true) {
this.programm = programmNeu;
System.out.println("Sie haben folgendes Programm gewählt:"+programm);
}
else {
System.out.println("Der Fernseher ist ausgeschaltet, bitte Schalten Sie den Fernseher ein!");
}
}

void getStatus() {

if (eingeschaltet == true) {
System.out.println("Der Fernseher ist eingeschaltet!");
System.out.println("Sie haben folgendes Programm gewählt:"+programm);
System.out.println("Die aktuelle Lautstärke beträgt:"+lautStaerke);
}
else {
System.out.println("Der Fernseher ist ausgeschaltet!");
}
}


}

public class Fernseher {

public static void main(String[] args) {

TvSteuern bildschirm = new TvSteuern();
bildschirm.getStatus();
bildschirm.tvEinschalten();
bildschirm.lautRegeln(3);
bildschirm.programmWechseln("ZDF");
bildschirm.programmWechseln("Pro7");
bildschirm.programmWechseln("ARD ");
bildschirm.tvAusschalten();

}
}
[/CODE]
 
- Greifen Sie nur über die Methoden der Klasse auf die Instanzvariablen zu. Das gilt auch für die Ausgabe der Werte.
Das machst du zwar, aber du solltest den Zugriff von außen auf die Instanz Variablen auch unterbinden, also Instanz Variablen private setzen.

if(eingeschaltet == true)
Ist zwar syntaktisch nicht falsch aber unschön, da eingeschaltet ja ein boolean ist reicht if(eingeschaltet).
Das ist erstens schöner, zweitens kann es passieren dass du ein = Zeichen beim tippen vergisst. Der Compiler gibt dir keinen Fehler, da if(eingeschaltet = true) ja ein gültiger ist.
boolean Ausdruck vorhanden ist, jedoch ist deine Bedingung dann immer true.
Würde ich anders nennen. Zb printStatus(). Methoden die mit get anfangen sind eigentlich Getter die einen Wert zurückgeben (idr einen Wert einer Instanz Variabeln)
 
Habe ich ausprobiert und habe was dazu gelernt . Danke! printStatus() ist auch eine gute Idee. Ansonten denke ich, habe ich Alle Bedingungen erfüllt oder ?
 
Ich würde Fernseher in z. B. FernseherTest und TvSteuern in Fernseher umbenennen. Dann ist klar: ein Objekt der Klasse Fernseher stellt einen Fernseher dar. Und die Test-Klasse ist einfach nur zum Test.
 

Zurück
Oben