• Nie Znaleziono Wyników

Programowanie Obiektowe w C++

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie Obiektowe w C++"

Copied!
2
0
0

Pełen tekst

(1)

Programowanie Obiektowe w C++

Lista 3 (40 pkt)

Deadline'y dla grup: ostatnie zaj¦cia w semestrze

Zadania:

1. (10 pkt) Za pomoc¡ typu wyliczeniowego zdeniuj dowolne cztery typy bª¦dów. Pomocne mo»e okaza¢ si¦ zapoznanie si¦ z klasami wyj¡tków biblioteki standardowej (STL) dziedzicz¡cymi klas¦

std::exception.

Zaprojektuj i zaimplementuj abstrakcyjn¡ klas¦ Wyjatek reprezentuj¡c¡ nadrz¦dn¡ klas¦ do obsªugi wyj¡tków. Klasa, oprócz podstawowych skªadowych, musi zawiera¢ 2 czysto wirtualne metody:

a) do wy±wietlania komunikatu bª¦du,

b) do okre±lania typu bª¦du (na podstawie wspomnianego wy»ej typu wyliczeniowego).

2. (15 pkt) Zaprojektuj i zaimplementuj trzy klasy pochodne w stosunku do klasy Wyjatek, reprezen- tuj¡ce trzy dowolne bª¦dy. Ka»dy z bª¦dów powinien posiada¢:

a) informacj¦ na temat swojego typu (korzystaj¡c ze zdeniowanego typu wyliczeniowego), b) komunikat wypisywany podczas przechwycenia wyj¡tku,

c) przynajmniej jeden dodatkowy parametr, okre±lany dla wyj¡tku podczas jego wywoªywania.

Przykªadowo, dla klasy reprezentuj¡cej wyj¡tek nadpisania tablicy poza jej zakresem:

a) typem mo»e by¢ out_of_range,

b) komunikatem - Próba zapisu do tablicy poza zakresem.,

c) dodatkowym parametrem przechowywanym w klasie - indeks elementu, pod którym próbowano co± zapisa¢,

d) innym parameterm - wielko±¢ tablicy.

Dla klas, zapewnij konstruktory uzupeªniaj¡ce dodatkowe parametry.

3. (15 pkt) Zaprezentuj dziaªanie zaimplementowanych klas wyj¡tków na dowolnym przykªadzie, z wy- korzystaniem bloków try{} catch{}. Dodatkowe parametry klas rzucanych wyj¡tków uzupeªniaj w konstruktorach, w momencie ich wywoªywania w funkcji throw(). Przechwytuj wyj¡tki w od- powiednio zdeniowanych funkcjach catch(). Dla ka»dego przechwyconego wyj¡tku, wykorzystaj jego specyczne parametry, typ i tekst komunikatu do wy±wietlenia na konsoli bª¦dów komunikatu zbiorczego na temat caªego zdarzenia. Sprawd¹, czy wyj¡tki mo»esz tak»e wywoªywa¢ b¡d¹ prze- chwytywa¢ za pomoc¡ klasy bazowej Wyjatek.

1

(2)

4. DODATKOWE - na dodatkowe punkty lub wy»sz¡ ocen¦ (zadania 1-3 musz¡ by¢ wykonane!) Do realizacji podobnego jak wy»ej zadania i budowy klas wyj¡tków wykorzystaj bibliotek¦ Boost Exception i klas¦ boost::exception. Informacji o aktywnych, przechwyconych bª¦dach dostarczaj z wykorzystaniem nast¦puj¡cych metod:

boost::error_info

boost::exception/operator

boost::tuple/operator

boost::get_error_info

boost::enable_error_info

Do generowania wyjatków powiniene± wykorzysta¢ metody:

BOOST_THROW_EXCEPTION

throw_exception

Boost udost¦pnia tak»e pewne zdeniowne typy informacji o bª¦dach:

errinfo_api_function

errinfo_at_line

errinfo_errno

errinfo_file_handle

errinfo_file_name

errinfo_file_open_mode

errinfo_nested_exception

errinfo_type_info_name

2

Cytaty

Powiązane dokumenty

Na pierwszej przerwie zjadł kilka kostek, na drugiej tyle samo, a na trzeciej tyle co na pierwszej i drugiej.. Zostało mu tyle kostek, ile zjadł do tej

Gdy Kubuś Puchatek wychodził ze swojej chatki na urodziny Kłapouchego, garnek pełen miodu, który niósł w prezencie, ważył 5 kg. Kiedy Puchatek był w połowie drogi do

W asemblerze proszę napisać program, który po naciśnięciu przycisku podłączonego do PB.7 wejdzie do procedury wyświetlania stanu rejestrów procesora:

Wyboru pary wyników, której ciśnienie skurczowe ma być oceniane, należy dokonywać za pomocą kluczy podłączonych do portu B.. Proszę założyć, że diody są podłączone do

Wyboru pary wyników, której ciśnienie skurczowe ma być oceniane, należy dokonywać za pomocą kluczy podłączonych do portu B.. Proszę założyć, że diody są podłączone

Napisz program znajdujący wszystkie liczby doskonałe mniejsze od 1000 oraz wyznaczający wszystkie zaprzyjaźnione pary liczb mniejszych niż 1000.. Oznaczmy sumę wszystkich

Karol Tarnowski

Znajdź siedem takich liczb, z których każda następna jest mniejsza od poprzedniej o 0,2, a średnia arytmetyczna tych liczb jest równa 6,6..