Berner Fachhochschule Hochschule für Technik und Informatik, HTI Fachbereich Mikrotechnik Klasse: F2a, F2b Name, Vorname: Prüfung 2. Februar 2008 Informatik 3 Dauer: Von 8:00 bis 10:00 Zulässige Hilfsmittel: Abgegebene Skripte, Übungen und Musterlösungen, ergänzt durch eigene Notizen. Buch von Jobst oder ein anderes Java-Buch Taschenrechner Beilagen: keine Gewichtung / Bewertung der Aufgaben: Aufgabe Max. Punktzahl: 1 16 2 32 3 24 Total: 72 erreicht: Viel Erfolg Dr. E. Firouzi Seite 1 von 9 Note Aufgabe 1 Punkteverteilung: Total: 16 Eine Reihe von festen Steuerelement haben sich für Anwendungen innerhalb der graphischen Benuzeroberfläche durchgesetzt, zum Beispiel Schalter, Rollbalken unw. Nennen Sie 8 Steuerelement aus dem Paket AWT (4 Punkte)! Layoutmanager erlauben die Komponenten nach diversen Strategien in einem Container zu platzieren. Nennen die 5 Strategien des Paket AWT, und beschreiben Sie kurz ihre Platzierungsstrategie (4 Punkte)! Seite 2 von 9 Im JDK 1.1 wurde die Bearbeitung von Ereignisse auf das sog. „Delegation Event Model“ nach dem Beobachter-Entwurfmuster umgestellt. Beschreiben Sie kurz dieses Model (4 Punkte)! Was sind die Unterschiede zwischen eine normale Java-Anwendung und ein Applet (4 Punkte)? Seite 3 von 9 Aufgabe 2 Punkteverteilung: Total: 32 Programmierung von einem Zahlenratenspiel Programmieren Sie ein Zahlenratenspiel auf die nächste Seite, welches eine unsichtbare Geheimzahl im Bereich von 1 bis 100 erzeugt. Der Spieler muss anschliessend diese Zahl mit möglichst wenig Versuchen raten. Benutzeroberfläche Nach dem Start des Programms erscheint das Spielfeld mit einem Textfeld für die Eingabe der Ratezahl (Guess number), einem Textfeld für die Ausgabe der Anzahl Versuche (Tries), einem „Enter“ und einem „Exit“ Schalter sowie einem Textfeld für die Bewertung der Ratezahl (Guess number). Spielvorgehen Der Spiele muss zuerst seine Ratezahl in die Meldezeile eingeben und anschliessend das Enter Button drücken. Das Programm vergleicht dann die Ratezahl mit der Geheimzahl und gibt eine Meldung aus, ob sie höher, niedriger oder richtig war. Nach jedem Versuch muss die Anzahl der Versuche im entsprechenden Ausgabefeld inkrementiert werden. Hinweise Der Aufruf der Methode „Math.random()“ lieferte ein Zufallwert des Typs double, welcher zwischen 0 und 1 ist. Seite 4 von 9 import java.awt.*; import java.awt.event.*; import java.awt.event.ActionListener; public class GuessNumber extends Frame implements ActionListener { int secretNumber; int tries = 0; TextField guessNumber; TextField tryFiled; TextField infoMessage; /* 18 points: Definition of the constructor. * This method must initialize the GUI */ public GuessNumber (String Title) { } Seite 5 von 9 /* * * * 14 points: Definition of the method actionPerformed(). This method is called by the event handler. It must read the value entered by the player, and compare it with the secret one */ public void actionPerformed (ActionEvent event) { } /* 2 points: Definition of the main method */ public static void main (String argv[]) { } } Seite 6 von 9 Aufgabe 3 Punkteverteilung: Total: 26 Programmierung des Applets „Eyes“ Definieren Sie auf die nächste Seite das Applet „Eyes”, welches aus einem „Auge“ besteht. Dieses Aug soll wie folgt die Mausbewegung folgen: … … Dieser Eindruck soll dadurch erzeugt werden, dass nach jeder Mausbewegung ein gefüllter Kreis (das Augapfel) in Richtung der Mausposition in einem Kreises (das Auge) gezeichnet wird. Berechnung mx und my bezeichnen den Mittelpunkt der Zeichenfläche: mx = WIDTH 2 ; my = HEIGHT 2 . Für den Mittelpunkt (mx1, my1) des gefühlten Kreises vom Radius rrr = 0.3 * r gilt somit: mx1 = xMouse dist * r * 0.7 my1 = yMouse dist * r * 0.7 Abstand ist der Abstand der Maus vom Mittelpunkt. Alle Koordinaten sind hier in Bezug auf den Mittelpunkt der Zeichenfläche gegeben. mx1,my1 distance mx,my rrr r Seite 7 von 9 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Eyes extends Applet implements MouseMotionListener { /* Definition of the attributes */ final int WIDTH = 300; final int HEIGHT = 160; int int int int int r = HEIGHT / 2; mx = WIDTH / 2; my = HEIGHT / 2; mx1; my1; /* 6 points: Definition of the method init(). * This method must initialize the applet Eyes as * source and observer of the events MouseMotionListener */ public void init () { } public void mouseDragged (MouseEvent event) { } Seite 8 von 9 /* * * * 12 points: Definition of the method mouseMoved(). This method is called from the event handler. It must read the position of the mouse and compute the coordinates of the small circle (mx1 and my1). */ public void mouseMoved (MouseEvent event) { } /* 8 points: Definition of the method paint(). * This method must display the big circle in the middle of the screen * and the small circle at position mx1 and my1 */ public void paint (Graphics g) { } } Seite 9 von 9