4 Folien/Blatt - Arbeitsgruppe Theoretische Informatik und IT ...
4 Folien/Blatt - Arbeitsgruppe Theoretische Informatik und IT ...
4 Folien/Blatt - Arbeitsgruppe Theoretische Informatik und IT ...
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 />
✪