Grundlagentest für Programmierung Ich hab gerade noch gesagt, der Test wird nicht bewertet, also keine Panik Wer einen Rechtschreibfehler findet darf ihn behalten. Kontrollstrukturen Schreibe eine Methode, welche eine int Variable x entgegen nimmt und das Doppelte von x zurückgibt, wenn x positiv ist und die sonst das dreifache von x zurückgibt. public int methode(int x) { } Konstruiere eine Methode, welche eine int Variable entgegen-nimmt und den Text “Das ist Null” ausgibt, falls x den Wert 0 hat. Hat x den Wert 42 soll sie den Text „Sinn des Lebens“ ausgeben und ansonsten den Text „Nichts besonderes“. Verwende nicht die IF-Anweisung. public void methode(int x) { } Schleifen Konstruiere eine Methode, welche mit einer Schleife die Zahlen von 1 bis 10 ausgibt. Verwende dazu eine WHILE-Schleife public void methode() { } Konstruiere eine Methode, welche mit einer Schleife die Zahlen von 1 bis 10 ausgibt. Verwende dazu eine DO-WHILE-Schleife public void methode() { } Konstruiere eine Methode, welche mit einer Schleife die Zahlen von 1 bis 10 ausgibt. Verwende dazu eine FOR-Schleife public void methode() { } Sprunganweisungen Ergänze die folgende Methode so, daß die Methode 42 ausgibt. public void methode() { int i = 0; while(i < 100) { i++; } System.out.println(i); } In der Schleife läuft i von -10 bis 10. Dabei wird in jedem Durchlauf der aktuelle Wert von i auf die Variable m multipliziert. Da zwischendurch auch i = 0 gilt, wird natürlich am Ende m = 0 herauskommen (Wenn ein Faktor eines Produktes 0 ist, ist das Produkt auch 0!). Ergänze die Methode nun so, das i nicht auf m multipliziert wird, falls i = 0 ist. Die Anweisung m *= 1 soll da bleiben wo sie ist! public void methode() { int m = 1; for(int i = -10; i <= 10; i++) { m *= i; } } Arrays / Reihungen Ergänze die Methode so, das am Ende in dem Array X die Zahlen von 1 bis 5 stehen. public void methode() { int [] X = new int[5]; } Die folgende Methode erzeugt einen Fehler. Erkläre kurz warum! public void int [] X[1] = X[2] = X[3] = } methode() { X = new int[3]; 42; 23; 5; [ Die folgende Methode erzeugt einen Fehler. Ändere die Methode so, das sie fehlerfrei funktioniert, indem du eine Anweisung streichst. ] public void int [] X[0] = X[1] = X[2] = X[3] = } methode() { X = new int[3]; 42; 23; 5; 13; Datenabstraktion Beschreibe ganz kurz, was Datenabstraktion im Bezug auf „Selektoren“ bedeutet. [ ] Wer hat Zugriff auf eine Variable die mit der Zugriffsspezifikation private bzw. public deklariert wurde? [ ] Kreuze an, was in einer von Javadoc erstellten Schnittstellendokumentation auftaucht: □ Namen der dokumentierten Klassen □ Beschreibungen von Parametern einer Methode □ Liste aller Methoden □ Reichlich Erdnussbutter Klassen & Objekte Geben ist die folgende Klasse mit einem Testprogramm: public class Rechteck { public int breite, hoehe; Rechteck(int breite, int hoehe) { this.breite = breite; this.hoehe = hoehe; } public int flaeche() { return breite*hoehe; } public boolean groesserAls(Rechteck R) { return this.flaeche() > R.flaeche(); } public static void main(String [] Argumente) { Rechteck A, B, C; A = new Rechteck(10, 20); B = new Rechteck(5, 30); System.out.println( C.breite ); B.hoehe = 42; System.out.println( A.groesserAls(B) ); C = A; C.hoehe += 5; System.out.println( A.groesserAls(B) ); // PROGRAMMENDE! } } Das Programm erzeugt einen Fehler. Behebe den Fehler, dadurch das du eine Zeile streichst. Welche Ausgaben liefert das Testprogramm zu der Rechtecksklasse? [ Stelle die Speicherbelegung zum Programmende zeichnerisch dar! ] Wieviele Objekte vom Typ „Rechteck“ erstellt das Testprogramm? [ ] Gültigkeitsbereiche Gegeben ist die folgende Klasse public class private private private private private KlassenName { static int a; static int b; static double c; static boolean d; static int e; public static void main(String [] Argumente) { a = 4; // HIER for(b = 0; b < 10; b++) { // HIER int c; c = a; // HIER } c = (double)b; // HIER { int e; e = a * b + 23; // HIER } e += a; // HIER } } Schreibe bei allen Zeilen die mit „// HIER“ markiert sind auf, wo die Variablen auf die sich die Bezeichner beziehen deklariert wurden. Am einfachsten geht es mit Pfeilen (Für die erste Anweisung habe ich es einmal vorgemacht). Konstruktoren Kreuze an, was richtig ist: Eine Klasse kann über mehrere Methoden mit identischen Namen verfügen, wenn sich die Parameterlisten der Methoden unterscheiden. Eine solche Methode nennt man auch □ überladen □ abstrakt □ überschrieben □ statisch □ konstrukoritiert Welchen Rückgabetyp bekommt ein Konstruktor im Methodenkopf des Konstruktors? [ ] Statische Methoden & Statische Attribute Was ist das besondere an einer statischen Methode im Bezug auf den Aufruf einer solchen Methode? Denkt daran wie ihr die statische Methode Math.sqrt() verwendet habt um aus einer Zahl die Wurzel zu ziehen! [ Gegeben ist die folgende Klasse mit ] public class EineKlasse { public static int EinWert; } Angenommen es existieren in einem Programm zwei Objekte A, B mit dem Typen EineKlasse. Was passiert, wenn du den Wert von A.EinWert veränderst? [ ] Warum kann man von einer statischen Methode in einer Klasse, nicht auf nichtstatische Attribute dieser Klasse zugreifen? [ ] Verständnisdinge & Sonstiger Kram Was ist der Unterschied zwischen „Eine Methode gibt etwas zurück“ und „Eine Methode gibt etwas aus“? [ ] Wo liegt der Unterschied von „primitiven Datentypen“ und „Referenzdatentypen“ bezüglich der Seiteneffekte? [ ] Was referenziert das „this“-Objekt in Java? [ ] Beschreibe kurz was ein abstrakter Datentyp ist und wodurch er sich auszeichnet. [ ] Beschreibe kurz, was implizite und explizite Typumwandlung ist und wo der Unterschied liegt. [ ]