Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmiermethodik Übung 6 Methoden verstehen und entwerfen (erstmal ohne Computer)

Ähnliche Präsentationen


Präsentation zum Thema: "Programmiermethodik Übung 6 Methoden verstehen und entwerfen (erstmal ohne Computer)"—  Präsentation transkript:

1 Programmiermethodik Übung 6 Methoden verstehen und entwerfen (erstmal ohne Computer)

2 Musterlösung HA 5

3 Musterlösung HA5 Forts.

4 Musterlösung HA5.5 Mehrere Möglichkeiten –Exception (siehe vorige Folien) Vorteil: Flexibler Kontrollfluss, Fehlermeldung... –Boolean-Rückgabewert Problem: was bedeutet jeweils true/false? Kann ignoriert/vergessen werden –return -1 Böse!

5 Partykasse Alice, Bob und Oskar wollen Grillen. Da Bob und Oskar etwas unzuverlässig sind, entwirft Alice dafür ein Abrechnungsprogramm...

6 Grillvorbereitungen... Alice kauft Würstchen für 6 und Fleisch für 12 Bob kauft Salat für 3, Baguette für 3 und Bier für 9 Oskar kauft nur Alkohol: eine Flasche Wein für 3

7 Objektdiagramm vor buchen()

8 Klassendiagramm

9 buchen() Programmcode public class Person { private String name; private int konto; private Kasse kasse; private List buchungen = new ArrayList (); public void buchen(String was, int kosten) { Buchung buchung = new Buchung (); buchung.setBezahler (this); buchung.setWas(was); buchung.setKosten(kosten); kasse.addToBuchungen (buchung); List personen = kasse.getPersonen (); int teilbetrag = kosten / personen.size (); for (Person person : personen) { person.addToKonto(-teilbetrag); } this.addToKonto (kosten); } private void addToKonto (int betrag) { konto += betrag; } }

10 buchen() Ablauf public void buchen(String was, int kosten) { Buchung buchung = new Buchung (); buchung.setBezahler (this); buchung.setWas(was); buchung.setKosten(kosten); kasse.addToBuchungen (buchung); List personen = kasse.getPersonen(); int teilbetrag = kosten / personen.size(); for (Person person : personen) { person.addToKonto(-teilbetrag); } this.addToKonto (kosten); } was = Würstchen kosten = 6 personen = [ ap, bp, op ] teilbetrag = 6 / 3 = 2 bezahlt > Würstchen 6 < buchungen konto == -2 / 4

11 Objektdiagramm nach Buchungen

12 Praxisteil – Aufgabe 1 In kleinen Gruppen (ca. 3 Leute) Durchlauft die Methode abrechnen() als Zetteltest abrechnen() wird auf ap (Alice) aufgerufen –Benutzt dazu das ausgeteilte Arbeitsblatt –Vollzieht den Ablauf der Methode anhand der abgebildeten Objektstruktur Leitet eine allgemeine textuelle Verhaltensbeschreibung ab Achtung: Wichtig für die Hausaufgabe – Bewahrt die Zwischenergebnisse auf Welches Problem hat abrechnen()? Was müsste noch passieren, damit die Objektstruktur konsistent bleibt?

13 Praxisteil – Aufgabe 2 Alice hat diesen Monat nur noch 20 in bar verfügbar. Sie hat mit Fleisch und Würstchen schon 18 bezahlt. Welches Problem tritt nun auf, wenn Alice wie oben abrechnet und die Reihenfolge der Personen Alice, Bob, Oskar ist? Öffne den Eclipse Workspace zur Übung 6 Führe das Attribut Person.barvermoegen ein. Dies beschreibt, wieviel Bargeld die Person zur Verfügung hat. Schreibe Test der nicht-optimale Situation konstruiert Solange der Test nicht erfolgreich ist, führe einen Zetteltest durch oder steppe im Debugger, um herauszufinden warum Wie lässt sich das Problem der nicht optimalen Abrechnung umgehen? Optimiere Kasse.abrechnen() oder Person.abrechnen()

14 Hausaufgabe Auf der Seite der Veranstaltung im Netz –Drei Schleifendurchläufe des Zetteltest –Zusammenfassen von Buchungen implementieren


Herunterladen ppt "Programmiermethodik Übung 6 Methoden verstehen und entwerfen (erstmal ohne Computer)"

Ähnliche Präsentationen


Google-Anzeigen