diff --git a/03 Objektorientierung/02 Vererbung/04 Übung.ipynb b/03 Objektorientierung/02 Vererbung/04 Übung.ipynb index 2ed3642..c7621bd 100644 --- a/03 Objektorientierung/02 Vererbung/04 Übung.ipynb +++ b/03 Objektorientierung/02 Vererbung/04 Übung.ipynb @@ -11,7 +11,7 @@ "tags": [] }, "source": [ - "# Vererbung in TypeScript – Geometrische Figuren\n", + "# Aufgabe 03.02.3 – Geometrische Figuren\n", "\n", "In diesem Notebook modellierst du **geometrische Figuren** mithilfe von **objektorientierter Programmierung** und **Vererbung**." ] @@ -217,6 +217,127 @@ "\n", "Warum ist es sinnvoll, die Methoden `umfang()` und `flaeche()` bereits in der Basisklasse `Figur` zu definieren, obwohl ihre konkrete Berechnung erst in den Unterklassen erfolgt?" ] + }, + { + "cell_type": "markdown", + "id": "d7dfe130-b4cb-48de-82b6-84f94ffa2591", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## Automatische Tests\n", + "\n", + "Die folgenden Tests überprüfen, ob deine Klassen korrekt funktionieren.\n", + "\n", + "**Hinweis:** Führe diese Zelle erst aus, wenn alle Klassen implementiert sind." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "fc097962-d40a-44e5-92c6-e214699686ac", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "03.01.3: Rechteck ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n", + "03.01.3: Kreis ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(25ms)\u001b[0m\n", + "03.01.3: Quadrat ... \u001b[0m\u001b[31mFAILED\u001b[0m \u001b[0m\u001b[38;5;245m(0ms)\u001b[0m\n", + "\n", + "\u001b[0m\u001b[1m\u001b[37m\u001b[41m ERRORS \u001b[0m\n", + "\n", + "03.01.3: Rechteck \u001b[0m\u001b[38;5;245m=> :3:6\u001b[0m\n", + "\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: AssertionError: Values are not equal.\n", + "\n", + "\n", + " \u001b[90m\u001b[1m[Diff]\u001b[22m\u001b[39m \u001b[31m\u001b[1mActual\u001b[22m\u001b[39m / \u001b[32m\u001b[1mExpected\u001b[22m\u001b[39m\n", + "\n", + "\n", + "\u001b[31m\u001b[1m- 0\u001b[22m\u001b[39m\n", + "\u001b[32m\u001b[1m+ 14\u001b[22m\u001b[39m\n", + "\n", + " throw new AssertionError(message);\n", + "\u001b[0m\u001b[31m ^\u001b[0m\n", + " at \u001b[0m\u001b[1m\u001b[3massertEquals\u001b[0m (\u001b[0m\u001b[36mhttps://jsr.io/@std/assert/1.0.17/equals.ts\u001b[0m:\u001b[0m\u001b[33m65\u001b[0m:\u001b[0m\u001b[33m9\u001b[0m)\n", + " at \u001b[0m\u001b[36m\u001b[0m:\u001b[0m\u001b[33m6\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n", + "\n", + "03.01.3: Kreis \u001b[0m\u001b[38;5;245m=> :9:6\u001b[0m\n", + "\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: AssertionError: Values are not equal.\n", + "\n", + "\n", + " \u001b[90m\u001b[1m[Diff]\u001b[22m\u001b[39m \u001b[31m\u001b[1mActual\u001b[22m\u001b[39m / \u001b[32m\u001b[1mExpected\u001b[22m\u001b[39m\n", + "\n", + "\n", + "\u001b[31m\u001b[1m- \u001b[41m\u001b[37mundefined\u001b[31m\u001b[49m\n", + "\u001b[22m\u001b[39m\u001b[32m\u001b[1m+ \u001b[42m\u001b[37mfunction\u001b[32m\u001b[49m\n", + "\u001b[22m\u001b[39m\n", + "\n", + " throw new AssertionError(message);\n", + "\u001b[0m\u001b[31m ^\u001b[0m\n", + " at \u001b[0m\u001b[1m\u001b[3massertEquals\u001b[0m (\u001b[0m\u001b[36mhttps://jsr.io/@std/assert/1.0.17/equals.ts\u001b[0m:\u001b[0m\u001b[33m65\u001b[0m:\u001b[0m\u001b[33m9\u001b[0m)\n", + " at \u001b[0m\u001b[36m\u001b[0m:\u001b[0m\u001b[33m10\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n", + "\n", + "03.01.3: Quadrat \u001b[0m\u001b[38;5;245m=> :15:6\u001b[0m\n", + "\u001b[0m\u001b[1m\u001b[31merror\u001b[0m: AssertionError: Values are not equal.\n", + "\n", + "\n", + " \u001b[90m\u001b[1m[Diff]\u001b[22m\u001b[39m \u001b[31m\u001b[1mActual\u001b[22m\u001b[39m / \u001b[32m\u001b[1mExpected\u001b[22m\u001b[39m\n", + "\n", + "\n", + "\u001b[31m\u001b[1m- \u001b[41m\u001b[37mundefined\u001b[31m\u001b[49m\n", + "\u001b[22m\u001b[39m\u001b[32m\u001b[1m+ \u001b[42m\u001b[37mfunction\u001b[32m\u001b[49m\n", + "\u001b[22m\u001b[39m\n", + "\n", + " throw new AssertionError(message);\n", + "\u001b[0m\u001b[31m ^\u001b[0m\n", + " at \u001b[0m\u001b[1m\u001b[3massertEquals\u001b[0m (\u001b[0m\u001b[36mhttps://jsr.io/@std/assert/1.0.17/equals.ts\u001b[0m:\u001b[0m\u001b[33m65\u001b[0m:\u001b[0m\u001b[33m9\u001b[0m)\n", + " at \u001b[0m\u001b[36m\u001b[0m:\u001b[0m\u001b[33m16\u001b[0m:\u001b[0m\u001b[33m3\u001b[0m\n", + "\n", + "\u001b[0m\u001b[1m\u001b[37m\u001b[41m FAILURES \u001b[0m\n", + "\n", + "03.01.3: Rechteck \u001b[0m\u001b[38;5;245m=> :3:6\u001b[0m\n", + "03.01.3: Kreis \u001b[0m\u001b[38;5;245m=> :9:6\u001b[0m\n", + "03.01.3: Quadrat \u001b[0m\u001b[38;5;245m=> :15:6\u001b[0m\n", + "\n", + "\u001b[0m\u001b[31mFAILED\u001b[0m | 0 passed | 3 failed \u001b[0m\u001b[38;5;245m(27ms)\u001b[0m\n" + ] + } + ], + "source": [ + "import { assertEquals } from \"jsr:@std/assert\"\n", + "\n", + "let _nr = \"03.01.3\"\n", + "Deno.test(`${_nr}: Rechteck`, () => {\n", + " assertEquals(typeof Rechteck, 'function')\n", + " const r = new Rechteck(4, 3)\n", + " assertEquals(r.umfang(), 14)\n", + " assertEquals(r.flaeche(), 12)\n", + "})\n", + "Deno.test(`${_nr}: Kreis`, () => {\n", + " assertEquals(typeof Kreis, 'function')\n", + " const k = new Kreis(1)\n", + " assertEquals(Number(k.umfang().toFixed(2)), 6.28)\n", + " assertEquals(Number(k.flaeche().toFixed(2)), 3.14)\n", + "})\n", + "Deno.test(`${_nr}: Quadrat`, () => {\n", + " assertEquals(typeof Quadrat, 'function')\n", + " const q = new Quadrat(5)\n", + " assertEquals(q.umfang(), 20)\n", + " assertEquals(q.flaeche(), 25)\n", + "})" + ] } ], "metadata": {