Co trzeba wiedzieć i umieć żeby zaliczyć drugie kolokwium
z ćwiczeń "Podstawy programowania"
Autor: Wojciech Thomas <wojciech.thomas@pwr.wroc.pl>
Data ostatniej aktualizacji: 21.12.2011
Streszczenie:
Dokument przedstawia wiedzę i umiejętności prezentowane w drugiej części zajęć z przedmiotu
"Podstawy programowania", konieczne do zaliczenia drugiego kolokwium na ćwiczeniach.
Druga część semestru bazuje na pierwszej, więc znajomość zagadnień z pierwszej części semestru
jest również niezbędna do zaliczenia drugiego kolokwium.
Ćwiczenie 7. Definiowanie hierarchii klas
Wiedza
1. Wiedzieć co oznaczają pojęcia: klasa bazowa, klasa pochodna, dziedziczenie.
2. Wiedzieć w jaki sposób wywoływane są konstruktory klasy pochodnej.
Umiejętności
1. Zdefiniować własną klasę dziedziczącą po innej klasie.
2. Zdefiniować nową metodę w klasie pochodnej.
3. Przesłonić metodę klasy bazowej.
4. Wywołać w metodzie klasy pochodnej przesłoniętą metodę klasy bazowej.
5. Zdefiniować konstruktor klasy pochodnej.
6. Wywołać w konstruktorze klasy pochodnej konstruktor klasy bazowej.
Ćwiczenie 8. Praca z kolekcjami obiektów
Wiedza
1. Znać podstawowe różnice w zasadzie działania kolekcji ArrayList, HashMap, HashSet
2. Znać podstawowe metody służące do obsługi obiektów w kolekcji (wraz z parametrami):
1. ArrayList: add, get, contains, remove, clear, size
2. HashSet: add, contains, remove, clear, size
3. HashMap: put, get, containsKey, containsValue, keySet, values, size
3. Znać działanie iteratorów, oraz działanie ich metod: hasNext, next i remove.
Umiejętności
1
1. Napisać metodę wstawiającą obiekt do kolekcji (dla każdej kolekcji).
2. Napisać metodę pobierającą wybrany obiekt z kolekcji (na podstawie indeksu kolekcji
ArrayList i na podstawie obiektu-klucza dla kolekcji HashMap).
3. Napisać metodę wyświetlającą wszystkie elementy w kolekcji (dowolnego typu) przy
pomocy polecenia For-each (w postaci
for(Obiekt o:kolekcja)
).
4. Napisać metodę wyświetlającą wszystkie elementy z kolekcji (dowolnego typu) przy
pomocy iteratora.
5. Napisać metodę usuwającą wybrany obiekt z kolekcji przy pomocy iteratora.
Ćwiczenie 9. Standardowe wejście i wyjście
Wiedza
1. Wiedzieć co to jest standardowy strumień wejścia i standardowy strumień wyjścia.
2. Znać działanie metod klasy PrintStream: print, println.
3. Znać działanie metod klasy Scanner: hasNext, next, hasNextLine, nextLine, hasNextInteger,
nextInteger (itd. dla wszystkich typów prymitywnych).
4. Znać działanie metody toString w klasie Object i zasady jej przedefiniowywania w swoich
klasach.
5. Znać sposób działania metody printf z klasy PrintStream.
Umiejętności
1. Napisać metodę toString dla wybranej klasy.
2. Napisać metodę wyświetlającą dowolne informacje na standardowym wyściu.
3. Napisać metodę wczytującą dane o podanym z góry formacie ze standardowego wejścia.
Np. wczytać imię, wiek, wzrost i wagę osoby.
4. Napisać metodę wczytującą dane o nieznanym rozmiarze.
Np. oblicz sumę ciągu liczb naturalnych. Wczytuj liczby dopóki na standardowym wejściu
nie pojawi się liczba -1.
5. Napisać metodę wypisującą dane sformatowane w wybrany przez siebie sposób, np. tabelka
liczb, gdzie wszystkie liczby są wyrównane do prawego marginesu.
Ćwiczenie 10. Przetwarzenie plików
Wiedza
1. Wiedzieć jaka jest różnica między strumieniami Stream i Reader/Writer.
2. Wiedzieć jak używać strumieni odnoszących się do plików: FileInputStream,
FileOutputStream, FileReader, FileWriter.
3. Znać następujące metody strumieni:
1. FileOutputStream: konstruktor, close, write.
2. FileInputStream: konstruktor, close, available, read.
3. FileWriter: konstruktor, close, write.
2
4. FileReader: konstruktor, close, ready, read.
4. Znać sposób użycia klas dekoratorów (dodających nowe metody do istniejących strumieni)
1. ObjectOutputStream: konstruktor, close, writeObject, writeInt (itd. dla wszystkich typów
prymitywnych).
2. ObjectInputStream: konstruktor, close, available, readObject, readInt (itd. j.w.).
3. PrintWriter: konstruktor, close, print, println.
4. BufferedReader: konstruktor, close, ready, read, readLine.
Umiejętności
1. Napisać metodę zapisującą wybrany obiekt lub zmienną typu prymitywnego do pliku
strumieniowego.
2. Napisać metodę odczytującą pojedynczy obiekt lub zmienną typu prymitywnego z pliku
strumieniowego.
3. Napisać metodę odczytującą dowolną liczbę obiektów z pliku strumieniowego, dopóki są
dostepne dane.
4. Napisać metodę zapisującą liczby i teskt, rozdzielone wybranym znakiem separatora, do
pliku tekstowego. Np.
Adam;10;3.4;34
5. Napisać metodę odczytującą liczby i tekst rozdzielone wybranym znakiem separatora z
pliku tekstowego. Do rozdzielania elementów wykorzystać metodę split klasy String.
Ćwiczenie 11. Obsługa wyjątków, stosowanie asercji.
Wiedza
1. Znajomość działania słowa kluczowego
assert
.
2. Znajomość działania programu w języku Java po wystąpieniu wyjątku.
3. Znajomość działania słowa kluczowego
throws
– zaznaczenie możliwości pojawienia się
wyjątku w wybranej metodzie.
4. Znajomość sposobu przechwytywania błędów przy pomocy instrukcji
try/catch
.
5. Umiejętność przedstawienia hierarchii wyjątków.
6. Umiejętność rozróżniania między wyjątkami zwykłymi (np. IOException) a wyjątkami
niesprawdzanymi (np. NullPointerException).
Umiejętności
1. Napisać metodę w której polecenie assert zostanie wykorzystane do sprawdzenia
niezmienników metody. Np. pensja pracownika jest zawsze liczbą naturalną.
2. Napisać metodę zgłaszającą wyjątki jednego typu. Np. z klasą ObjectOutputStream.
3. Napisać metodę zgłaszającą dwa różne typy wyjątków. Np. z klasą ObjectInputStream i
odczytem obiektu
4. Napisać metodę która przechwytuje zgłaszane wewnątrz niej wyjątki. Np. próba odczytu
danych z nieistniejącego pliku. Metoda powinna wyświetlić na ekranie informację o zajściu
wyjątku, ale nie powinna przerwać działania programu.
5. Napisać własną klasę wyjątku.
3
6. Napisać metodę która po wykryciu błędnej sytuacji zgłosi własny wyjątek, np. gdy
użytkownik usiłuje podać jako wymiar etatu liczbę ujemną.
4