I7#1 grB, Studia, WAT Informatyka, JTP - java


I termin zwykły: grupa B

(Punktacja: 10+8+12+8+12)

1. Jakie są wady następującej deklaracji:

class Parent {

public void m() throws Exception {

//. . . }

}

Podstawowa wada jest taka, ze potencjalny user takiej klasy nie bedzie w stanie obsluzyc wlasciwie wyjatkow metody m(). Chodzi o to, ze nie bedzie w stanie zaimplementowac wlasciwej reakcji na konkretny wyjatek, bo Exception obejmuje wszystkie wyjatki w Javie. Czyli jest to zbyt ogolny typ, aby umieszczac go w sygnaturze metody.

2. Co będzie wynikiem klonowania obiektu a1 za pomocą standardowej metody clone() w sytuacji, gdy klasy A i B implementują interfejs Clonable?

rys: [a1*A] --Ib--> [b1*B]

Co by było, gdyby klasa A nie implementowała tego interfejsu?

Zalozylem, ze ten jego z dupy rysunek oznacza zawieranie sie obiektu b1 w a1. Wiec jesli w clone() klasy A nie odbywa sie klonowanie obiektow skladowych to powstanie plytka kopia obiektu a1. Jesli zas klonowanie obiektow skladowych sie odbywa to dostaniemy gleboka kopie (nie bedzie zadnych wyjatkow, bo klasa B implementuje Cloneable). Gdyby klasa A nie implementowala Cloneable to java wyplulaby wyjatek CloneNotSupportedException, bo clone() jest metoda klasy Object i bez znacznika w postaci interfejsu Cloneable nie moze byc redefiniowana.

3. Jakie są wady następującej implementacji metody equals:

class Point {

private double x, y;

public boolean eąuals(Point o) {

return (this.x == o.x && this.y == o.y);

}

//...

}

Omów, implementację, która tych wad nie ma.

Wady sa takie, ze np. jak mielibysmy jakis obiekt, ktory dziedziczy po Point i porownywalibysmy go z instacja klasy Point to mogloby sie okazac, ze sa sobie rowne, co jest bzdura. Poprawna implementacja powinna zawierac porownanie klas, pol dodatkowych, ktorych nie ma w klasie bazowej (np. w Point3D byloby jeszcze z) oraz wywolanie bazowej wersji equals. Na kolosie napisalem mu cos takiego:

public boolean equals(Object o) {

if (this.getClass() != o.getClass())

return false;

if (this.z != ((Point3D)o).z)

return false;

return super.equals(o);

}

EDIT: To oczywiscie jest drobne przeklamanie, bo chodzi o implementacje dla Point. Chyba mu napisalem taka metode, ale z rzutowaniem na Point wlasnie. Juz sam nie pamietam

4. Wyjaśnij krótko, jakie są główne typy wyjątków? Wyjaśnij krótko, jaki jest mechanizm rzucania wyjątków i jak są one obsługiwane.

[wykład2] *Typy wyjatkow: sprawdzane, niesprawdzane.

Sprawdzane wyjątki muszą być albo deklarowane w sygnaturze metody, albo łapane i obsługiwane wewnątrz niej.

- ClassNotFound Exception

- CloneNotSupported Exception

- IOException: MalFormed URLException, EOF Exception, Interrupted IOException

Niesprawdzane: RunTime Exception

**Co do obslugi to wiadomo: try, catch, finally.

try {

System.out.println(“What's your name?”);

String name = console.readLine(); //Tu może być rzucony wyjątek.

System.out.println(“Hello, “+ name + “!”);

}

catch (IOException e) { //Tu jest on łapany.

e.printStackTrace();

System.exit(1); //A tu jest on obsługiwany.

}

***Pytanie: Co będzie wynikiem wykonania metody n?

public void m() {

try {

System.out.println("mthrowsrunetimeexceptione.");

thrownew RuntimeException();

} catch(RuntimeExceptione){

System.out.println("mhandlese.");

throw e;

}

finally{

System.out.println("mexecutesitsfinally-part.");

}

}

publicvoid n() {

try {

System.out.println("ncallsm.");

m();

} catch(RuntimeExceptione){

System.out.println("nhandlese.");

}

finally{

System.out.println("nexecutesitsfinally-part.");

}

}
odp:

n callsm.

m throwsrunetimeexception

m handlese.

m executesitsfinally-part.

n handlese.

n executesitsfinally-part.

5. Rozważ następujący fragment metody run(). Jakie problemy wiążą się z następującą deklaracją, jeśli metoda doCriticalThing może być wykonana tylko wtedy, kiedy warunek condition jest spełniony?

try {

if(! condition) wait();

o.doCriticalThing();

}

Jak temu problemowi zaradzić?

Zamiast ifa musi byc while. Wynika to z faktu, ze warunek moze nadal nie byc spelniony po wyjsciu z waita. I tak moze sie dziac kilka razy pod rzad. Widac wiec, ze przy ifie sterowanie mogloby pojsc dalej, mimo ze warunek nie jest spelniony



Wyszukiwarka

Podobne podstrony:
I8#1 grB, Studia, WAT Informatyka, JTP - java
I7#1 grA, Studia, WAT Informatyka, JTP - java
I7#2, Studia, WAT Informatyka, JTP - java
I8#1 grA, Studia, WAT Informatyka, JTP - java
MTSI-zadanie, Studia, WAT Informatyka, WmS - metodyka
SPR-ANKI, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab2
Zadanie IY4S1, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB2
sprawozdanie3, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
sprawozdanie oswietlenie, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab3
majne sciaga teory do druku, Studia, WAT Informatyka, s2 - Peie - podstawy elektroniki i elektrotech
Rzezba Lab4, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB4
GK LAB3, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB4
KWADRYKI, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab2
OpenGl, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
Zad1, Studia, WAT Informatyka 2, semestr III, Statystyka matematyczna
Sprawozdanie BPiE, Studia, WAT Informatyka, s4 - Bpie - bezpieczeństwo pracy i ergonomia
Swb-sciaga, Studia, WAT Informatyka, s4 - Swb - systemy wbudowane
Zadania L3 I6X4S1, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
Zadania L3 I6Y3S1, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab3

więcej podobnych podstron