Sunteți pe pagina 1din 2

1.

În următorul program Java vi se cere să determinați și să explicați:


1.1. rezultatele afișate;
1.2. rezultatele afișate, daca linia Monitor p=m; este înlocuită cu Monitor p=new
Monitor();
1.3. rezultatele afișate, dacă în programul inițial cuvântul synchronized este șters.

interface Interf{
void display();
} public class ExecFir{
class Monitor implements Interf{ public static void main (String[] args)
public synchronized void display() { Fir f1, f2,f3,f4;
{ Monitor m=new Monitor();
System.out.println("1"); Monitor p=m;
System.out.println("2"); f1= new Fir(m); f1.start();
} f2= new Fir(p); f2.start();
} while(f1.isAlive() || f2.isAlive()){
} System.out.println("wait");
class Fir extends Thread{ }
public Fir ( Interf f){ m=f;} System.out.println("The end");
public void run() { }
m.display(); }
}
Interf m;
}

2. În clasa CoadaCirculara, supradefiniți operatorii << , + și operatorul de conversie int, astfel


încât programul să afișeze rezultatele din comentarii.
class CoadaCirculara{
public: void main(){
CoadaCirculara(int m){ CoadaCirculara q(3);
// cu maximum m elemente q=10+q+20+30;// adauga 3 elemente
nrel=0;prim=0; ultim=-1; nmax=m; cout<<q<<endl;//->10->20->30;
suport=new int[nmax];
}
int i=q;
void elimina(){ cout <<"i="<<i<<endl; //i=10
// elimina primul element cout <<q<<endl;// ->10->20->30;
if(nrel>0){ q.elimina();
prim=(prim+1)%nmax;//coada circulara!! i=q; //conversie
nrel--;} cout <<"i="<<i<<endl; //i=20
} cout <<q<<endl;// ->20->30;
} }
//etc…
}
3. Explicați rezultatele afișate prin executarea următorului program C++:
class A{
public: class B:public A{
virtual void v(){ public: void main(){
cout<<"A::v()"<<endl; virtual void v(){ A *a; B *b;
s(); w(); cout<<"B::v()"<<endl; b= new B();
} s();w(); a=b;
protected: } a->v();
void s(){ protected: b->v();
cout<<"A::s()"<<endl; virtual void w(){ }
} cout<<"B::w()"<<endl;
virtual void w(){ }
cout<<"A::w()"<<endl; };
}
}
4.

4.
4.1 În următorul program C#, adăugați o clasă M în care să implementați proprietatea C# cu
numele P, astfel încât executarea acestui program să afișeze:
P=1
4.2 Ce arhitectură (șablon, design pattern) urmează structura acestui program? Descrieți
principiile acestei arhitecturi.

interface InterfM{ class C{


int P{get;set;}//property public C(InterfM x, InterfV y){
} m=x; v=y;
interface InterfV{ }
void display(int i); public void run(){
} m.P=1; v.display(m.P);
class V:InterfV{ }
public void display(int i){ private InterfM m;
System.Console.WriteLine("P={0}", i); private InterfV v;
} }
} class Prog{
public static void main(){
C c=new C(new M(),new V());
c.run();
}
}

S-ar putea să vă placă și