Aufgabe 3.1: Sichtbarkeit von Variablen [10 Punkte]
Betrachten Sie folgenden JAVA-Code:
p u b l i c c l a s s Scope {
s t a t i c i n t m( i n t a, i n t b) {
i n t sum = a + b ;
// *** 1 ***
r e t u r n sum ;
}
s t a t i c c l a s s Vec3 {
f l o a t x ,y , z ;
void add ( Vec3 b ) {
x += b . x ; y += b . y ; z += b . z ;
// *** 2 ***
}
f l o a t sum () {
f l o a t sum = x + y + z ;
// *** 3 ***
r e t u r n sum ;
}
}
p u b l i c s t a t i c void main ( String args []) {
i n t sum = 0;
f o r ( i n t i = 0; i < 4; i ++)
sum += i ;
// *** 4 ***
i f ( sum > 3)
{
i n t b = 3*7;
sum = m ( sum , b );
// *** 5 ***
}
Vec3 p = new Vec3 ();
p . x = p . y = -( p . z = 1);
f l o a t x = p.x;
// *** 6 ***
Vec3 q = p ;
q . y = 2;
// *** 7 ***
q = new Vec3 ();
q . x = q . y = q . z = 2;
q . add ( p );
// *** 8 ***
}
}
¨
Welche Variablen sind bei der Ausfuhrung des Codes jeweils an den mit *** x ***“ markierten
”
¨
Stellen gultig und welche Werte haben die Variablen?
¨
Hinweis fur Verbundtypen: Geben Sie an, welche Objekte existieren, welche Referenzen und wohin
die Referenzen zeigen. Nummerieren Sie neue erzeugte Objekte einfach mit O1 , O2 , . . . durch. Beispiel:
nach
Vec3 p = new Vec3();
exisitert ein Objekt O1 vom Typ Vec3 und eine Referenz p, die auf O1 zeigt.
¨
Geben Sie innerhalb von Objektmethoden auch die Objektattribute an, die gerade gultig sind. Bei-
spiel: in
class Vec3 {
float x,y,z;
Vec3 Kreuzprodukt() {
Vec3 prod = new Vec3();
// *** 1 ***
...
}
...
}
sind an der Stelle *** 1 *** die Objektattribute oder Objektvariablen x, y und z bekannt.
¨
Geben Sie die aktuell definierten Variablen und Objekte als Tabelle an, fur obiges Beispiel an der
Position *** 1 *** w¨ re dies:
a
Variablenname Typ Art Wert
x float Objektvariable ...
y float Objektvariable ...
z float Objektvariable ...
O1 Vec3 Objekt 0,0,0
prod Referenz auf Vec3 lokale Variable → O1