Voorbeeldtentamen - Universiteit van Amsterdam

Universiteit van Amsterdam - FNWI - BSc Informatica
Deeltoets 2 Inleiding Programmeren
23 oktober 2014
Voorzie elk blad dat je inlevert duidelijk van je naam en collegekaartnummer.
Er zijn 12 vragen waarvoor 25 punten zijn te behalen.
1. (2 punten) Wat is de uitvoer van het volgende programma?
import j a v a . u t i l . Arrays ;
public c l a s s Opgave1 {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
p r i n t e r (new i n t [ 5 ] , 0 ) ;
}
s t a t i c void p r i n t e r ( i n t [ ] p , i n t index ) {
i f ( index >= p . l e n g t h )
System . out . p r i n t l n ( Arrays . t o S t r i n g ( p ) ) ;
else {
p [ index ] = index + 1 ;
p r i n t e r ( p , index + 1 ) ;
}
}
}
2. (2 punten) Wat moet er op de plaats van de . . . komen?
class A {
i n t value = 1 3 ;
}
c l a s s B extends A {
i n t value = 1 7 ;
/∗ ∗
∗ G e e f d e som t e r u g van h e t ” v a l u e ” f i e l d van d i t o b j e c t ,
∗ en h e t v a l u e f i e l d i n z i j n s u p e r k l a s s e .
∗/
i n t som ( ) {
...
}
}
3. (2 punten) Wat wordt door het volgende programma geprint?
import j a v a . u t i l . ∗ ;
public c l a s s Opgave3 {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
L i s t <A> f i r s t = new A r r a y L i s t <A> ( ) ;
L i s t <B> second = new A r r a y L i s t <B > ( ) ;
f i r s t . add (new B ( ) ) ;
second . add (new B ( ) ) ;
f i r s t . g e t ( 0 ) .m( ) ;
second . g e t ( 0 ) .m( ) ;
}
}
c l a s s A { void m( ) { System . out . p r i n t l n ( "A" ) ; } }
c l a s s B extends A { void m( ) { System . out . p r i n t l n ( "B" ) ; } }
4. (2 punten) Wat is de uitvoer van het volgende programma?
c l a s s Opgave4 {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
O b j e c t [ ] os = new O b j e c t [ 3 ] ;
os [ 0 ] = new O b j e c t ( ) ;
os [ 1 ] = new Double ( 1 . 0 ) ;
os [ 2 ] = "" ;
f o r ( O b j e c t o : os )
m( o ) ;
}
s t a t i c void m( O b j e c t n ) {
System . out . p r i n t l n ( "Object!" ) ;
}
s t a t i c void m( Double d ) {
System . out . p r i n t l n ( "Double!" ) ;
}
s t a t i c void m( S t r i n g s ) {
System . out . p r i n t l n ( "String!" ) ;
}
}
5. (2 punten) Bekijk de volgende methode:
s t a t i c i n t methode ( ) {
i n t waarde = 0 ;
try {
waarde = 2 ;
doIets ( ) ;
waarde = 3 ;
}
catch ( NullPointerException e ) {
waarde = waarde + 4 ;
}
catch ( ArithmeticException e ) {
waarde = waarde + 5 ;
}
r e t u r n waarde ;
}
Welke waarde geeft methode() terug als doIets():
1. een NullPointerException op gooit?
2. een ArithmeticException op gooit?
3. met succes wordt uitgevoerd?
Page 2
6. (2 punten) Gegeven het volgende stukje code:
import j a v a . u t i l . A r r a y L i s t ;
public c l a s s Opgave6 {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
A r r a y L i s t <I n t e g e r > l s t ;
K l a s s e k l = new K l a s s e ( "Jan" ) ;
System . out . p r i n t l n ( k l ) ;
l s t = kl . getList ( ) ;
l s t . add ( 7 ) ;
System . out . p r i n t l n ( k l ) ;
}
}
class Klasse {
p r i v a t e S t r i n g name ;
p r i v a t e A r r a y L i s t <I n t e g e r > l i s t ;
K l a s s e ( S t r i n g newName) {
name = newName ;
l i s t = new A r r a y L i s t <I n t e g e r > ( ) ;
l i s t . add ( 1 ) ;
}
S t r i n g getName ( ) { r e t u r n name ; }
A r r a y L i s t <I n t e g e r > g e t L i s t ( ) {
return l i s t ;
}
public S t r i n g t o S t r i n g ( ) {
r e t u r n name + " " + l i s t ;
}
}
1. Wat is de uitvoer van de code?
2. Is de klasse Klasse immutable? Leg uit.
7. (2 punten) Wat print het volgende programma?
i n t e r f a c e Foo { }
c l a s s A implements Foo { }
c l a s s B extends A { }
class C { }
public c l a s s Opgave7 {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
A a = new A ( ) ;
A b = new B ( ) ;
B d = new B ( ) ;
C c = new C ( ) ;
System . out . p r i n t l n ( a i n s t a n c e o f Foo ) ;
System . out . p r i n t l n ( b i n s t a n c e o f Foo ) ;
System . out . p r i n t l n ( c i n s t a n c e o f Foo ) ;
System . out . p r i n t l n ( d i n s t a n c e o f Foo ) ;
}
}
Page 3
8. (2 punten) Wat is de uitvoer van de volgende code?
public c l a s s Opgave8 {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
Thing t 1 = new Thing ( 3 ) ;
Thing t 2 = new Thing ( 2 ) ;
swap ( t1 , t 2 ) ;
System . out . p r i n t l n ( t 1 . x + " en " + t 2 . x ) ;
}
s t a t i c void swap ( Thing a , Thing b ) {
Thing tmp = a ;
a = b;
b = tmp ;
}
}
c l a s s Thing {
int x ;
Thing ( i n t arg ) {
x = arg ;
}
}
9. (2 punten) Omschrijf wat de uitvoer is van het volgende programma?
public c l a s s Opgave9 {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
System . out . p r i n t l n (new Kind ( ) ) ;
System . out . p r i n t l n (new Vader ( ) ) ;
System . out . p r i n t l n (new GrootVader ( ) ) ;
System . out . p r i n t l n (new O b j e c t ( ) ) ;
}
}
c l a s s GrootVader extends O b j e c t {
public S t r i n g t o S t r i n g ( ) {
r e t u r n "grootvader" ;
}
}
c l a s s Vader extends GrootVader {
public S t r i n g t o S t r i n g ( ) {
r e t u r n "vader" ;
}
}
c l a s s Kind extends Vader {
}
Page 4
10. (3 punten) Compileert het volgende programma? Zo ja, wat is de uitvoer? Zo nee, welke regels
moeten verwijderd worden en wat is dan de uitvoer?
public c l a s s Opgave10 {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
r 1
Glub glub = new Glub ( 5 ) ;
r 2
Flub f l u b = new Flub ( glub ) ;
r 3
Glub ggub = new Flub ( 4 ) ;
r 4
System . out . p r i n t l n ( glub ) ;
r 5
System . out . p r i n t l n ( f l u b ) ;
r 6
System . out . p r i n t l n ( ggub ) ;
}
}
c l a s s Flub {
int blorg ;
public Flub ( i n t i ) {
blorg = i ;
}
public Flub ( Flub o t h e r ) {
this . blorg = other . blorg ;
}
public S t r i n g t o S t r i n g ( ) {
r e t u r n "Flubs " + b l o r g ;
}
}
c l a s s Glub extends Flub {
public Glub ( i n t i ) {
super ( i ) ;
}
public S t r i n g t o S t r i n g ( ) {
r e t u r n "Glubs " + b l o r g ;
}
}
11. (2 punten) Het volgende programma compileert niet. Leg uit waarom en verbeter de code zodat
het wel compileert.
import j a v a . u t i l . ∗ ;
public c l a s s Opgave11 {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
A r r a y L i s t <F r u i t > l i s t = new A r r a y L i s t <F r u i t > ( ) ;
l i s t . add (new Apple ( ) ) ;
Apple apple = l i s t . g e t ( 0 ) ;
}
}
class Fruit {
}
c l a s s Apple extends F r u i t {
}
Page 5
12. (2 punten) Geef de uitvoer van het volgende programma.
import j a v a . u t i l . Arrays ;
c l a s s Opgave12 {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
int i = 0 , j = 1 , k = 2;
f o r ( i n t i t e r : Arrays . a s L i s t ( 1 , 2 , 3 ) ) {
i += i t e r + k ;
j += k ∗ i ;
k = iter ∗ i / j ;
}
System . out . p r i n t l n ( k ) ;
}
}
EINDE
Page 6