22.12.2012 Aufrufe

4 Folien/Blatt - Arbeitsgruppe Theoretische Informatik und IT ...

4 Folien/Blatt - Arbeitsgruppe Theoretische Informatik und IT ...

4 Folien/Blatt - Arbeitsgruppe Theoretische Informatik und IT ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

✬<br />

→ ClassCastException beim Auslesen der 2,<br />

wird bei der Übersetzung nicht entdeckt<br />

Beobachtung: Je mehr Fehler schon bei der<br />

Übersetzung des Programms gef<strong>und</strong>en werden<br />

können, desto besser.<br />

→ Mit Hilfe von Generics können wir dem<br />

Compiler ab JDK 1.5 bei der Fehlersuche<br />

helfen, indem wir ihm explizit sagen, welchen<br />

Datentyp wir in der Collection namen<br />

speichern wollen.<br />

Definitionen im JDK 1.5:<br />

✫<br />

✬<br />

<br />

Collection<br />

+contains(o:Object): boolean<br />

+size(): int<br />

+iterator(): Iterator<br />

13<br />

<br />

Iterator<br />

+hasNext(): boolean<br />

+next(): T<br />

+remove()<br />

4.4 Implementation von<br />

Assoziationen/Aggregationen<br />

4.4.1 0..1 - 0..1<br />

Beispiel: Student-ecUM<br />

class Student{<br />

private EcUM ecUM;<br />

// ...<br />

public void setEcUM(EcUM ecUM){<br />

this.ecUM = ecUM;<br />

if (ecUM != null) ecUM.setBesitzer(this);<br />

}<br />

public getEcUM() { return ecUM; }<br />

}<br />

class EcUM{<br />

private Student besitzer;<br />

// ...<br />

public void setBesitzer(Student s){<br />

besitzer=s;<br />

if (s != null) s.setEcUM(this);<br />

}<br />

public getBesitzer() { return besitzer; }<br />

}<br />

✫<br />

15<br />

✩<br />

✪<br />

✩<br />

✪<br />

✬<br />

Neue Version des Beispiels:<br />

Collection namen<br />

= new HashSet();<br />

namen.add(new String("Max"));<br />

namen.add(new String("Moritz"));<br />

namen.add(new Integer(2));<br />

// Fehler bei der Uebersetzung<br />

Iterator it = namen.iterator();<br />

while (it.hasNext()){<br />

String name = it.next();<br />

// kein Typecast mehr notwendig<br />

System.out.println(name);<br />

}<br />

Auslesen der Elemente per For-Each-Loop:<br />

for (String name : namen){<br />

System.out.println(name);<br />

}<br />

✫<br />

✬<br />

4.4.2 0..1 - 0..n<br />

Beispiel: Mutter-Kind<br />

public class Mutter{<br />

Set kinder;<br />

// ...<br />

public Mutter(){<br />

kinder = new HashSet();<br />

}<br />

public void addKind(Kind k){<br />

if (k!=null){<br />

kinder.add(k);<br />

k.setMutter(this);<br />

}<br />

}<br />

}<br />

public class Kind{<br />

Mutter mutter;<br />

// ...<br />

public void setMutter(Mutter m){<br />

mutter = m;<br />

if (m!=null) m.addKind(this);<br />

}<br />

}<br />

✫<br />

14<br />

16<br />

✩<br />

✪<br />

✩<br />

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!