Lösungen

1. Das erste Projekt

Fragen

1.      Ein Projekt kann aus mehreren "Paketen" (package) und dies wiederum aus mehreren Klassen (class) bestehen, von denen jede ihr eigenes Programm haben kann.

2.      Ein String ist eine Zeichenkette, besteht also aus fast beliebigen Zeichen, darunter nicht nur Buchstaben, sondern auch Ziffern und Satzzeichen. (Mit den Anführungsstrichen sollte man allerdings vorsichtig sein.)

3.      Ein Paket (package) ist sozusagen eine Obermenge, da es aus mehreren Klassen (class) bestehen kann. Ein Java-package ist z.B. swing (in dem sich so komfortable Dinge wie Dialogboxen finden).

Keine Aufgaben

 

2. Kontrolle und Auswahl

Fragen

1.      Das eine (=) ist ein Zuweisungsoperator, damit lassen sich z.B. Werte an Variablen zuweisen. Das andere (==) ist ein Vergleichsoperator, um Werte von Zahlen auf Gleichheit zu prüfen.

2.      Hier ist else angebracht:

if (Zahl == 0) System.out.println ("Kein Kehrwert");

else System.out.println ( 1/Zahl);

3.      Für das Kopieren sind Copy und Paste, für das Umbenennen Refactor/Rename zuständig.

Aufgabe

1.      Schau mal in den Quelltext von Hallo2A.java.

2.      Die Lösung findest du im Projekt Kwert1.

3.      Hier lohnt sich ein Blick in die Datei Kwort1.java.

 

3. Bedingungen

Fragen

1.      Der Haken ist, dass auch "zu groß" ausgegeben wird, wenn die Zahl richtig ist: Das Gegenteil (else) von < ist nämlich >=.

2.      Nein, denn im ersten Fall wird eine ganze Zahl zwischen 1 und 6, im zweiten Fall zwischen 0 und 6 erzeugt.

Aufgaben

1.      Die "sichere" Lösung steht im Projekt Zensur4.

2.      Hier findet sich die try-catch-Lösung in der Datei Raten4.java.

3.      Ein Lösungsversuch ist das Projekt Wmspiel1.

 

4. Schleifen und Felder

Fragen

1.      Der Wert von Konstanten ist unveränderlich festgelegt, der von Variablen lässt sich (beliebig) verändern.

2.      Bei while wird am Anfang, bei do-while am Ende einer Schleife die Bedingung getestet, ob die Schleife wiederholt werden soll, for kann alles, was while kann, wird aber häufig (nur) als Zählschleife eingesetzt.

3.      Ganz allgemein lässt sich ein Variablenfeld so erzeugen

Typ[] FeldName = new Typ[Anzahl_der_Elemente];

// wobei Typ z.B. int, float oder String sein kann

Aufgaben

1.      Hier wirst du beim Projekt Kwort2 fündig.

2.      Dazu schau dir die Datei Raten4A.java an.

3.      Die Lösung findest du in der Datei Mittel1.java.

4.      Eine Möglichkeit bietet das Projekt Namen1.

 

5. Eine eigene Klasse

Fragen

1.      Klassenmethoden bzw. -attribute benötigen den Zusatz static und sind dann ohne Erzeugung eines Objekts verfügbar (innerhalb der main-Methode, die zur Klasse gehört).

2.      Probier es aus: Ohne public kannst du auf keine Eigenschaft oder Methode mehr zugreifen, Eclipse gibt entsprechende Fehlermeldungen aus. Dasselbe gilt für private statt public. Würde man andererseits auch die Attribute auf public setzen, so könnte diese direkt im Hauptprogramm verwenden und dort – ohne »Wissen« des Objekts – manipulieren.

3.      Alle Eigenschaften/Attribute und Methoden eines Objekts werden zu einer Einheit zusammengefasst. Ein Zugriff von außen ist nur über den Namen des Objekts möglich – wenn die Elemente als public vereinbart wurden.

Aufgaben

1.      Die Lösung steht im Projekt Mathe5A.

2.      Hier wirst du beim Projekt Mathe5B fündig.

3.      Schau mal in die Quelltexte der Projekte Raten5 und Raten5a.

 

6. Einstieg in Swing

Fragen

1.      Bisher kennen wir JFrame als Hauptrahmen bzw. Hauptkomponente, JPanel als Platte bzw. Behälter für weitere Komponenten, und JButton als Schaltfläche.

2.      Komponenten werden (über addActionListener) einem ActionListener zugeordnet, über actionPerformed lassen sich dann die Komponente betreffende Ereignisse (z.B. Klick auf einen Button) überprüfen.

Aufgaben

1.      Dazu schau mal in die Datei Horoskop1.java. (Sie enthält allerdings nur ein Gerüst ohne die Vorsagetexte. Die musst du dir selbst einfallen lassen.)

2.      Eine Lösungsmöglichkeit findest du im Projekt Lotto4.

 

7. Combo, Radio oder Check?

Fragen

1.      Das erledigt die Methode getSelectedIndex, mit der du die Nummer des entsprechenden Eintrags in der Liste erhältst (gezählt wird ab 0).

2.      Hierzu dient die Methode isSelected, die entweder true (für selektiert/ausgewählt) oder false zurückgibt.

3.      In Boxen zusammengefasste Komponenten werden vom Layoutmanager als Einheit behandelt und immer komplett angeordnet. Außerdem kann man mit Boxen Rand- oder Zwischenzonen einrichten, um das Layout zu verbessern.

