Sunteți pe pagina 1din 2

EXAMEN

Limbaje de programare orientate obiect

Sa se implementeze o aplicatie C++ care gestioneaza 2 tipuri de cozi de mesaje. Mesajele gestionate de cozi contin un id, o
informatie (sir de caractere, oricat de mare) si optional o prioritate (valoare intreaga).

Prima coada, este o coada normala de tip FIFO si va fi gestionata prin intermediul unei clase CQueue. Cea de-a doua coada
este tot de tip FIFO, insa tine cont si de prioritatea mesajelor inserate. Astfel, mesajele vor fi procesate (adaugate, scoase,
afisate, etc) in ordinea prioritatii lor. Coada prioritizata este gestionata prin intermediul unei clase CPriorityQueue.

Se vor implementa functii de adaugare si scoatere mesaje din cozi. Se vor folosi mosteniri si functii virtuale.

Sa se implementeze operatorul de egalitate ( = = ) la nivelul cozii prioritizate. Astfel, consideram doua cozi identice daca au
aceleasi mesaje (id –uri, informatii si prioritati identice).
Pentru erori (de exemplu, incercarea de scoatere mesaj dintr-o coada goala) se va folosi mecanismul de exceptii si o clasa
speciala in acest sens.

Obs: Pentru punctajul maxim acordat, se vor implementa cel putin functionalitatile prinse in programul de mai jos.
main () {
CQueue Q1, Q2;
CMessage M1(1, “continut mesaj 1”), M2(2, “continut mesaj 2”);

M1.print() ; // afiseaza continutul mesajului M1 (id si informatia)


M2.print()

Q1.add (M1) ; // adauga measjul M1 la Q1


Q1.add (M2) ;
Q1.print () ; // afiseaza continutul mesajelor din coada Q1

CMessage M6;

M6 = Q1.get (); // intoarce primul mesaj din coada si descarc coada de el


M6.print();

Q1.print(); // tb sa afiseze numai continutul lui M2;

CPriorityQueue PQ1, PQ2;


CMessage M3 (3, “continut mesaj 1”, 3), M4 (4, “continut mesaj 2”, 1), M5 (5, “continut mesaj 2”, 2);

M3.print() ; // afiseaza c ontinutul mesajului M3 (id, informatie si prioritate)

PQ1.add (M3) ;
PQ1.add (M4) ;
PQ1.add (M5) ;

PQ1.print(); // tb sa afiseze in ordine, continutul mesajelor M3, M5 si respectiv M4.

if (PQ1 == PQ2) cout << “Cozi Egale”;


else cout <<  “Cozi Diferite”;
CMessage M7;
M7 = PQ1.get();
M7.print();
PQ1.print();
try {
CMessage M8 ;
M8 = Q2.get() ;
}
catch (CqueueException *e) {
e->print() ;
delete e ; }
}

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