Kurs:Java – ein schneller Einstieg/Übersicht behalten/Lösungen
Lösung der Aufgabe 5.1
Bearbeiten- Richtig! Es ist der reine Anzeigebereich, ohne Rahmen und Menleiste.
- Falsch! Es gibt keine JContainer. Vorherige Aufgaben wiederholen.
- Richtig! Die Klasse JFrame stellt jeder ihrer Instanzen ein ContantPane zur Verfügung, welches sich wie ein normales JPanel verhält. Deshalb kann es auch durch dieses ersetzt werden.
Lösung der Aufgabe 5.2
BearbeitenDie Klasse MyFrame stellt ein JFrame-Fenster bereit, und ersetzt das ContentPane durch ein JPanel. Das JPanel wird innerhalb der main-Methode instanziert.
Die Klasse RaballPanel erweitert die Klasse JPanel
... extends JPanel
Sie ist also ebenfalls eine (erweiterte) Instanz von JPanel.
Statt das ContentPane durch das JPanel innerhalb der main-Methode zu ersetzen, wird jetzt einfach eine Instanz von RabattPanel benutzt.
// frame.setContentPane( panel);
frame.setContentPane( new RabattPanel());
Es genügt also, das interne JPanel/tt> durch RabattPanel zu ersetzen.
Lösung der Aufgabe 5.3
BearbeitenHier kann natürlich nur der erste Teil gezeigt werden.
Die betroffenen Zeilen sind:
float rabattFaktor = rabattWert / 100;
float betragDifferenz = betragWert * rabattFaktor;
float endBetrag = betragWert – betragDifferenz;
Die vorhandenen Deklarationen von Variablen ist sehr gefährlich. Optimierungen erfordern so meist einen erheblichen Aufwand. Ausschließlich für Konstanten (finale Variablen) sollte diese Art der Deklaration verwendet werden. Deshalb werden die Zeilen geändert zu
float rabattFaktor = 0.0;
float betragDifferenz = 0.0;
float endBetrag = 0.0;
rabattFaktor = rabattWert / 100;
betragDifferenz = betragWert * rabattFaktor;
endBetrag = betragWert – betragDifferenz;
So bleibt eine optimierungsbedingte Entfernung einzelner Variablen übersichtlicher. Die Trennung von Programm und Daten ist konsequenter.
Lösung der Aufgabe 5.4
BearbeitenDer erste Teil ist wieder rein subjektiv.
Was passiert, wenn statt Ziffern andere Zeichen eingegeben werden? Das Programm muss auf Tippfehler reagieren und darf nicht einfach irgendwelche Werte erzeugen. Deshalb wurden die Methoden nicht in die return-Anweisung übernommen.