'==== Aufgabe 5 - Applikation nach Vorgabe erstellen ====
Sie können Objekte nach Vorgabe eines Klassen- und Sequenzdiagramms erstellen und kommunizieren lassen.
Book und Library werden nicht bearbeitet. Lesen Sie aber dennoch die Beschreibungen der Methoden, damit Sie wissen, wie diese anzuwenden sind.main-Methode alle wichtigen Klassen instanziiert und deren Beziehungen sichergestellt werden.
Teil 1 : ** Die Objekte werden erzeugt.
- Akzeptieren Sie das Assignment in GitHub Classroom und klonen Sie das Repo in Ihre Entwicklungsumgebung.
- Implementieren Sie den Konstruktor der Klassen Customer.
* **Achtung: Beim Erzeugen eines Customer-Objektes meldet sich dieses selber (proaktiv) bei der Library an. Sie können das im Ablauf des Konstruktors erkennen, da dort der Aufruf add_customer ausgeführt wird.
test_library.py die folgende Tests aus, welche fehlerfrei sein müssen:test_add_and_print_customers test_search_customertest_search_customer_failedLibrarian. main-Methode (main.py) die Instanziierung der Objekte sowie die Methodenaufrufe gemäss dem gezeigten Sequenzdiagramm.
- Testen Sie das Programm mit der Methode test_main_part1 in test_main.py. Wie immer muss auch dieser Test fehlerfrei ablaufen.
- Pushen Sie den Teilauftrag 1 auf GitHub
buy_new_book in der Klasse Librarian. librarian.py //
* //Beachten Sie bitte die Beschreibung der benötigten Methoden in den Klassen Library und Book. //
* //Der Wert des Attributs location ist ein Zufallswert der in der Methode add_book() generiert wird. //
* //Halten Sie sich an das gezeigte Sequenzdiagramm. //
- Führen Sie den Test test_buy_new_book in der Datei test_librarian.py aus. Er muss fehlerfrei ablaufen.
- Pushen Sie die aktuelle Lösung auf GitHub.
- Ergänzen Sie den Code in der main-Methode. Halten Sie sich an die Anweisungen im Code der Datei main.py.
Teil 3 : ** Ursula und Moritz leihen sich je ein Buch aus.
Ursula wählt das Buch „Das Omen“ und Moritz das Buch „Ich bin dann mal weg“.
- Erstellen Sie - basierend auf dem Branch aus Teilaufgabe 2 - einen neuen Branch für die Teilaufgabe 3.
- Ergänzen Sie in der Klasse Librarian die Methode borrow_a_book_by_title.
Hinweise:
· Halten Sie sich an die Anweisungen im Code der Datei librarian.py
· Beachten Sie bitte die Beschreibung der benötigten Methoden in den Klassen Library und Book.
· Halten Sie sich an das gezeigte Sequenzdiagramm. Der Ablauf ist etwas komplex gehalten, dies aber bewusst, um möglichst viel „Kommunikation“ zu erzielen.
- Führen Sie den Test test_borrow_a_book_by_title in der Datei test_librarian.py aus. Er muss fehlerfrei ablaufen.
- Pushen Sie diese Lösung auf GitHub.
- Führen Sie nun den Test test_borrow_a_book_by_unknown_title in der Datei test_librarian.py aus. Er muss fehlerfrei ablaufen.
- Pushen Sie diese Lösung auf GitHub.
- Ergänzen Sie nun in der Klasse Customer die Methode borrow_a_book_by_title.
**Achtung! Sie benötigen hier die Referenz self._book auf ein Book-Objekt, um den Rückgabewert aus dem Methodenaufruf zu speichern. Das lässt sich aus dem Sequenzdiagramm so nicht entnehmen. Dieses Wissen müssen Sie als Fachperson hier einbringen. Fehlt die Deklaration dieses Attributs im Konstruktor, müssen Sie das jetzt nachholen.
Hinweis:
· initialisieren Sie self._book mit dem Wert None //
- Führen Sie nun den Test test_borrow_a_book_by_title in der Datei test_customer.py aus. Er muss fehlerfrei ablaufen.
- Pushen Sie die lauffähige Lösung auf GitHub.
- Ergänzen Sie den Code in der main-Methode. Halten Sie sich an die Anweisungen im Code der Datei main.py.
//Hinweis :
· Halten Sie sich an das gezeigte Sequenzdiagramm. //
- Führen Sie das Programm aus. Es muss fehlerfrei laufen.
Die Ausgabe soll in etwa wie folgt aussehen:

- Pushen Sie die lauffähige Teilaufgabe 3 auf GitHub.
//Hinweis:
· die main-Methode wird nicht mehr mit einem eigenen Test geprüft, da alle Methoden die benötigt werden, schon getestete sind. Sie müssen hier in Eigenverantwortung schauen, ob das angezeigte Ergebnis korrekt ist.
**Teil 4: ** Ursula bringt ihr Buch zurück.
get_a_book_from_customer in der Datei librarian.py.test_get_a_book_from_customer in der Datei test_librarian.py.bring_back_a_book in der Datei customer.py.test_bring_back_a_book in der Datei test_customer.py.
**Teil 5 : ** Moritz wird gemahnt
remind_customer in der Datei librarian.py. test_get_a_book_from_customer in der Datei test_librarian.py.
**Teil 6 : ** Der Bibliothekar entfernt ein Buch aus der Bibliothek.
Entfernt wird das Buch „Harry Potter, die neue Welt“
remove_book in der Datei librarian.py.test_remove_book in der Datei test_librarian.py.**Teil 7 : ** Ursula will ein Buch mit einem Titel, den es nicht gibt
3 - 5 Stunden