|
Programmazione in Rete e Laboratorio |
|
|
Corso di Studi in Informatica, Univ. di Torino |
|
|
a.a. 2001/02, 20 marzo 2002 |
|
|
|
|
|
|
|
1 |
Siano a1 e a2 due variabili di classe A. L'assegnamento a2=a1 |
|
1/2 |
associa ad a2 un riferimento allo stesso oggetto associato ad a1 |
X |
|
fa una copia dell'oggetto associato ad a1 e lo assegna ad a2 |
|
|
crea una nuova istanza della classe A e la assegna ad a2 |
|
|
sposta da a1 ad a2 l'oggetto precedentemente associato ad a1 |
|
|
|
|
2 |
Il garbage collector |
|
1/2 |
azzera la memoria prima di iniziare l'esecuzione |
|
|
azzera la memoria al termine dell'esecuzione |
|
|
recupera la memoria non accessibile durante l'esecuzione |
X |
|
azzera le variabili locali degli oggetti |
|
|
|
|
3 |
La dimensione di un array |
|
1/2 |
è fissata quando si dichiara una variabile di tipo array |
|
|
non è mai specificata |
|
|
può essere modificata durante l'esecuzione |
|
|
è fissata quando si crea un array |
X |
|
|
|
4 |
Sia java.util.Vector s = new java.util.Vector(); quale delle seguenti |
|
1 |
istruzioni causa un errore a tempo di compilazione |
|
|
s.add("Prova esame"); |
|
|
s.add(new java.util.Vector()); |
|
|
s.add(5); |
X |
|
s.add(null); |
|
|
|
|
5 |
Il controllo statico dei tipi è fatto |
|
1/2 |
dall'interprete prima di inziare l'esecuzione |
|
|
dall'interprete durante l'esecuzione |
|
|
dal compilatore |
X |
|
da nessuno |
|
|
|
|
6 |
Se a è una variabile della classe A e b è una variabile della |
|
1 |
classe B diversa da A, l'assegnamento a=b è possibile |
|
|
sempre |
|
|
mai |
|
|
se A è una sottoclasse di B |
|
|
se B è una sottoclasse di A |
X |
|
|
|
7 |
Data la chiamata p.m(), binding dinamico significa che |
|
1 |
si esegue il metodo m dell'oggetto legato a p al momento dell'esecuzione della chiamata |
X |
|
si esegue il metodo m della classe di p |
|
|
si esegue il metodo m di Object |
|
|
si esegue il metodo m della sopraclasse di p |
|
|
|
|
8 |
Dato: class C extends A implements B |
|
1 |
A e B possono essere due classi qualunque |
|
|
A e B sono due interfacce |
|
|
A deve essere una classe astratta e B un'interfaccia |
|
|
A è una classe qualunque e B un'interfaccia |
X |
|
|
|
9 |
Data una clase astratta A, quale delle seguenti affermazioni è sbagliata? |
|
1 |
si possono creare sottoclassi di A |
|
|
A può contenere metodi non definiti |
|
|
si possono creare oggetti della classe A |
X |
|
si possono dichiarare variabili della classe A |
|
|
|
|
10 |
Per gestire un evento generato da un JButton occorre |
|
1/2 |
creare un oggetto "listener" con un metodo opportuno |
X |
|
definire un metodo di JButton |
|
|
definire un metodo della classe Event |
|
|
l'evento è gestito automaticamente |
|
|
|
|
11 |
Se si verifica una eccezione, un exception handler: try {} catch . |
|
1 |
cattura l'eccezione e blocca l'esecuzione |
|
|
cattura l'eccezione, esegue il codice della catch e blocca l'esecuzione |
|
|
cattura l'eccezione, esegue il codice della catch e continua l'esecuzione |
X |
|
passa l'eccezione al metodo chiamante |
|
|
|
|
12 |
Sia A una classe, in Java l'istruzione "A nomeVariabile;" |
|
1/2 |
crea un oggetto della classe A |
|
|
dichiara una variabile di tipo A |
X |
|
dichiara una variabile che contiene un oggetto della classe A |
|
|
crea un oggetto che contiene una variabile di tipo A |
|
|
|
|
13 |
Un costruttore è |
|
1/2 |
il primo metodo definito costruendo una classe |
|
|
il metodo utilizzato da un oggetto per inviarsi un messaggio |
|
|
il metodo utilizzato unitamente alla new per creare un oggetto di una classe |
X |
|
il compilatore per generare un file .class |
|
|
|
|
14 |
In una classe Java è possibile trovare |
|
1/2 |
due costruttori con nomi diversi |
|
|
due costruttori con nomi diversi ma con la stessa signature (firma, lista dei tipi di parametri) |
|
|
due costruttori con nome uguale e signature diverse |
X |
|
due costruttori con nome uguale e signature uguale |
|
|
|
|
15 |
Siano metodo e altrometodo due metodi definiti synchronized di una |
|
2 |
classe A e siano a e b due variabili di tipo A. In qualie caso vi è un |
|
|
possibile accesso in mutua esclusione al codice dei due metodi |
|
|
a e b fanno riferimento a due oggetti diversi e i metodi sono eseguiti nello stesso thread |
|
|
a e b fanno riferimento a due oggetti diversi e i metodi sono eseguiti su due thread diversi |
|
|
a e b fanno riferimento allo stesso oggetto e i metodi sono eseguiti su due thread diversi |
X |
|
a e b fanno riferimento allo stesso oggettoe i metodi sono eseguiti nello stesso thread |
|
|
|
|
16 |
Un file .java contenente una classe public e due non public dopo la compilazione produce |
|
1/2 |
un file .class |
|
|
due file .class |
|
|
tre file .class |
X |
|
quattro file .class |
|
|
|
|
17 |
Date le seguenti tre classi, dire quale è l'effetto dell'esecuzione della classe Prova |
|
2 |
class A { ... |
|
|
void p() {System.out.println("A") ;} |
|
|
void q() { p();} |
|
|
} |
|
|
class B extends A { ... |
|
|
void p() {System.out.println("B") ;} |
|
|
void r() {super.p();} |
|
|
} |
|
|
class Prova { |
|
|
public static void main (String args[]) { |
|
|
B b = new B(); |
|
|
b.p(); |
B |
|
b.q(); |
B |
|
b.r(); |
A |
|
A a = b; |
|
|
a.q(); |
B |
|
} |
|
|
} |
|
|
|
|
18 |
Le istruzioni "A a = new A(); B b = (B)a" producono un errore a runtime |
|
2 |
ma non durante la compilazione se |
|
|
A è una classe più generale di B |
X |
|
A è una classe più specifica di B |
|
|
B è una classe più generale di A |
|
|
B è una classe né più generale né più specifica di A |
|
|
|
|
19 |
Il cast "(B)" in "A a = new B(); B b = (B)a" è un downcast se |
|
2 |
A è una classe più generale di B |
X |
|
A è una classe più specifica di B |
|
|
B è una classe più generale di A |
|
|
B è una classe né più generale né più specifica di A |
|
|
|
|
20 |
Un file .java può contenere |
|
1/2 |
più classi public ma al più una private |
|
|
più classi private e più classi public |
|
|
al più una classe private e una classe public |
|
|
al più una classe public |
X |
|
|
|
23 |
Il codice di una servlet |
|
|
è eseguito da un Web Server e l'output è visualizzato in formato HTML sul browser del client |
X |
|
è eseguito dal browser del client e l'output è inviato in formato HTML al server |
|
|
è inviato ad un browser che lo esegue e visualizza l'output in formato HTML |
|
|
è inviato dal browser di un client al server che lo esegue e lo visualizza in formato HTML |
|
|
|
|
22 |
Data la seguente classe |
|
2 |
public class Sub extends Base { |
|
|
public Sub(int j) { |
|
|
} |
|
|
public Sub(int j, int k) { |
|
|
super(j, k); |
|
|
} |
|
|
} |
|
|
Quale dei seguenti costruttori non è necessario che esista esplicitamente |
|
|
nella definizione della classe Base? |
|
|
Base() |
|
|
Base(int j) |
X |
|
Base(int j, int k) |
|
|
Quale delle seguenti istruzioni è corretta? |
|
|
Sub s = new Sub() |
|
|
Sub s = new Sub(1, 2) |
X |
|
Sub s = new Sub(1, 2, 3) |
|
|
|
|
23 |
Se A è una sottoclasse di B quale delle seguenti affermazioni è sbagliata |
|
1 |
ogni oggetto della classe A è anche un oggetto della classe B |
|
|
l'insieme degli oggetti di tipo B include l'insieme degli oggetti di tipo A |
|
|
se a è un oggetto della classe A allora a ha anche tipo B |
|
|
se b è un oggetto della classe B allora b ha anche tipo A |
X |
|
|
|
24 |
Si consideri la seguente specifica di un'applicazione Java per veterinari: |
|
1 |
"Un animale domenistico ha un proprietario, una data di registrazione, e una |
|
|
data di vacinazione. Un gatto è un animale domestico che ha un flag indicante |
|
|
se è stato sterilizzato e una descrizione testuale dei suoi segni caratteristici". |
|
|
Assumendo che la classe AnimaleDomestico sia gia` stata definita, si scrivano |
|
|
le prime righe della definizione della classe Gatto. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
Date le seguenti due definizioni di classe in files separati, dire quale è |
|
2 |
l'effetto dell'esecuzione della classe Test: |
|
|
class Veicolo { |
|
|
public void guida() { |
|
|
System.out.println("guido un veicolo"); |
|
|
} |
|
|
} |
|
|
class Camion extends Veicolo { |
|
|
public void guida() { |
|
|
System.out.println("guido un camion"); |
|
|
} |
|
|
} |
|
|
public class Test { |
|
|
public static void main(String[] args) { |
|
|
Veicolo v = new Veicolo(); |
|
|
Camion c = new Camion(); |
|
|
v.guida(); |
guido un veicolo |
|
c.guida(); |
guido un camion |
|
v = c; |
|
|
v.guida(); |
guido un camion |
|
c.guida(); |
guido un camion |
|
} |
|
|
} |
|
|
|
|
26 |
Date le seguenti due definizioni, dire quale delle istruzioni (a lato del box) è errata |
|
2 |
interface A { |
|
|
void metodoA(); |
|
|
} |
|
|
interface B { |
|
|
void metodoB(); |
|
|
} |
|
|
class C implements A, B { |
|
|
void metodoA() { } |
|
|
void metodoB() { } |
|
|
void metodoC() { } |
|
|
public static void main(String[] args) { |
|
|
A a = new C(); B b = new C(); C c = new C(); |
|
|
a.metodoA(); |
|
|
b.metodoB(); |
|
|
a.metodoB(); |
X |
|
c.metodoC(); |
|
|
} |
|
|
} |
|
|
|
|
27 |
Date le seguenti due definizioni, dire quale delle istruzioni (a lato del box) è errata |
|
2 |
class A { |
|
|
public String toString() { } |
|
|
public static void main(String[] args) { |
|
|
Object o1 = new A(); Object o2; String o3; |
|
|
o2 = o1.toString(); |
|
|
o2 = (A)(o1.toString()); |
X |
|
o2 = ((A)o1).toString(); |
|
|
o3 = o1.toString(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|