erstellt 13.08.99; überarbeitet 24.4.06; übersetzt 26.05.03; überarbeitet 03.02.04, 18.01.05, 19.10.06, 17.01.10, 19.06.18, 10.12.18, 02.12.19, 21.07.21, 21.06.22; Deutsche Übersetzung Heinrich Gailer


Wir füllen die Lücken aus.

Hinweise:   Das ist eine unbewertete Lückenübung. Das ist eine unbewertete Lückenübung. Jede Frage besteht aus einem Satz, bei dem ein oder zwei Wörter fehlen. Ein Button repräsentiert das fehlende Wort bzw. die fehlenden Wörter. Wir überlegen welches Wort bzw. welche Wörter fehlen. Klicken dann auf die Schaltfläche, um zu sehen ob wir 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.       Klickt in dem folgenden Programmgerüst auf jede Schaltfläche, wo es OK wäre diese Anweisung zu haben:

zahl = 25;

Mit anderen Worten, klickt 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 das ignorieren wir hier.)

2.       Klickt 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.       Klickt 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.       Klickt 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.       Klickt 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.       Klickt 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.       Entscheidet Euch 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 wir die Instanzvariable angeben möchten, verwenden wir this.

8.       Entscheidet Euch 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 wir die Instanzvariable angeben möchten, verwenden wir this. Das wird häufig in Konstruktoren getan, wo es vermutlich weniger verwirrend ist den gleichen Namen für beide zu verwenden.

9.       Entscheidet Euch in dem folgenden Programmgerüst, ob die Anweisungen die Instanzvariable summe oder den Parameter 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.       Klickt in dem folgenden Programmgerüst auf die Schaltflächen neben die 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. Wer ihn wiederholen möchten, klickt im Browser auf "Aktualisieren".

Zurück zum Inhaltsverzeichnis.