Grundlagen der Programmierung (CS101)
Transcrição
Grundlagen der Programmierung (CS101)
UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Bernoullistrasse 16 CH 4056 Basel Assistenten Bernhard Egger Andreas Forster Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer Webseite http://informatik.unibas.ch/index.php?id=cs101_hs13 Grundlagen der Programmierung (CS101) - Blatt 9 Theorie [12 Punkte] - Praxis [4 Punkte] Vorbesprechung 18. - 22. Nov Abgabe 25. - 29. Nov Aufgabe 1: Game of Life - AWT (Praxis) [4 Punkte] Schreiben Sie eine JAVA-Klasse GOLFenster zur Visualiserung des Game Of Life. Schreiben Sie eine Klasse welche von java.awt.Component abgeleitet ist. Diese soll im Konstruktor eine Klassenvariable JFrame erstellen und sich selbst dem JFrame hinzufügen. Dem Konstruktor soll das Game Of Life übergeben werden welche auch als Klassenvariable gespeichert wird. Implementieren Sie ausserdem noch folgende Methoden: // zeichnet das Feld public void paint(Graphics g) { ... } // gibt die benögtigte Grösse zum Zeichnen zurück public Dimension getPreferredSize() { ... } // soll eine Aufruf zum neu Zeichnen an das JFrame senden public void redraw() { ... } Schreiben Sie Ihr Programm so um, dass an Stelle der Konsolenausgabe die Grakausgabe aufgerufen wird. [3 Punkte] Erweitern Sie die Klassen so, dass der Benutzer mit der Maus Zellen zum leben erwecken kann. [1 Punkt] Grundlagen der Programmierung Blatt 9 Aufgabe 2: Ablauogik von Ausnahmen (Theorie) Seite 2 / 3 [4 Punkte] Geben Sie zu dem unten stehendem Programmstück die Ausgabe auf der Komandozeile an, wenn gilt: (a) condition = true (b) condition = false Geben Sie für jeden Schritt eine kurze Bergründung an. class Exceptions { public static class E1 extends Exception {} public static class E2 extends Exception {} public static void main (String[] args) { try { System.out.print("Urs "); m1(); System.out.print("Regula "); } catch (E1 e) { System.out.print("Kino "); } catch (E2 e) { System.out.print("allein "); } finally { System.out.print("nach "); } System.out.println("Hause "); } static void m1() throws E1, E2 { try { System.out.print("geht "); if (condition) throw new E1(); else throw new E2(); } catch (E1 e) { System.out.print("sehr "); } finally { System.out.print("gerne "); } System.out.print("mit "); } } Grundlagen der Programmierung Blatt 9 Aufgabe 3: Fehlersuche (Theorie) Seite 3 / 3 [8 Punkte] Schauen Sie sich die folgenden Programmstücke an, und nden Sie die Programmierfehler, die sich dort eingeschlichen haben. Erläutern sie kurz was das Problem ist, und geben Sie eine korrigierte Version an. Eine Routine, um die Position eines Buchstabens in einem Text zu bestimmen [2 Punkte] public static int findChar(String s, char c) { for (int i=0; i<s.length(); ++i) if (s.charAt(i) == c) break; return i; } Eine Accountklasse, und die dazughörige Testroutine. Die gegebene Implementation enthält 6 Fehler. [6 Punkte] public class Account { private double value; private String name; Account(String name, double value) { name = name; value = value; } public String toString() { "Account: " + name + " contains " + value + "chf"; } public static void testAccount() { Account accounts[]; accounts[0] = new Account("Petra", 111); accounts[1] = new Account("Klaus", 999); for (i=0; i <= accounts.length; ++i) System.out.println(accounts[i]); } }