erstellt 13.08.99; überarbeitet 24.4.06; übersetzt 26.05.03; überarbeitet 03.02.04, 19.07.04, 18.01.05, 19.10.06, 17.01.10; Deutsche Übersetzung Heinrich Gailer


Füllen Sie die Lücken aus.

Hinweise:   Das ist eine unbewertete Lückenübung. Jede Frage besteht aus einem Satz, bei dem ein oder zwei Wörter fehlen. Jede Schaltfläche repräsentiert das fehlende Wort bzw. die fehlenden Wörter. Überlegen Sie welches Wort bzw. welche Wörter fehlen. Klicken Sie dann auf die Schaltfläche, um zu sehen ob Sie recht haben. Es wird keine Note für diese Übung ermittelt.


Dieser Test überprüft die "Sichtbarkeit" von Variablen und Parametern. Die Sichtbarkeit einer Variable oder eines formalen Parameter ist der Codeabschnitt, der den Parameter "sehen" (verwenden) kann.

Die Sichtbarkeit einer Instanzvariable umfasst jeden Methodenkörper (Liste der Anweisungen) und jeden Konstruktorkörper.

1.       Klicken Sie in dem folgenden Programmgerüst auf jede Schaltfläche, wo es OK wäre diese Anweisung zu haben:

zahl = 25;

Mit anderen Worten, klicken Sie auf jede Schaltfläche, wo die Variable zahl sichtbar ist.

class SichtbarkeitBsp1
{
  int zahl;

  SichtbarkeitBsp1()
  {
    
    . . . .
  }

  void methodeA()
  {
    
      . . . .
  }

  void methodeB()
  {
    
       . . . .
  }

}

class EineAndereKlasse
{
  int summe;
  EineAndereKlasse()
  {
    
    . . . .
  }

  void eineAndereMethode()
  {
    
      . . . .
  }

  void irgendeineMethode()
  {
    
       . . . .
  }
}

class TestKlasse
{
  public static void main (String[] args )
  {
    
  }

}



"Außenstehende" können auf die Instanzvariablen eines Objekt zugreifen, indem sie die "Punkt-Notation" verwenden, außer wenn die Instanzvariable private ist (oder Standardzugriff hat und sich in einem anderen Paket befinden...aber ignorieren Sie das für jetzt.)

2.       Klicken Sie in dem folgenden Programmgerüst auf jede Schaltfläche, wo es OK wäre diese Anweisung zu haben:

zahl = 25;
class SichtbarkeitBsp2
{
  int zahl;

  . . . .

}

class EineAndereKlasse
{
  int summe;
  SichtbarkeitBsp2 erstes = new SichtbarkeitBsp2() ;

  void eineAndereMethode()
  {
    erstes . 

    . . . .
  }

  void irgendeineMethode()
  {
    erstes . 

    . . . .
  }
}

class Testklasse
{
  public static void main (String[] args )
  {
    erstes . 
  }

}



3.       Klicken Sie in dem folgenden Programmgerüst auf jede Schaltfläche, wo es OK wäre diese Anweisung zu haben:

zahl = 25;
class SichtbarkeitBsp3
{
  private int zahl;

  SichtbarkeitBsp3()
  {
    
    . . . .
  }

  void methodeA()
  {
    
      . . . .
  }

  void methodeB()
  {
    
       . . . .
  }
  . . . .

}

class EineAndereKlasse
{
  int summe;
  SichtbarkeitBsp3 erstes = new SichtbarkeitBsp3() ;

  void eineAndereMethode()
  {
    erstes . 

    . . . .
  }

  void irgendeineMethode()
  {
    erstes . 

    . . . .
  }
}

class Testklasse
{
  public static void main (String[] args )
  {
    SichtbarkeitBsp3 zweites = new SichtbarkeitBsp3() ;

    zweites . 
  }

}




Formale Parameter können nur vom Körper ihrer eigenen Methode gesehen werden.

4.       Klicken Sie in dem folgenden Programmgerüst auf jede Schaltfläche, wo es OK wäre diese Anweisung zu haben:

System.out.println( daten );
class IrgendeineKlasse
{
  int summe;

  void methodeA( int daten )
  {
    

    . . . .
  }

  void methodeB()
  {
    

    . . . .
  }
}

class Testklasse
{
  IrgendeineKlasse i;

  public static void main (String[] args )
  {
    i = new IrgendeineKlasse();
    i.methodeA( 99 );

    

  }

}


