Zadania JiP 15b/05

Zadania JiP 15b/05

Zaprojektować, zaimplementować i zademonstrować w praktyce użycie klas realizujących poniższe wytyczne:

  1. Zdarzenia
    1. Klasa dziedzicząca z CheckBox udostępniająca zdarzenie pozwalające na reakcję w przypadku co n-tej zmiany stanu zaznaczenia (N ustawiane jako właściwość o nazwie "Cykl" - na wzór właściwości "Items" klasy ListBox).
    2. Klasa dziedzicząca z WebBrowser udostępniająca zdarzenie pozwalające na reakcję w przypadku próby nawigacji do stron zawierających w adresie jedno z zakazanych słów (lista zakazanych słów jako właściwość).
    3. Klasa dziedzicząca z TextBox udostępniająca zdarzenia pozwalające na reakcję w przypadkach: skasowanie zawartości, wklejenie tekstu ze schowka, skopiowanie zawartości do schowka.
  2. Wyjątki
    1. Zademonstrować mechanizm wybiórczej obsługi wyjątków (program ma identyfikować rodzaj wyjątku (a dokładniej jego klasę) jako jeden z kilku możliwych).
    2. Zademonstrować mechanizmy kreowania i zgłaszania własnych wyjątków.
    3. Zademonstrować mechanizm powtórnego zgłaszania wyjątków na przykładzie kaskadowo wywoływanych w zagnieżdżeniu kilku procedur; każda procedura ma obsługiwać wyjątek w widoczny sposób.
    4. Zademonstrować mechanizm zagnieżdżania wyjątków.
    5. Zademonstrować współdziałanie bloków try..catch i try...finally
    6. Napisać dwa warianty tej samej aplikacji (np. obliczanie pierwiastków równania kwadratowego) obsługującej GUI; jeden wariant ma programowo, interaktywnie nadzorować poprawność wprowadzanych przez użytkownika danych; drugi wariant ma wykorzystywać obsługę wyjątków.
  3. Wątki
    1. Iteracyjne wyszukiwanie wspólnych mianowników dla wszystkich par liczb z zadanego przedziału bez blokowania aplikacji (czyli w wątku drugoplanowym) z możliwością przerwania, pauzy, z prezentacją wyników i postępu.
    2. Zadanie j.w. ale w wykonaniu wielowątkowym (jeden wątek dla danej pary) z możliwością definiowania liczby jednocześnie uruchomiomych wątków oraz porównaniem efektywności.
    3. Sporządzenie listy ścieżek wszystkich plików na dysku w wątku drugoplanowym (z zatrzymaniem, pauzą, prezentacją postępu,...)
    4. Pobieranie dużego pliku z sieci - jeden wątek drugoplanowy (warunki jak w zad.1) np. z pomocą klasy WebClient.
    5. Pobieranie wielu plików z sieci - wiele wątków (warunki jak w zad.2).
    6. Tablicowanie funkcji w dużej dziedzinie z użyciem klasy BackgroundWorker (z zatrzymaniem, prezentacją postępu).

Wykonać po min. jednym zadaniu z trzech powyższych działów.