11. óra (2017.11.27)
Diák
Feladatok
Hozzatok létre a circle.zip példából kiindulva egy ColoredCircle osztályt, amely felülírja az őse toString metódusát és ember számára olvasható szöveges reprezentációt állít elő. A feladatot származtatással és kompozícióval is oldjátok meg. A ColoredCircle-nek származtatás esetén legyen a konstruktorban super hívás, a toString-ben pedig super-en keresztül legyen újrahasználva a Circle toString művelete. (megoldás származtatással) (megosztás kompozícióval)
Hasonlítsátok össze a származtatást és a kompozíciót, melyiknek mi az előny, illetve hátránya?
Származtatás
Bővebben a származtatásról itt olvashattok.
Kivételosztályok hierarchiája
A kivételosztályok hierarchiáját itt találjátok. Ellenőrzött kivétel (checked exception) létrehozásához (ami például az IOException, azaz a kiváltódás helyen vagy le kell kezelni, vagy egy throws klózzal explicit nyilatkozni a továbbdobásáról) az Exception osztályból kell származtatni. Nem ellenőrzött kivétel (unchecked exception) létrehozásához a RuntimeException osztályból kell származtatni. Mindkét esetben érdemes olyan konstruktorokat hozzáadni, amik egy message, egy root kivétel vagy mindkét objektumot fogadják és az ősnek propagálják. Ellenőrzött kivétel példa:
public class OwnCheckedException extends Exception { public OwnCheckedException(String message) { super(message); } public OwnCheckedException(String message, Throwable rootCause) { super(message, rootCause); } }
A hívás helyén:
void someMethod() throws OwnCheckedException { ... throws new OwnCheckedException("..."); ... }
...vagy...
void someMethod() { try { ... // kód, ami OwnCheckedException-t dob catch (OwnCheckedException e) { ... // exception kezelése } }
Nem ellenőrzött kivétel példa:
public class OwnUncheckedException extends Exception { public OwnUncheckedException(String message) { super(message); } public OwnUncheckedException(String message, Throwable rootCause) { super(message, rootCause); } }
A hívás helyén:
void someMethod() { ... throws new OwnUncheckedException("..."); ... }