arckép

Neuwirth István

programtervező informatikus MSc – ELTE

Computational and Software Techniques MSc – Cranfield, UK

Elérhetőség
pitta2@gmail.com
+36 30 329 3039

Valid XHTML 1.0 Transitional

Valid CSS!

11. óra (2017.11.27)

Diák

gyak11.pdf

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("...");
    ...
}

Vissza