"Erstellen Sie die Klasse \"Song\" mit den Attributen string \"titel\", int \"dauer_sekunden\", string \"interpret\" und der Methode \"Spielen\", die auf der Konsole alle Informationen über den Song ausgibt (die Dauer dabei in Minuten:Sekunden -> 03:35)\n",
"\n",
"- Die Attribute sollen private sein mit öffentlichen Gettern als Eingeschaft\n",
"- Über einen Konstruktor sollen die Attribute initialisiert werden."
" print(f\"{self.__titel} von {self.__interpret}, Dauer: {minuten:02d}:{restsekunden:02d} Minuten\")"
],
"outputs": [],
"execution_count": null
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Erstellen Sie in der Main einen Song und rufen Sie die Methode auf.",
"id": "91a0f43537a3d9b4"
},
{
"metadata": {},
"cell_type": "code",
"source": [
"song = Song(\"Hallo\", 125, \"Welt\")\n",
"song.spielen()"
],
"id": "648e48c76d987a94",
"outputs": [],
"execution_count": null
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"# Aufgabe 2\n",
"## Aufgabenstellung\n",
"Sie bauen einen Robot. Erstellen Sie die Klasse Robot mit folgenden Membern:\n",
"\n",
"- Integer \"battery_time\"\n",
"- String \"task\"\n",
"- Methode \"is_battery_time_low\":\n",
" - gibt true zurück, wenn die Laufzeit kleiner 2 ist, sonst false.\n",
"- Methode \"execute_task\":\n",
" - gibt auf dem Bildschirm den Text des Attributs \"aufgabe\" aus, wenn \"is_battery_time_low\" false liefert und reduziert dann die battery_time um 1, sonst soll \"Ich muss aufgeladen werden.\" in der Konsole erscheinen."
"Erstellen Sie bitte die Klassen Spellcaster, Sorcerer, Wizard, WildMagicSorcerer und IllusionWizard:\n",
"- Sorcerer und Wizard sind Spellcaster.\n",
"- WildMagicSorcerer ist ein Sorcerer und IllusionWizard ist ein Wizard.\n",
"\n",
"- Alle Spellcaster verfügen über die Methode \"castSpell()\"\n",
"- In Spellcaster gibt die Methode \"Ich kann zaubern.\" aus.\n",
"\n",
"Sorcerer und Wizard überschreiben diese Methode.\n",
"- Sorcerer gibt \"Ich kann zaubern.\" und \"Meine Zauberkraft ist mir angeboren.\" aus.\n",
"- Wizard gibt \"Ich kann zaubern.\" und \"Für meine Zauberkraft musste ich hart arbeiten.\" aus.\n",
"WildMagicSorcerer und IllusionWizard überschreiben und versiegeln(finalize) die Methode.\n",
"- WildMagicSorcerer gibt \"Ich kann zaubern.\", \"Meine Zauberkraft ist mir angeboren.\" und \"Meine Zauber sind unberechenbar.\" aus.\n",
"- IllusionWizard gibt \"Ich kann zaubern.\", \"Für meine Zauberkraft musste ich hart arbeiten.\" und \"Ich habe mich auf\n",
"Illusionszauber spezialisiert.\" aus.\n",
"\n",
"Vermeiden Sie beim Überschreiben der Methode doppelten Code!"
],
"id": "2108e544f058d539"
},
{
"metadata": {},
"cell_type": "code",
"source": [
"class Spellcaster(object):\n",
" def cast_spell(self):\n",
" print(\"Ich kann zaubern.\")\n",
"\n",
"\n",
"class Sorcerer(Spellcaster):\n",
" def cast_spell(self):\n",
" super().cast_spell()\n",
" print(\"Meine Zauberkraft ist mir angeboren.\")\n",
"\n",
"\n",
"class Wizard(Spellcaster):\n",
" def cast_spell(self):\n",
" super().cast_spell()\n",
" print(\"Für meine Zauberkraft musste ich hart arbeiten.\")\n",
"\n",
"\n",
"class WildMagicSorcerer(Sorcerer):\n",
" def cast_spell(self):\n",
" super().cast_spell()\n",
" print(\"Meine Zauber sind unberechenbar.\")\n",
"\n",
"\n",
"class IllusionWizard(Wizard):\n",
" def cast_spell(self):\n",
" super().cast_spell()\n",
" print(\"Ich habe mich auf Illusionszauber spezialisiert.\")"
],
"id": "9f4ca8d209e3898c",
"outputs": [],
"execution_count": null
},
{
"metadata": {},
"cell_type": "markdown",
"source": "In der Main erzeugen Sie einen wildMagicSorcerer und einen illusionWizard und rufen für beide die castSpell()-Methode auf.",
"id": "88c78295e6ff733b"
},
{
"metadata": {},
"cell_type": "code",
"source": [
"sorcerer = WildMagicSorcerer()\n",
"wizard = IllusionWizard()\n",
"sorcerer.cast_spell()\n",
"wizard.cast_spell()"
],
"id": "28ce197ac73ed492",
"outputs": [],
"execution_count": null
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"# Aufgabe 5\n",
"## Aufgabenstellung\n",
"Sie sollen eine Anwendung für einen Shop schreiben. Im Shop gibt es viele Artikel, die mit Id, Bezeichnung, Einkaufspreis, Gewinnsatz und Verkaufspreis gespeichert werden. Der Verkaufspreis wird dabei immer aus Einkaufspreis + Gewinn errechnet.\n",
"\n",
"Artikel, die gekauft werden, werden mit Mengenangabe in einen Warenkorb gelegt. Es sollen Artikel in den Warenkorb gelegt und wieder entfernt werden können. Ebenfalls soll es möglich sein, die Anzahl eines Artikels ändern zu können. Über den Warenkorb wird der Gesamtpreis aller sich dort befindenden Artikel ermittelt.\n",
"\n",
"Artikel im Warenkorb werden dort als Warenkorb-Items eingetragen. Ein Warenkorb-Item besteht aus dem Artikel selbst und der Anzahl. Ebenfalls soll der Gesamtpreis für diesen Artikel abgefragt werden können.\n",
"\n",
"Es ist nicht erforderlich, ein Eingabe-Menü zu basteln. Es reicht, die einzelnen Fälle über Code in der Main zu testen.\n",
"\n",
"Wichtig für diese Übung: Beachten Sie die Prinzipien der OOP. Insbesondere die Klassenbildung und Datenkapselung / Geheimnisprinzip.\n",
"\n",
"Ebenso sollen Sie die strikte Trennung von Funktionalität / Datenhaltung und Darstellung beachten. Heißt: Dort, wo die Daten gespeichert sind und Funktionalitäten liegen, wird KEINE Konsolenausgabe getätigt. Konsolenausgaben nur in dafür vorgesehenen eigenen Klassen oder zum Beispiel in der Main."
],
"id": "dabe541b90e049b1"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"## Bearbeitung\n",
"Sie sollen eine Anwendung für einen Shop schreiben. Im Shop gibt es viele Artikel, die mit Id, Bezeichnung, Einkaufspreis, Gewinnsatz und Verkaufspreis gespeichert werden. Der Verkaufspreis wird dabei immer aus Einkaufspreis + Gewinn errechnet."
"source": "Artikel im Warenkorb werden dort als Warenkorb-Items eingetragen. Ein Warenkorb-Item besteht aus dem Artikel selbst und der Anzahl. Ebenfalls soll der Gesamtpreis für diesen Artikel abgefragt werden können.",
"source": "Artikel, die gekauft werden, werden mit Mengenangabe in einen Warenkorb gelegt. Es sollen Artikel in den Warenkorb gelegt und wieder entfernt werden können. Ebenfalls soll es möglich sein, die Anzahl eines Artikels ändern zu können. Über den Warenkorb wird der Gesamtpreis aller sich dort befindenden Artikel ermittelt.",