Pytania testowe z JTP: pierwszy termin poprawkowy
Czas na odpowiedź 45 minut
Punktacja: 12+8+8+12+10
1. Wyjaśnij kiedy są wiązane metody i atrybuty w Javie. Wyjaśnij jak wiązanie ma
się do dziedziczenia. W szczególności wyjaśnij z których klas metody i atrybuty
będą związane w następującym przypadku: klasa B jest podklasą klasy A i obie
posiadają atrybut o nazwie a i metodę o nazwie m ().
B x = new B();
A y = x;
y .a;
y. m () ;
Wymień główne rodzaje kolekcji i podaj ich zastosowania.
Wyjaśnij, kiedy wyjątek mysi być deklarowany w sygnaturze metody.
Załóżmy, że klasa ExceptionY jest podklasą klasy Exception, a klasa ExceptionX jest podklasą klasy ExceptionX. Wyjaśnij, jaki będzie wynik działania następującego kodu (co zostanie wypisane na konsoli), jeśli wykonanie try spowoduje rzucenie:
wyjątku klasy ExceptionX,
wyjątku klasy ExceptionY,
wyjątku klasy Exception.
try { . . . //execute codę;
} catch (ExceptionX e) {
System.out.println("1");
throw new ExceptionX();
} catch (ExceptionY e) {
System.out.println("2");
} catch (Exception e) {
System.out.println("3");
} finally {
System.out.println("Fi");
}
*Jeżeli nastąpi ExceptionX wykona się pierwszy catch, jeżeli nastapi ExceptionY, to wykona się drugi catch, jezeli wywoła się inny wyjątek, wykona się catch(Exception e)
Niezaleznie od tego, czy i który catch się wykona, wykona się finally.
**A nie będzie przypadkiem tak, że jak ExceptionX się wykona to przecież catch dla tego wyjątku rzuca... ten sam wyjątek. Czy nie będzie tak, ze program wpadnie w jakąś pętlę nieskończoną?:P
***A nie jest tak, ze tam gdzie bedzie wywolany wyjatek dla EXCEPTION bedzie tez wywywolany wyjatek dla EXCEPTION X (zgodnie z zasada Basi Liskov, ze kazdy obiekt podklasy da sie wykorzystac tam gdzie wykorzystujemy obiekt nadklasy)?
****nie! wyjatek zostaje zawsze przechwycony przez pierwszy catch, ktory pasuje i juz nie wraca do innych catch'y. Nie wpadnie tez w petle nieskonczona, tylko poprostu...sie nie skompiluje, jezeli nie damy tego throw new ExceptionX() w bloku try catch, lub nie dodamy do metody throws ExceptionX.
5. Wyjaśnij krótko, co to są typy generyczne i kiedy są one użyteczne.
Czy następująca deklaracja jest poprawna przy założeniu, że klasa
ColourPoint jest podklasą klasy Point?
Vector<ColourPoint> cpoints = new Vector<ColourPoint>();
Vector<Point> points = cpoints;
Uzasadnij swoją odpowiedź.
*Typy generyczne to coś jak template`y w C++. Jak jest ArrayList<T> = new ArrayList() to ArrayList jest kolekcją typów generycznych, tzn za to T można podstawić dowolny typ.
*jest niepoprawna bo będzie problem z wkładaniem obiektów klasy Point do vektora zawierającego ColourPoints... tak było w wykładzie. do tego vector<ColorPoint> nie moze być traktowany jak podklasa vector<Point>