Lösung der Klausur Pr11 im WS'04/'05

Aufgabe 1

class ErwFarbsackImpl extends FarbsackImpl {
   public int anzahl(Farbe farbe) { return inhalt[farbe.pos()]; }
   public int anzahl() { int s = 0;
     for (int i = 0; i < inhalt.length; i++) s += inhalt[i];
     return s; } }

Aufgabe 2:

interface S {}
class K implements S {
   void m(S s) {
     m(new K()); } }

Aufgabe 3.

 

Aufgabe 4

Button knopf = new Button("Knopf"); knopf.setColor(Color.gray); super.add(knopf);
knopf.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) { knopf.setColor(Color.red); } } );

Aufgabe 5.

(X) Richtig r.length ist dann und nur dann konstant (wird nicht im Laufe des Programms nicht verändert), wenn die Reihungseferenz r als final vereinbart wurde

Grund: So kann ihr kein Reihungsobjekt mit anderer Länge zugewiesen werden.

(X) Richtig Im Rumpf einer Prozedur mit Parametertyp Object kann für den Parameter die Methode toString aufgerufen werden, compareTo jedoch nicht.

Grund: toString ist in der Klasse Object enthalten, compareTo jedoch nicht.

(X) Richtig Im Rumpf einer Zählschleife darf auf die Laufvariable nur lesend zugegriffen werden.

Grund: Ein Schreibzugriff ermöglicht Endlosschleife

(X) Richtig Als Ausgabeparameter einer Prozedur kann nicht eine primitive Variable verwendet werden.

Grund: Primitive Variablen werden by value übergeben (d.h. ihre Veränderung bleibt lokal)

(X) Richtig Die Methode String.format führt Textersetzung durch

Grund: Alle Formatierungsangaben (mit erstem Zeichen %) werden durch Werte von Parametern ersetzt.

(X) Falsch Operatoren können in Java nur auf primitive Variablen und nie auf Referenzvariablen angewandt werden.

Grund: Zuweisung und Gleichheit können auf alle Variablen angewandt werden.

(X) Richtig Ein Mutator darf nicht als aktueller Parameter aufgerufen werden.

Grund: nur ein Informator (eine Funktion) liefert einen Wert, der als aktueller Parameter übergeben werden kann.

 (X) Falsch Ein String-Objekt verhält sich in jeder Hinsicht wie ein char[]-Objekt, der Unterschied ist nur syntaktisch.

Grund: Ein String-Objekt ist immutabel (unveränderbar), ein char[]-Objekt ist veränderbar

Aufgabe 6.

private static boolean meinName(String[] kzp) {
   for (int i = 0; i < kzp.length; i++)
     if (kzp[i].equals("Solymosi")) return true; 
   return false; 
}
public static void main(String[] kzp) { 
   System.out.println(meinName(kzp)) ; }