Nächste Überarbeitung | Vorhergehende Überarbeitung |
modul:m320_2024:learningunits:lu02:aufgaben:bottle [2024/06/26 08:36] – angelegt msuter | modul:m320_2024:learningunits:lu02:aufgaben:bottle [2024/08/22 13:07] (aktuell) – [Klassendiagramm] msuter |
---|
====== LU02.A02 - Klassendiagramm umsetzen ====== | ====== LU02.A02 - Klassendiagramm "Bottle" umsetzen ====== |
| |
<WRAP center round todo 60%> | <WRAP center round todo 60%> |
Commit und Push auf github | Commit und Push auf github |
| |
\\ | ===== Anleitung ===== |
---- | ==== Klassendiagramm ==== |
====Anleitung zu Klasse Bottle==== | |
**Klassendiagramm:**\\ | {{:modul:m320_2024:learningunits:lu02:aufgaben:uml_klasse_bottle.png?400|}} |
{{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bottle.png?400|}}\\ | |
**Beschreibung der Klasse:**\\ | === Beschreibung der Klasse === |
Die Klasse Bottle stellt eine einfache Trinkflasche mit 3 Attributen sowie einigen Methoden dar. | Die Klasse Bottle stellt eine einfache Trinkflasche mit 3 Attributen sowie einigen Methoden dar. |
| |
=== Attribute === | ==== Attribute ==== |
* ''quantity_available'' hält die aktuelle Menge in der Flasche fest. | |
* ''capacity'' ist die maximale Menge, die in der Flasche Platz findet. | |
* ''color'' ist die Farbe der Flasche. | * ''color'' ist die Farbe der Flasche. |
=== Methoden === | * ''capacity'' ist die maximale Menge, die in der Flasche Platz findet. |
| * ''quantity_available'' hält die aktuelle Menge Wasser in der Flasche fest. \\ Defaultwert = 0 |
| |
| |
| ==== Methoden ==== |
* ''%%__init__(…)%%'' (der Konstruktor der Klasse Bottle) initialisiert die verfügbare Menge (quantitiy_avaible) auf 0, während Kapazität (capacity) und Farbe (color) der Flasche durch Parameter festgelegt werden. | * ''%%__init__(…)%%'' (der Konstruktor der Klasse Bottle) initialisiert die verfügbare Menge (quantitiy_avaible) auf 0, während Kapazität (capacity) und Farbe (color) der Flasche durch Parameter festgelegt werden. |
* ''color()'' liefert die Farbe der Flasche. | * ''color()'' liefert die Farbe der Flasche. Wird als ''@property'' realisiert. |
* ''capacity()'' liefert die maximale Menge der Klasse. | * ''capacity()'' liefert das Volumen der Flasche. Wird als ''@property'' realisiert. |
* ''quantitiy_available()'' liefert die in der Flasche vorhandene Menge. | * ''read_quantitiy_available()'' liefert die in der Flasche vorhandene Menge. |
* ''open_bottle()'' wird leer implementiert (Keyword pass verwenden) | * ''open_bottle()'' wird leer implementiert (Keyword pass verwenden) |
* ''close_the_bottle()'' wird leer implementiert. | * ''close_the_bottle()'' wird leer implementiert. |
* ''fill_bottle()'' füllt die Flasche bis zum maximalen Fassungsvermögen. | * ''fill_bottle()'' füllt die Flasche bis zum maximalen Fassungsvermögen. |
* ''get_liquid(amount)'' liefert die angeforderte Menge aus der Flasche, falls diese Menge noch verfügbar ist. Wenn die verfügbare Menge (quantitiy_avaible) kleiner ist, wir diese Menge geliefert und die Flasche ist leer. | * ''drink_water(amount)'' liefert die angeforderte Menge aus der Flasche, falls diese Menge noch verfügbar ist. Wenn die verfügbare Menge (quantitiy_available) kleiner ist, wir diese Menge geliefert und die Flasche ist leer. |
| |
=== Vorgehen:=== | ==== Vorgehen ==== |
- Akzeptieren Sie das GitHub Classroom Assignment. | - Akzeptieren Sie das GitHub Classroom Assignment. |
- Klonen Sie ihr Repository in die Entwicklungsumgebung. | - Klonen Sie ihr Repository in die Entwicklungsumgebung. |
- Führen Sie in ''test_Bottle_class.py'' die Testmethode ''test_color'' aus. Sie muss fehlerfrei ablaufen.\\ {{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bottle-teststart.png?300|}} | - Führen Sie in ''test_Bottle_class.py'' die Testmethode ''test_color'' aus. Sie muss fehlerfrei ablaufen.\\ {{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bottle-teststart.png?300|}} |
- Das Ergebnis des Tests muss wie folgt aussehen:\\ {{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bottle-testergebnis.png?450|}}\\ Wird ein Fehler signalisiert, muss die Methode solange bearbeitet werden, bis der Test «passed» ist.\\ Beispiel eines fehlerhaften Testlaufs:\\ {{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bottle-testergebnisfailed.png?450|}} | - Das Ergebnis des Tests muss wie folgt aussehen:\\ {{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bottle-testergebnis.png?450|}}\\ Wird ein Fehler signalisiert, muss die Methode solange bearbeitet werden, bis der Test «passed» ist.\\ Beispiel eines fehlerhaften Testlaufs:\\ {{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bottle-testergebnisfailed.png?450|}} |
- Führen Sie in Ihrer Entwicklungsumgebung einen **Commit** und einen **Push** aus.\\ Wichtig: Immer dann, wenn Sie einen Test erfolgreich ausgeführt haben, pushen Sie das Programm. So ist sichergestellt, dass auf git jederzeit lauffähiger (und bewertbarer) Code liegt!\\ | - Führen Sie in Ihrer Entwicklungsumgebung einen **Commit** und einen **Push** aus.\\ Wichtig: Immer dann, wenn Sie einen Test erfolgreich ausgeführt haben, pushen Sie das Programm. So ist sichergestellt, dass auf GitHub jederzeit lauffähiger (und bewertbarer) Code liegt! |
- Implementieren Sie nun Schritt für Schritt die weiteren Methoden nach dem gleichen Vorgehen. | - Implementieren Sie nun Schritt für Schritt die weiteren Methoden nach dem gleichen Vorgehen. |
- ''capacity()'' => ''test_capacity'' | - ''capacity()'' => ''test_capacity'' |
- ''quantitiy_available()'' => ''test_initial_quantity'' | - ''read_quantitiy_available()'' => ''test_initial_quantity'' |
- ''open_bottle()'' und ''close_the_bottle()'' werden mit der ''pass''-Anweisung (leere Methoden ohne Funktion) realisiert. Testmethode: ''test_open_and_close_bottle''. | - ''open_bottle()'' und ''close_the_bottle()'' werden mit der ''pass''-Anweisung (leere Methoden ohne Funktion) realisiert. Testmethode: ''test_open_and_close_bottle''. |
- ''fill_bottle()'' => ''test_fill_bottle''. Überlegen Sie sich, wie Sie sicherstellen können, dass die Flasche ganz gefüllt ist. | - ''fill_bottle()'' => ''test_fill_bottle''. Überlegen Sie sich, wie Sie sicherstellen können, dass die Flasche ganz gefüllt ist. |
- In der Methode ''get_liquid(…)'' stellen Sie sicher, dass die gelieferte Menge korrekt ist. Dazu müssen Sie überprüfen, ob die angeforderte Menge (''amount'') in der Flasche verfügbar ist. Weiter müssen Sie sicherstellen, dass der Inhalt der Flasche um den Betrag verringert wird. Reicht der Inhalt nicht, wird einfach der Rest in der Flasche geliefert (und die Flasche ist leer) | - In der Methode ''drink_water(…)'' stellen Sie sicher, dass die gelieferte Menge korrekt ist. Dazu müssen Sie überprüfen, ob die angeforderte Menge (''amount'') in der Flasche verfügbar ist. Weiter müssen Sie sicherstellen, dass der Inhalt der Flasche um den Betrag verringert wird. Reicht der Inhalt nicht, wird einfach der Rest in der Flasche geliefert (und die Flasche ist leer) |
- Testmethoden: ''test_get_liquid_available'', ''test_get_liquid_not_avaible'', ''test_get_liquid_partial_avaible'' | - Testmethoden: ''test_drink_water_available'', ''test_drink_water_not_avaible'', ''test_drink_water_partial_avaible'' |
| |
Zum Schluss führen noch einmal alle Tests aus. | Zum Schluss führen noch einmal alle Tests aus. |
Das Testergebnis muss nun wie folgt aussehen:\\ {{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bottle-gesamttestergebnis.png?500|}} | Das Testergebnis muss nun wie folgt aussehen:\\ {{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bottle-gesamttestergebnis.png?500|}} |
| |
==== Anleitung zu Klasse BankAccount ==== | ---- |
=== Klassendiagramm === | <details> |
{{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bankaccount.png?400|}}\\ | <summary>//=> GitHub Repo für externe Besucher//</summary> |
| GitHub Repository https://github.com/templates-python/m320-lu02-a02-bottle |
| |
=== Beschreibung === | //Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden// |
Die Klasse BankAccount beschreibt ein Bankkonto für einen Kunden (''Customer''). | |
Das Konto kann innerhalb eines bestimmten Wertes überzogen werden, d.h. dass auch ein negativer Saldo möglich ist.\\ | |
=== Attribute === | |
* ''balance'' gibt den aktuellen Kontostand (Saldo) wieder. | |
* ''overdraft'' legt fest, um welchen Betrag das Konto überzogen werden darf, d.h. welcher Minusbetrag möglich ist. (typisch für ein Kreditkonto) | |
* ''customer'' ist die Referenz auf ein Objekt der Klasse ''Customer''. | |
=== Methoden === | |
* ''%%__init__(…)%%'' (der Konstruktor der Klasse BankAccount) initialisiert den Saldo (''balance'') auf 0.0 und legt den Überzug (''overdraft'') sowie den referenzierten Kunden (''customer'') fest. | |
* ''balance()'' liefert den aktuellen Saldo des Kontos (kann auch negativ sein). | |
* ''overdraft()'' liefert den max. Betrag, um den das Konto überzogen werden darf. | |
* ''customer()'' liefert die Referenz zu einem Customer-Objekt. | |
* ''booking(…)'' bucht einen Betrag (''amount'') ins Konto ein und erhöht somit den Saldo (''balance''). | |
* ''get_money(…)'' bucht einen Betrag (''amount'') vom Konto ab. Dabei darf der Betrag max. so gross sein, dass Saldo + Überzug nicht überschritten werden. Ist der Betrag zu gross, liefert die Methode den Wert 0.0 zurück (= kein Bezug möglich). | |
=== Vorgehen === | |
- Implementieren Sie den Konstruktor ( ''%%__init__(…)%%'') und initialisieren Sie die Attribute gemäss Beschreibung. | |
- Erstellen Sie die getter-Methdode (als ''@property'') für das Attribut ''balance'' und testen Sie dies mit der Testmethode ''test_initial_balance'' in der Datei ''test_BankAccount_class.py''.\\ Der Test muss fehlerfrei ausgeführt werden. Pushen Sie ihren Code. | |
- Erstellen Sie die getter_Methode für das Attribut ''overdraft'' und testen Sie diese mit ''test_initial_overdraft''. \\ Der Test muss fehlerfrei ausgeführt werden. Pushen Sie ihren Code. | |
- Erstellen Sie die getter-Methode für das Attribut ''customer'' und testen Sie diese mit ''test_customer''. \\ Der Test muss fehlerfrei ausgeführt werden. Pushen Sie ihren Code. | |
- Erstellen Sie die Methode ''booking(…)'' gemäss der Beschreibung. Testen Sie die Methode mit ''test_booking''.\\ Der Test muss fehlerfrei ausgeführt werden. Pushen Sie ihren Code. | |
- Erstellen Sie die Methode ''get_money(…)'' gemäss der Beschreibung. Achten Sie darauf, wie der angeforderte Betrag bezüglich Saldo (''balance'') und Überzug (''overdraft'') geprüft werden muss. | |
- Testen Sie nun die Methode der Reihe nach mit\\ - ''test_get_money_available'' für einen korrekten Bezug.\\ - ''test_get_money_not_avaiable'' für einen nicht gültigen Bezug.\\ - ''test_get_money_overdraft'' für einen Bezug innerhalb der Kredit-Limite.\\ - ''test_balance_after_transaction'' für die Kontrolle des Saldos.\\ Führen Sie nach jedem der Tests einen commit und push aus! | |
- Führen Sie nun die Testklasse als Ganzes aus.\\ Das Testergebnis muss wie folgt aussehen: \\ {{:modul:m320:learningunits:lu01:aufgaben:lu01-aufg4-bankaccount-gesamttestergebnis.png?500|}} | |
| |
| </details> |
---- | [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] René Probst, bearbeitet durch Marcel Suter |
<nodisp>GitHub Repo: https://github.com/templates-python/M320_LU01_A4_CodeAusDiagramm.git</nodisp> | |
[[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) René Probst | |