Zadania realizowane w ramach laboratorium programowania obiektowego 2 (C#):

  1. Kulki i przeszkody - motor symulacji i gier z przykładem zastosowania
  2. Eksperyment ze słownikiem i dobrym/złym GetHashCode()
    Należy stworzyć własną strukturę/klasę, która posłuży jako typ klucza dla słownika (Dictionary). Prosta funkcja testująca sprawdzi działanie dodawania elementów do słownika i pobierania włożonych wcześniej wartości oraz zmierzy czas działania (wystarczy różnica pobieranych DateTime.Now). Do słownika należy wrzucić i pobierać odpowiednio dużo wartości, by otrzymać miarodajne czasy wykonania.
    Efektem eksperymentu powinna być świadomość kiedy i dlaczego działa to szybko a kiedy i dlaczego wolno, dlaczego bez GetHashCode dla klas jest wyjątek, a dla struktur nie itd. Do rozliczenia potrzebny jest kod eksperymentu i krótki opis wniosków (można go wstawić jako komentarz do pliku z kodem).
    W skrócie, do zrobienia jest: Uwaga! GetHashCode() nadpisujemy zwykle w parze z Equals() - ten sam kod haszujący nie wystarcza by dwa klucze uznać za jednakowe - ostatecznie decyduje właśnie Equals(), która domyślnie, w przypadku typów referencyjnych porównuje referencje właśnie, a w przypadku typów wartościowych porówna wnętrza (dla struktur pole po polu).
  3. Problem B z finałów konkursu ACM 2009
  4. Problem F z finałów konkursu ACM dla Europy Centralnej 2001

Ocena wg sumy punktów:

Punkty do zdobycia:
  1. Kulki i przeszkody - 6/10 pkt. (4 pkt. za wersję okienkową)
  2. GetHashCode() - 4 pkt.
  3. Bramki (B-2009) lub Cysterny (F-2001) - 10 pkt.
  4. Dodatkowe punkty za rozwiązania wykraczające poza ww. wymagania (np. atrakcyjny interfejs graficzny)
Ostatecznie, ocena: