erstellt 13.08.99; übersetzt 26.05.03; © Copyright 2003 Deutsche Übersetzung Heinrich Gailer

Füllen Sie die Lücken aus

Hinweise:   Dies 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 Codeabschnitte, 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:

target = 25
Mit anderen Worten, Klicken Sie auf jede Schaltfläche, wo die Variable target sichtbar ist.
class ScopeEg1
{
  int target;

  ScopeEg1()
  {
     ;
    . . . .
  }

  void aMethod()
  {
     ;
      . . . .
  }

  void bMethod()
  {
     ;
       . . . .
  }

}

class AnotherClass
{
  int sum;
  AnotherClass()
  {
     ;
    . . . .
  }

  void anotherMethod()
  {
     ;
      . . . .
  }

  void someMethod()
  {
     ;
       . . . .
  }
}

class TesterClass
{
  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:
target = 25
class ScopeEg2
{
  int target;

  . . . .

}

class AnotherClass
{
  int sum;
  ScopeEg2 first = new ScopeEg2() ;

  void anotherMethod()
  {
    first .  ;

    . . . .
  }

  void someMethod()
  {
    first .  ;

    . . . .
  }
}

class TesterClass
{
  public static void main (String[] args )
  {
    first .  ;
  }

}




3.       Klicken Sie in dem folgenden Programmgerüst auf jede Schaltfläche wo es OK wäre diese Anweisung zu haben: target = 25
class ScopeEg3
{
  private int target;

  ScopeEg3()
  {
     ;
    . . . .
  }

  void aMethod()
  {
     ;
      . . . .
  }

  void bMethod()
  {
     ;
       . . . .
  }
  . . . .

}

class AnotherClass
{
  int sum;
  ScopeEg3 first = new ScopeEg3() ;

  void anotherMethod()
  {
    first .  ;

    . . . .
  }

  void someMethod()
  {
    first .  ;

    . . . .
  }
}

class TesterClass
{
  public static void main (String[] args )
  {
    ScopeEg3 second = new ScopeEg3() ;

    second .  ;
  }

}




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( data );

class SomeClass
{
  int sum;

  void aMethod( int data )
  {
     ;

    . . . .
  }

  void bMethod()
  {
     ;

    . . . .
  }
}

class TesterClass
{
  SomeClass some;

  public static void main (String[] args )
  {
    some = new SomeClass();
    some.aMethod( 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:
sum = data ;

class SomeClass
{
  int sum;

  void aMethod( int data )
  {
     ;

    . . . .
  }

  void bMethod( int data )
  {
     ;

    . . . .
  }

  void cMethod( int value )
  {
     ;

    . . . .
  }

}





Eine lokale Variable kann nur im Körper ihrer Methode von den Anweisungen, die ihrer Deklaration folgen, gesehen werden. 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:
value = 5;

class SomeOtherClass
{
  int sum;

  void aMethod( int data )
  {
    int value;

     ;

    . . . .
  }

  void bMethod( int data )
  {
     ;

    . . . .
  }

  void cMethod( )
  {
    . . . .

     ;

    int value;

    . . . .
  }


  void dMethod( )
  {
    double value;

     ;

    . . . .
  }
}





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 beide lokale und 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 sum oder die lokale Variable sum setzen.

class YetOnotherClass
{
  int sum;

  void aMethod( int data )
  {

    sum = data ;  ;

    . . . .
  }

  void bMethod( int data )
  {
    int sum;

    sum = data ;  ;

    . . . .
  }

  void cMethod( )
  {
    . . . .

    sum = 23 ;  ;

    int sum;

    . . . .
  }

}





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 sum oder die lokale Variable sum setzen.

class AfurtherClass
{
  int sum;

  void aMethod( int data )
  {
    int sum;

    this.sum = data ;  ;

    . . . .
  }

  void bMethod( int data )
  {
    int sum;

    sum = data ;  ;

    . . . .
  }

}



Wenn ein Parameter den gleichen Namen wie eine Instanzvariable hat und Sie die Instanzvariable angeben möchten, verwenden Sie this. Dies 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 sum oder die lokale Variable sum setzen.

class AfurtherClass
{
  int sum;

  AfurtherClass( int sum )  // Konstruktor
  {
    this.sum = sum ;  ;

    . . . .
  }

  void bMethod( int sum )
  {

    sum = 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 sum ändern.

class SimpleClass
{
  private int sum;

  SimpleClass( int s )
  {
    sum = s ;  ;

    . . . .
  }

  void setSum ( int s )
  {

    sum = s ;  ;

    . . . .
  }

}

class TesterClass
{
  public static void main ( String[] args )
  {
    SimpleClass sim = SimpleClass( 34 );   ;

    sim.sum = 77 ;   ;

    sim.setSum( 14 ) ;   ;
  }
}



Ende des Tests. Wenn Sie ihn wiederholen möchten, klicken Sie in Ihrem Browser auf "Aktualisieren". Zurück zur Übersicht.