Zadanie z laboratorium C++ -------------------------- Zapisz nastepujace wzorce klas: - Bag wzorzec abstrakcyjnych klas implementujacych worki (multizbiory) obiektow typu T z wirtualnymi operacjami: void wstaw(T&); // Dostawia jedno wystapienie elementu do worka void usun(T&); // Usuwa jedno wystapienie elementu int krotnosc(T&); // Ile razy element wystepuje w worku BagIter* dajIterator(); ~Bag(); - BagIter wzorzec abstrakcyjnych iteratorow dla workow, z wirtualnymi (oprocz konstruktora) operacjami: BagIter(Bag&) void naPocz(); // Przechodzi na poczatek void nast(); // Element jest przegladany tyle razy, ile razy jest w worku int jestElt(); // Czy jest jeszcze jakis element do wziecia T elt(); // Jesli nie jestElt(), to generuje wyjatek BrakEltu ~BagIter(); - BagLst i BagLstIter implementujace worki jako listy Nalezy zapisac program uzywajacy BagLst i BagLstIter do spamietywania i wypisywania krotnosci slow wystepujacych na wejsciu. W programie nalezy zdefiniowac obsluge wyjatku BrakEltu. Program powinien: - wypisac uzywajac iteratora slowa wystepujace na wejsciu wraz z krotnosciami ich wystapien, - przeprowadzic test polegajacy na wykonaniu operacji elt w sytuacji, gdy !jestElt(), co powinno spowodowac wygenerowanie wyjatku w metodzie elt i obsluzenie go w programie glownym.