View
114
Download
3
Category
Preview:
Citation preview
ProgrammiermethodikÜbung 6
Methoden verstehen und entwerfen
Musterlösung HA 4.3-4.5
Musterlösung HA 4.6
• „Die Zugriffsmethoden der Assoziationen sind aus mehreren Gründen komplizierter:– ... HashSets bei „zu n“-Assoziationen werden erst dann
angelegt, wenn sie ein Objekt speichern sollen, dies spart Speicherplatz...
– ... sind Prüfungen vorhanden, die verhindern, einen null-Wert der Liste hinzuzufügen, was ja auch sinnlos wäre
– ... Wird nicht mit einem contains() geprüft, ob ein Element schon im Set enthalten ist, sondern mit der add()-Methode selber, was eine nochmalige Durchsuchung des Sets bei einem dem contains() eventuell folgenden add() sparen kann
Musterlösung HA 5.2
Musterlösung HA5.5
• Ja, es gibt mehrere Wege/Lösungen– Zweimal durch den selben Raum gehen
Neuen Algorithmus verstehenQuellcode
r1
r2
r3
r4
r5
r8
r6r10
r9r12
r11
r13
r7
Neuen Algorithmus verstehen
Was tut der Algorithmus mit diesen Beispieldaten?
Neuen Algorithmus verstehen
Was tut der Algorithmus mit diesen Beispieldaten?
Neuen Algorithmus verstehen
Was tut der Algorithmus mit diesen Beispieldaten?
Neuen Algorithmus verstehenObjekteQuellcode
10
10
1010
10
kosten = 10
10
2
10
10
10
1
2
geschlossen
10
start
algorithmMark=0
r2queue
r
mark = 0
t
newMark = 10
neighbor
neighbor
// liefert Raum mit dem niedrigsten algorithmMark // und entfernt ihn aus der Schlange
algorithmMark=10
r5
Praxisteil – Aufgabe 1• Vollzieht in Gruppendiskussionen den Ablauf des Algorithmus´ anhand
der Objektstruktur nach• Leitet eine allgemeine Verhaltensbeschreibung ab• Wozu könnte der Algorithmus dienen?• Wie könnte man das Attribut ‚algorithmMark‘ besser nennen?• Achtung: Wichtig für die Hausaufgabe – Bewahrt die
Zwischenergebnisse nach dem zweiten Schleifendurchlauf auf
• Präsentation der Ergebnisse
Praxisteil – Aufgabe 2• Öffne den Eclipse Workspace zur Übung 6• Implementiere die Methode model.Person.laufe(List<Raum> weg)
– Die Person soll die Räume wie in der Liste angegeben durchlaufen und an jeder Tür die entspechenden Kosten bezahlen
• Führe den Test operations.Exercise6.testLauf() aus – er sollte erfolgreich sein– Solange der Test nicht erfolgreich ist, führe einen Zetteltest durch oder
Steppe im Debugger, um herauszufinden warum
Hausaufgabe
• Auf der Seite der Veranstaltung im Netz
– Zwei Schleifendurchläufe des Zetteltest– Methode Tuer.sprengen()
Recommended