Es ist für formale Parameter in zwei verschiedenen Methoden OK den gleichen Bezeichner zu verwenden.

5.       Klicken Sie in dem folgenden Programmgerüst auf jede Schaltfläche, wo es OK wäre diese Anweisung zu haben:

summe = daten ;
class IrgendeineKlasse
{
  int summe;

  void methodeA( int daten )
  {
    

    . . . .
  }

  void methodeB( int daten )
  {
    

    . . . .
  }

  void methodeC( int zahl )
  {
    

    . . . .
  }

}

Eine lokale Variable kann nur im Körper ihrer Methode von den Anweisungen gesehen werden, die ihrer Deklaration folgen. Es ist für lokale Variablen in verschiedenen Methoden OK den gleichen Namen zu verwenden.

6.       Klicken Sie in dem folgenden Programmgerüst auf jede Schaltfläche, wo es OK wäre diese Anweisung zu haben:
zahl = 5;
class EineAndereKlasse
{
  int summe;

  void methodeA( int daten )
  {
    int zahl;

    

    . . . .
  }

  void methodeB( int daten )
  {
    

    . . . .
  }

  void cMethode( )
  {
    . . . .

    

    int zahl;

    . . . .
  }


  void methodeD( )
  {
    double zahl;

    

    . . . .
  }
}


Wenn eine lokale Variable den gleichen Namen wie eine Instanzvariable hat, wird es die lokale Variable sein, die von den Anweisungen ihrer Methode gesehen wird, die ihrer Deklaration folgen. (Obwohl es korrekte Syntax ist, dass sowohl lokale als auch Instanzvariablen den gleichen Namen verwenden, ist es vermutlich eine schlechte Idee, da es Menschen verwirrt.)

7.       Entscheiden Sie in dem folgenden Programmgerüst, ob die Anweisungen die Instanzvariable summe oder die lokale Variable summe setzen.

class NochEineAndereKlasse
{
  int summe;

  void methodeA( int daten )
  {

    summe = daten ; 

    . . . .
  }

  void methodeB( int daten )
  {
    int summe;

    summe = daten ; 

    . . . .
  }

  void methodeC( )
  {
    . . . .

    summe = 23 ; 

    int summe;

    . . . .
  }

}

Wenn eine lokale Variable den gleichen Namen wie eine Instanzvariable hat und Sie die Instanzvariable angeben möchten, verwenden Sie this.

8.       Entscheiden Sie in dem folgenden Programmgerüst, ob die Anweisungen die Instanzvariable summe oder die lokale Variable summe setzen.

class NochmalEineAndereKlasse
{
  int summe;

  void methodeA( int daten )
  {
    int summe;

    this.summe = daten ; 

    . . . .
  }

  void methodeB( int daten )
  {
    int summe;

    summe = daten ; 

    . . . .
  }

}

Wenn ein Parameter den gleichen Namen wie eine Instanzvariable hat und Sie die Instanzvariable angeben möchten, verwenden Sie this. Das wird häufig in Konstruktoren getan, wo es vermutlich weniger verwirrend ist den gleichen Namen für beide zu verwenden.

9.       Entscheiden Sie in dem folgenden Programmgerüst, ob die Anweisungen die Instanzvariable summe oder die lokale Variable summe setzen.

class WiederEineAndereKlasse
{
  int summe;

  WiederEineAndereKlasse( int summe )  // Konstruktor
  {
    this.summe = summe ; 

    . . . .
  }

  void methodeB( int summe )
  {

    summe = 32 ; 

    . . . .
  }

}

Ein "Außenstehender" kann eine private Instanzvariable eines Objekts ändern, indem er die Zugriffsmethode des Objekts verwendet (wenn es eine gibt).

10.       Klicken Sie in dem folgenden Programmgerüst auf die Schaltflächen neben den Anweisungen, die summe ändern.

class EinfacheKlasse
{
  private int summe;

  EinfacheKlasse( int s )
  {
    summe = s ; 

    . . . .
  }

  void setSumme ( int s )
  {

    summe = s ; 

    . . . .
  }

}

class Testklasse
{
  public static void main ( String[] args )
  {
    EinfacheKlasse e = new EinfacheKlasse( 34 );  

    e.summe = 77 ;  

    e.setSumme( 14 ) ;  
  }
}

Ende des Tests. Wenn Sie ihn wiederholen möchten, klicken Sie in Ihrem Browser auf "Aktualisieren".

Zurück zum Inhaltsverzeichnis.