| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |
| modul:archiv:m320:learningunits:lu06:aufgaben:lu07-aufgabe_6 [2026/08/30 14:06] – ↷ Seite von modul:m320:learningunits:lu06:aufgaben:lu07-aufgabe_6 nach modul:archiv:m320:learningunits:lu06:aufgaben:lu07-aufgabe_6 verschoben msuter | modul:archiv:m320:learningunits:lu06:aufgaben:lu07-aufgabe_6 [2026/08/30 14:06] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden msuter |
|---|
| === Auftrag === | === Auftrag === |
| **Ausgangslage**\\ | **Ausgangslage**\\ |
| In Kapitel 4 der LU06 wird in [[modul:m320:learningunits:lu06:theorie:lu07-kapitel_4|Beispiel 6.4]] gezeigt, was Überschreiben (overwriting) bewirken soll. Setzen Sie nun dieses Beispiel um. Dazu basieren Sie auf dem Klassendiagramm gemäss [[modul:m320:learningunits:lu06:theorie:lu07-kapitel_1|Abb 6.2]] sowie der [[modul:m320:learningunits:lu06:aufgaben:lu07-aufgabe_5|Aufgabe 5]].\\ | In Kapitel 4 der LU06 wird in [[modul:archiv:m320:learningunits:lu06:theorie:lu07-kapitel_4|Beispiel 6.4]] gezeigt, was Überschreiben (overwriting) bewirken soll. Setzen Sie nun dieses Beispiel um. Dazu basieren Sie auf dem Klassendiagramm gemäss [[modul:archiv:m320:learningunits:lu06:theorie:lu07-kapitel_1|Abb 6.2]] sowie der [[modul:archiv:m320:learningunits:lu06:aufgaben:lu07-aufgabe_5|Aufgabe 5]].\\ |
| //Hinweis://\\ | //Hinweis://\\ |
| //Diese Aufgabe umfasst viel Wissen und Können, das Sie bisher angewendet haben. Schauen Sie sich notfalls die entsprechenden Ausführungen der Theorie und Übungen an!//\\ | //Diese Aufgabe umfasst viel Wissen und Können, das Sie bisher angewendet haben. Schauen Sie sich notfalls die entsprechenden Ausführungen der Theorie und Übungen an!//\\ |
| \\ | \\ |
| Gegeben ist dazu das folgende Klassendiagramm.\\ | Gegeben ist dazu das folgende Klassendiagramm.\\ |
| {{:modul:m320:learningunits:lu06:aufgaben:lu06-aufg6_ueberschreiben-1.png?900|}}\\ | {{modul:archiv:m320:learningunits:lu06:aufgaben:lu06-aufg6_ueberschreiben-1.png?900|}}\\ |
| Die Methoden der Klasse ''BankAccount'' sollen folgende Funktionen ausführen: | Die Methoden der Klasse ''BankAccount'' sollen folgende Funktionen ausführen: |
| * ''is_withdraw_money'' liefert einen angeforderten Geldbetrag, sofern der Saldo (''balance'') nicht negativ wird. Ist das der Fall, liefert die Methoden False (Geldbezug nicht möglich), sonst True. | * ''is_withdraw_money'' liefert einen angeforderten Geldbetrag, sofern der Saldo (''balance'') nicht negativ wird. Ist das der Fall, liefert die Methoden False (Geldbezug nicht möglich), sonst True. |
| - Erstellen Sie nun die Klasse ''Customer''. Implementieren Sie die Methoden gemäss der obigen Beschreibung. \\ //Hinweis: Sie können diese Klasse noch nicht testen, da die Klasse ''BankAccount'' fehlt. Das werden Sie später aber nachholen.// \\ | - Erstellen Sie nun die Klasse ''Customer''. Implementieren Sie die Methoden gemäss der obigen Beschreibung. \\ //Hinweis: Sie können diese Klasse noch nicht testen, da die Klasse ''BankAccount'' fehlt. Das werden Sie später aber nachholen.// \\ |
| - Erstellen Sie nun die Klasse ''BankAccount'' gemäss der Beschreibung oben, aber ohne ''main''-Methode. | - Erstellen Sie nun die Klasse ''BankAccount'' gemäss der Beschreibung oben, aber ohne ''main''-Methode. |
| - Fügen Sie der Klasse ''BankAccount'' nun noch die ''main''-Methode zu. Die Ausgabe muss wie folgt aussehen\\ {{:modul:m320:learningunits:lu06:aufgaben:lu06-aufg4_-_output_bankaccount.png?300|}} \\ | - Fügen Sie der Klasse ''BankAccount'' nun noch die ''main''-Methode zu. Die Ausgabe muss wie folgt aussehen\\ {{modul:archiv:m320:learningunits:lu06:aufgaben:lu06-aufg4_-_output_bankaccount.png?300|}} \\ |
| - Testen Sie die Klasse ''BankAccount'', bevor Sie diese für die weitere Arbeit nutzen. Dazu verwenden Sie die Klasse ''TestBankAccount'' in ''test_bank_account.py''. | - Testen Sie die Klasse ''BankAccount'', bevor Sie diese für die weitere Arbeit nutzen. Dazu verwenden Sie die Klasse ''TestBankAccount'' in ''test_bank_account.py''. |
| - Testen Sie nun die Klasse ''Customer''. Dazu verwenden Sie die Testklasse ''TestCustomer'' in der Datei ''test_customer.py''. | - Testen Sie nun die Klasse ''Customer''. Dazu verwenden Sie die Testklasse ''TestCustomer'' in der Datei ''test_customer.py''. |
| - Ergänzen Sie wenn nötig den Konstruktoren von ''BancAccount'' für die Übergabe der Referenz an die Klasse ''Customer''. | - Ergänzen Sie wenn nötig den Konstruktoren von ''BancAccount'' für die Übergabe der Referenz an die Klasse ''Customer''. |
| - Den Teil "money draw" im Diagramm führen Sie zwei Mal aus. Einmal mit einem Bezug von 700 und einmal mit einem Bezug von 400. Hier liefert Ihnen die Methode ''withdraw_money()'' den Wert ''True'', wenn ein Bezug von Geld möglich ist. Wenn nicht - weil Saldo zu klein - liefert sie ''False''. Dem entsprechend soll die Ausgabe am Bildschirm sein. Vergleichen Sie dazu unten den Printscreen. | - Den Teil "money draw" im Diagramm führen Sie zwei Mal aus. Einmal mit einem Bezug von 700 und einmal mit einem Bezug von 400. Hier liefert Ihnen die Methode ''withdraw_money()'' den Wert ''True'', wenn ein Bezug von Geld möglich ist. Wenn nicht - weil Saldo zu klein - liefert sie ''False''. Dem entsprechend soll die Ausgabe am Bildschirm sein. Vergleichen Sie dazu unten den Printscreen. |
| {{:modul:m320:learningunits:lu06:aufgaben:lu06-aufg6_sequenzdiagramm.png?650|}} | {{modul:archiv:m320:learningunits:lu06:aufgaben:lu06-aufg6_sequenzdiagramm.png?650|}} |
| |
| **Erwartetes Ergebnis**\\ | **Erwartetes Ergebnis**\\ |
| Wenn Sie die Klassen gemäss Klassendiagramm und den Ablauf gemäss Sequenzdiagramm implementiert haben, sollten Sie - unter Berücksichtigung einiger erklärender ''print()''-Befehle in ''main'' - ein vergleichbares Ergebis erhalten.\\ | Wenn Sie die Klassen gemäss Klassendiagramm und den Ablauf gemäss Sequenzdiagramm implementiert haben, sollten Sie - unter Berücksichtigung einiger erklärender ''print()''-Befehle in ''main'' - ein vergleichbares Ergebis erhalten.\\ |
| Alle gelb markierten stellen werden durch Attribute geliefert bzw. sind im print-Befehl der jeweiligen Klasse zu finden.\\ | Alle gelb markierten stellen werden durch Attribute geliefert bzw. sind im print-Befehl der jeweiligen Klasse zu finden.\\ |
| {{:modul:m320:learningunits:lu06:aufgaben:lu06-aufg6_ueberschreiben-3.png?500|}}\\ | {{modul:archiv:m320:learningunits:lu06:aufgaben:lu06-aufg6_ueberschreiben-3.png?500|}}\\ |
| ===Dauer=== | ===Dauer=== |
| 3-5 Stunden (als Hausaufgabe) | 3-5 Stunden (als Hausaufgabe) |