Sunteți pe pagina 1din 6

Anul II Matematic-Informatic ianuarie 2007

Proiectare i programare orientate pe obiecte



Test scris (verificare)

I. Spunei de cte ori se apeleaz fiecare constructor n programul de mai jos i n ce ordine.

cl ass cl s1
{ pr ot ect ed: i nt x;
publ i c: cl s1( ) { x=13; } };
cl ass cl s2: publ i c cl s1
{ pr ot ect ed: i nt y;
publ i c: cl s2( ) { y=15; } };
cl ass cl s3: publ i c cl s2
{ pr ot ect ed: i nt z;
publ i c: cl s3( ) { z=17; }
i nt f ( cl s3 ob) { r et ur n ob. x+ob. y+ob. z; } };
i nt mai n( )
{ cl s3 ob;
ob. f ( ob) ;
r et ur n 0;
}





II. Spunei ce reprezint o funcie virtual i n ce condiii o funcie virtual definete o clas
abstract.











III. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz
negativ spunei de ce nu este corect.

#i ncl ude<i ost r eam. h>
cl ass cl s
{ i nt x;
publ i c: cl s( ) { x=23; }
i nt get _x( ) { r et ur n x; } };
i nt mai n( )
{ cl s *p1, *p2;
p1=new cl s;
p2=( cl s*) mal l oc( si zeof ( cl s) ) ;
i nt x=p1- >get _x( ) +p2- >get _x( ) ;
cout <<x;
r et ur n 0;
}




IV. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz
negativ spunei de ce nu este corect.

#i ncl ude <i ost r eam. h>
cl ass B
{ i nt a;
B( i nt i =0) { a=i ; }
i nt get _a( ) { r et ur n a; } };
cl ass D: pr ot ect ed B
{ publ i c: D( i nt x=0) : B( x) {}
i nt get _a( ) { r et ur n B: : get _a( ) ; } };
i nt mai n( )
{ D d( - 89) ;
cout <<d. get _a( ) ;
r et ur n 0;
}






V. Spunei pe scurt prin ce se caracterizeaz un cmp static al unei clase.











VI. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz
negativ spunei de ce nu este corect.

#i ncl ude<i ost r eam. h>
cl ass cl s1
{ publ i c: i nt a;
cl s1( ) { a=7; } };
cl ass cl s2
{ publ i c: i nt b;
cl s2( i nt i ) { b=i ; }
cl s2( cl s1& x) { b=x. a; } };
i nt mai n( )
{ cl s1 x;
cout <<x. a;
cl s2 y( x) ;
cout <<y. b;
r et ur n 0;
}





VII. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz
negativ spunei de ce nu este corect.

#i ncl ude<i ost r eam. h>
cl ass cl s
{ publ i c: i nt sa;
cl s( i nt s=0) { sa=s; }
oper at or f l oat ( ) { r et ur n sa; } };
i nt f ( f l oat c) { r et ur n ( c*( 1+c/ 100) ) ; }
i nt mai n( )
{ cl s p( 35) ;
cout <<f ( p) ;
r et ur n 0;
}







VIII. Spunei ce reprezint o funcie prieten (friend) a unei clase.










IX. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz
negativ spunei de ce nu este corect.

#i ncl ude<i ost r eam. h>
cl ass B
{ pr ot ect ed: i nt x;
publ i c: B( ) { x=78; } };
cl ass D1: vi r t ual publ i c B
{ publ i c: D1( ) { x=15; } };
cl ass D2: vi r t ual publ i c B
{ publ i c: D2( ) { x=37; } };
cl ass C: publ i c D2, publ i c D1
{ publ i c: i nt get _x( ) { r et ur n x; } };
i nt mai n( )
{ C ob;
cout <<ob. get _x( ) ;
r et ur n 0;
}







X. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz
negativ spunei de ce nu este corect.

#i ncl ude <i ost r eam. h>
t empl at e <cl ass t i p>
cl ass cl s
{ t i p z;
publ i c: cl s( t i p i ) { z=i ; }
t i p oper at or - ( cl s a) { r et ur n z- a. z; }
i nt oper at or >=( cl s a) { r et ur n z>=a. z; } };
t empl at e <cl ass t i p>
t i p di f ( t i p x, t i p y)
{ r et ur n x- y;
}
i nt di f ( cl s<i nt > x, cl s<f l oat > y)
{ r et ur n x>=y?x- y: y- x;
}
i nt mai n( )
{ cl s<i nt > i =3; cl s<f l oat > j =4;
cout <<di f ( i , j ) ;
r et ur n 0;
}









XI. Spunei dac o variabil constant poate fi transmis ca parametru al unei funcii i dac
da, n ce situaii. Justificai.











XII. Spunei de cte ori se apeleaz destructorul clasei cl s n programul de mai jos. Justificai.

cl ass cl s
{ i nt x;
publ i c: cl s( i nt i =0) { x=i ; }
cl s( cl s& ob) { x=ob. x; } };
cl s& f ( cl s &c)
{ r et ur n c;
}
mai n( )
{ cl s r ;
cl s s=r ;
f ( f ( f ( s) ) ) ;
}



XIII. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz
negativ spunei de ce nu este corect.

#i ncl ude<i ost r eam. h>
cl ass B
{ i nt x;
publ i c: B( i nt i =0) { x=i ; } };
cl ass D: publ i c B
{ publ i c: D( ) : B( 15) {}
i nt f ( ) { r et ur n x; } };
i nt mai n( )
{ D d;
cout <<d. f ( ) ;
r et ur n 0;
}







XIV. Descriei pe scurt ce reprezint obiectul implicit al unei metode.












XV. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz
negativ spunei de ce nu este corect.

#i ncl ude<i ost r eam. h>
cl ass cl s
{ st at i c i nt i ;
i nt j ;
publ i c: cl s( i nt x=7) { j =x; }
st at i c i nt i mp( i nt k) { cl s a; r et ur n i +k+a. j ; } };
i nt cl s: : i ;
i nt mai n( )
{ i nt k=5;
cout <<cl s: : i mp( k) ;
r et ur n 0;
}







XVI. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz
negativ spunei de ce nu este corect.

#i ncl ude<i ost r eam. h>
cl ass cl s
{ i nt x;
publ i c: cl s( i nt i =32) { x=i ; }
i nt f ( ) const { r et ur n x++; } };
voi d mai n( )
{ const cl s d( - 15) ;
cout <<d. f ( ) ;
}






XVII. Descriei pe scurt ce reguli verific suprancrcarea operatorilor.












XVIII. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz pentru o
valoare ntreag citit egal cu 7, n caz negativ spunei de ce nu este corect.

#i ncl ude <i ost r eam. h>
f l oat f ( i nt y)
{ t r y
{ i f ( y%2) t hr ow y/ 2;
}
cat ch ( i nt i )
{ i f ( i %2) t hr ow;
cout <<Numar ul <<i << nu e bun! <<endl ;
}
r et ur n y/ 2;
}
i nt mai n( )
{ i nt x;
t r y
{ cout <<Da- mi un numar i nt r eg: ;
ci n>>x;
i f ( x) f ( x) ;
cout <<Numar ul <<x<< nu e bun! <<endl ;
}
cat ch ( i nt i )
{ cout <<Numar ul <<i << e bun! <<endl ;
}
r et ur n 0;
}