Prof. Dr. Stephan Kleuker Hochschule Osnabrück Fakultät Ing.-Wissenschaften und Informatik - Software-Entwicklung - Grundlagen Programmierung Wintersemester 2011/12 Aufgabenblatt 8 17. Aufgabe (4 Punkte) Ergänzen Sie Ihre Klasse Zahlenanalyse aus Aufgabe 16 um folgende Methoden. a) Zu entwickeln ist eine Methode eingabeanalyse(), die den Nutzer immer wieder zur Eingabe einer Fließkommazahl (Double) auffordert, die immer zwischen -100.0 und 100.0 liegt (muss geprüft werden, falsche Werte ignorieren) und die nach jeder Eingabe den kleinsten und den größten bisher eingegebenen Wert sowie den Mittelwert (Durchschnitt aller eingegebenen Werte) ausgibt. Überlegen Sie, welche Informationen man in lokalen Variablen speichern muss (man muss sich nicht alle Zahlen merken). Das Programm wird mit der Eingabe der Zahl 102 terminiert, nutzen Sie die Klasse EinUndAusgabe.java von der Veranstaltungsseite. Ein Nutzungsdialog kann wie folgt aussehen, Eingaben sind umrandet. Geben Sie einen Wert ein: 3.5 Minimum: 3.5 Maximum: 3.5 Schnitt: Geben Sie einen Wert ein: 7.5 Minimum: 3.5 Maximum: 7.5 Schnitt: Geben Sie einen Wert ein: 2 Minimum: 2.0 Maximum: 7.5 Schnitt: Geben Sie einen Wert ein: 4.33 Minimum: 2.0 Maximum: 7.5 Schnitt: Geben Sie einen Wert ein: 101 Geben Sie einen Wert ein: 102 3.5 5.5 4.333333333333333 4.3325 b) Entwickeln Sie eine Methode zahlenRaten() mit der Sie mit dem Computer „Zahlenraten“ spielen können. Dazu soll der Computer eine Zahl zwischen 1 und 100 (jeweils einschließlich) wählen. Die Klasse EinUndAusgabe.java bietet dazu die Methode zufall(Integer,Integer), die einen Zufallswert zwischen den übergebenen minimalen und maximalen Werten liefert. Danach kann der Spieler seinen Tipp eingeben und der Computer antwortet mit „zu hoch“, „zu tief“ oder „korrekt“. Weiterhin zählt der Computer die Anzahl der Versuche und gibt dies vor jedem Rateversuch aus. Ein Nutzungsdialog kann wie folgt aussehen, Eingaben sind umrandet. 1.Versuch: Zahl raten: 67 zu hoch 2.Versuch: Zahl raten: 46 zu hoch 3.Versuch: Zahl raten: 23 zu hoch 4.Versuch: Zahl raten: 11 zu tief 5.Versuch: Zahl raten: 17 zu tief 6.Versuch: Zahl raten: 20 Bravo, getroffen. 18. Aufgabe (5 Punkte) Method Summary void neuesRechteck(java.lang.Integer x, java.lang.Integer y, java.lang.Integer breite, java.lang.Integer hoehe) Methode zum Zeichnen eines neuen Rechtecks. void neuesRechteck(java.lang.Object quelle, java.lang.String name, java.lang.Integer x, java.lang.Integer y, java.lang.Integer breite, java.lang.Integer hoehe) Methode zum Zeichnen eines neuen Rechtecks, das verändert und dessen Nutzung beobachtet werden kann. void loescheObjekt(java.lang.Object quelle, java.lang.String name) Ein mit den Parametern quelle und name vorher erzeugtes graphisches Element wird gelöscht. Seite 1 von 2 Prof. Dr. Stephan Kleuker Hochschule Osnabrück Fakultät Ing.-Wissenschaften und Informatik - Software-Entwicklung - Grundlagen Programmierung Wintersemester 2011/12 Aufgabenblatt 8 Schreiben Sie ein Programm, das es dem Nutzer ermöglicht, Rechtecke auf einem Interaktionsbrett zu zeichnen und wieder zu löschen. Sie müssen dazu die letzten beiden der oben genannten Methoden nutzen, damit Sie wieder auf die Rechtecke zugreifen können. Die erste Methode wurde bereits zum Zeichnen von Rechtecken genutzt. Die zweite Methode hat zwei Parameter mehr, vom Typ Object und String, die genutzt werden, damit man später wieder auf das gezeichnete Rechteck zugreifen kann. Vereinfachend kann als erster Parameter immer this genutzt werden. Der String ist dann ein Name, der eindeutig sein muss. Die Methode loescheObjekt(Object, String) bietet dann die Möglichkeit, Rechtecke (und andere graphische Elemente) wieder zu löschen. Damit dies möglich ist, müssen die Rechtecke unterschiedliche Namen erhalten, was bei der Eingabe zu prüfen ist. Ein Programmfragment mit dem ein Rechteck gezeichnet und gleich wieder gelöscht wird, sieht wie folgt aus. Interaktionsbrett ibrett = new Interaktionsbrett(); ibrett.neuesRechteck(this,"gnarf",10,10,40,40); ibrett.loescheObjekt(this,"gnarf"); Nutzen Sie zur Verwaltung der Rechtecke eine eigene Klasse Rechteck (Sie können selbstgeschriebene Klassen aus vorherigen Aufgaben nutzen und abändern) und zur Verwaltung der Sammlung von Rechtecken eine ArrayList<Rechteck>. Informieren Sie den Nutzer über nicht nutzbare Namen. Ein Nutzungsdialog kann wie folgt aussehen, Eingaben sind umrandet. Anmerkungen: Damit Sie beim Ausprobieren nicht immer wieder viele Rechtecke eingeben müssen, können Sie z. B. eine Methode ergänzen, mit der drei von Ihnen fest vorgegebene Rechtecke bereits ergänzt werden, im folgenden Beispiel haben die Rechtecke die Namen „R1“, „R2“ und „R3“. Sie dürfen vereinfachend davon ausgehen, dass der Nutzer nur positive Werte eingibt. (0) Programm beenden (1) neues Rechteck (2) Rechteck loeschen: 1 eindeutiger Name: Ute X-Wert: 60 Y-Wert: 70 Breite: 30 Hoehe: 20 Rechteck Ute uebernommen (0) Programm beenden (1) neues Rechteck (2) Rechteck loeschen: 1 eindeutiger Name: Ute Name schon vergeben. (0) Programm beenden (1) neues Rechteck (2) Rechteck loeschen: 1 eindeutiger Name: Ulf X-Wert: 91 Y-Wert: 70 Breite: 20 Hoehe: 20 Rechteck Ulf uebernommen (0) Programm beenden (1) neues Rechteck (2) Rechteck loeschen: 2 R1 R2 R3 Ute Ulf Name des Rechtecks: R1 R1 geloescht (0) Programm beenden (1) neues Rechteck (2) Rechteck loeschen: 2 R2 R3 Ute Ulf Name des Rechtecks: Uta Gibt es nicht (0) Programm beenden (1) neues Rechteck (2) Rechteck loeschen: 0 Freiwillig: Ändern Sie Ihr Programm so ab, dass sich die Rechtecke nicht überlappen dürfen. Seite 2 von 2