Aufgaben

1.       ¯

2.       ¯

3.      Hier wirst du in den Projekten Horoskop1A, Horoskop2 und Horoskop3 fündig.

4.      Dazu schau mal in den Quelltext zum Projekt Hallo4B.

 

8. Aktion Seelenklempner

Fragen

1.      Anzeigefelder vom Typ JLabel können nur Text anzeigen, während man in Eingabefeldern vom Typ JTextField Text eingeben und bearbeiten kann.

2.      Eine Komponente besitzt den Fokus, wenn sie als erste in einer »Ansammlung« von Komponenten aktivierbar bzw. »ansprechbar« ist. Will man beim Programmlauf einer Komponente den Fokus geben, muss man sie erst anklicken.

3.      Man benötigt dazu sogenannte Stream-Objekte z.B. vom Typ Reader oder Writer. Für Textdateien gibt es die Buffered-Typen. Das Laden und Speichern von Daten geschieht dann über Methoden wie read oder write.

Aufgaben

1.      Eine Lösung findest du im Projekt Prozent1.

2.      Hierzu kannst du dir mal das (ausbaufähige) Projekt Vokabel1 anschauen. (Es gibt auch eine Textdatei mit dem Namen Vokabeln.txt.)

 

9. Menüs und Dialoge

Fragen

1.      Ein Menü vom Typ JMenu hängt an einer Menüleiste (JMenuBar) und verfügt über meist mehrere Einträge vom Typ JMenuItem?

2.      Ein Popupmenü (JPopupMenu) ist sozusagen ein Pulldownmenü ohne Menüleiste, das nicht irgendwo "fest hängt", sondern z.B. unter Windows durch Klick auf die rechte Maustaste an der Mausposition erscheinen kann.

3.      Die Methoden showOpenDialog und showSaveDialog geben einen Ganzzahlwert zurück, für den im Swing-Paket Konstanten definiert wurden. Ist dieser Wert APPROVE_OPTION, dann wurde der Dialog nicht abgebrochen (sonst CANCEL_OPTION).

Aufgaben

1.      Die try-catch-Strukturen stehen neben einer kleinen Erweiterung zum Drucken im Java-Quelltext zum Projekt Klemp8A.

2.      Eine solche Erweiterung gibt es im Projekt Vokabel2.

 

10. Grafik in Java

Fragen

1.      Der Ursprung (auch Null-Null-Punkt genannt) beginnt oben links in der Ecke der Anzeigefläche (z.B. Bildschirm)

2.      Alle Werte sind paarweise zu betrachten: Bei drawLine geht es um den Start- und den Endpunkt einer Geraden. Bei drawRect und drawOval ist es eigentlich das Gleiche, nur "wandert" der Stift einen Umweg: statt "schräg" führt der Weg hier nur horizontal oder vertikal zum Ziel. Und drawOval müht sich anschließend noch um eine möglichst große "Rundung" innerhalb eines (unsichtbaren) Rechtecks.

Aufgaben

1.      Die Lösung findest du im Projekt Grafik6A.

2.      "Hintergrundvariabel" ist das Projekt Grafik7A.

3.      Dazu schau dir mal den Quelltext in den Projekten Haus1 und Haus2 an.

 

11. Animationen

Keine Fragen

Aufgaben

1.      Die Änderungen stehen im Quelltext zum Projekt Movie1A.

2.      Das Projekt Grafik7b arbeitet mit Feldern für die Punktkoordinaten und der sleep-Methode.

3.      Hier wirst du im Projekt Movie5 fündig.

 

12. Komponenten und UIs

Fragen

1.      protected bietet mehr als private, denn es macht den Zugriff teil-öffentlich: private heißt ja: nur in der aktuellen Klasse und ihren Objekten gültig. protected erweitert den Zugriff für die Nachkommen. public erweitert den Zugriff auch für Nicht-Familienmitglieder.

2.      Mit paintComponent wird das Komponenteninnere, mit paintBorder das Äußere dargestellt. Beide Methoden lassen sich für neu abgeleitete Klassen neu definieren. Sie müssen nicht extra aufgerufen werden, weil auch aus der Kindklasse heraus eine automatische Aktivierung erfolgt.

3.      UI ist die Abkürzung für "User Interface" (= Benutzeroberfläche) und GUI ist die grafische Variante. In Swing stehen derzeit die Typen Metal (= Standard), Motif und Windows zur Verfügung. Im Internet findet man weitere Angebote von Usern.

Aufgaben

1.      Die Definition der neuen Komponente steht in JOnOffButton.java, ein Testprojekt dazu ist OButton4.

2.      Beispiele mit anderen Looks&Feels sind Hallo9, Klemp9 und Movie6.

 

13. Polymorphie

Fragen

1.      Überschreiben kann man eine geerbte Methode durch eine neue. Auch überladene Methoden haben den gleichen Namen, sind aber in derselben Klasse definiert und unterscheiden sich z.B. in Typ oder Parameterliste.

2.      OOP ist die Abkürzung für Objektorientierte Programmierung. Sie bietet Möglichkeiten zur Kapselung, Vererbung und Polymorphie.

Aufgabe

1.      Eine Lösungsmöglichkeit findest du im Projekt Monster4.

 

14. Einblick in die Spielprogrammierung

Keine Fragen

Aufgaben

1.      Die Änderung findest du im Projekt GPlay2A.

2.      Im Projekt GPlay4 hat der Käfer freien Lauf.