diff --git a/03 Objektorientierung/01 Objekte/02 Übungen.ipynb b/03 Objektorientierung/01 Objekte/02 Übungen.ipynb index a3e578a..b330869 100644 --- a/03 Objektorientierung/01 Objekte/02 Übungen.ipynb +++ b/03 Objektorientierung/01 Objekte/02 Übungen.ipynb @@ -170,7 +170,10 @@ "tags": [] }, "outputs": [], - "source": [] + "source": [ + "function abstand(punkt1, punkt2) {\n", + "}" + ] }, { "cell_type": "code", diff --git a/03 Objektorientierung/01 Objekte/04 Übungen.ipynb b/03 Objektorientierung/01 Objekte/04 Übungen.ipynb index 488f1d3..ad3d0d9 100644 --- a/03 Objektorientierung/01 Objekte/04 Übungen.ipynb +++ b/03 Objektorientierung/01 Objekte/04 Übungen.ipynb @@ -135,7 +135,7 @@ " assertEquals(typeof Punkt, 'function')\n", "})\n", "Deno.test(`${_nr}: class Gerade`, () => {\n", - " assertEquals(typeof Punkt, 'function')\n", + " assertEquals(typeof Gerade, 'function')\n", "})\n", "Deno.test(`${_nr}`, () => {\n", " let p1 = new Punkt(1,-1)\n", diff --git a/03 Objektorientierung/01 Objekte/05 Übung2.ipynb b/03 Objektorientierung/01 Objekte/05 Übung2.ipynb new file mode 100644 index 0000000..a40ceaf --- /dev/null +++ b/03 Objektorientierung/01 Objekte/05 Übung2.ipynb @@ -0,0 +1,278 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "feaf7178-8e1c-4283-b5ad-7bff7a4a6b79", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import { assertEquals } from \"jsr:@std/assert\"\n", + "import \"https://git.amgdhg.de/kg/tslib/raw/branch/main/logger.ts\"" + ] + }, + { + "cell_type": "markdown", + "id": "f3641e63-972c-41e7-ae8e-821e28fceded", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "# Aufgabe 03.01.5\n", + "Programmiert werden soll eine Kino-Sitzplatzverwaltung.\n", + "\n", + "Hiweis: Die Zählung bei Spalten und Zeilen beginnt jeweils bei \"0\"!" + ] + }, + { + "cell_type": "markdown", + "id": "7a05831f-016d-4ab4-aadd-3923368f4282", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## 1. Klasse `Sitzplatz`\n", + "* Ein Sitzplatz hat eine Position (Zeile `row` und Spalte `col`)\n", + "* Wird ein Sitzplatz angelegt, so ist dieser zunächst leer. Beim Anlegen gibt man die Position an.\n", + "* Ist ein Sitzplatz frei (Methode `istFrei`) so kann dieser reserviert (Methode `reserviere` werden. Dabei wird der Name der Reservierung gespeichert. Schlägt die Reservierung fehl (weil der Sitzplatz bereits zuvor reserviert wurde) so soll `false`, andernfalls `true` zurückgegeben werden.\n", + "* mit `getPosition` soll ein Objekt mit den Attributen `col` und `row` zurückgegeben werden.\n", + "* mit `getReservierung` soll der Nme der Reservierung zurückgegeben werden." + ] + }, + { + "cell_type": "raw", + "id": "62781e42-9258-4c8b-8286-981ec15844d9", + "metadata": { + "editable": true, + "raw_mimetype": "", + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "Klasse \"Sitzplatz\":\n", + "\n", + "Attribute:\n", + "*\n", + "\n", + "Methoden:\n", + "*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2b172e82-cb22-4fb9-b52b-44ac33502ffd", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "06a89906-d2f9-42fa-9220-d3beeada1005", + "metadata": { + "editable": false, + "jupyter": { + "source_hidden": true + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "let _nr = \"03.01.5\"\n", + "Deno.test(`${_nr}: class Sitzplatz`, () => {\n", + " assertEquals(typeof Sitzplatz, 'function')\n", + "})\n", + "Deno.test(`${_nr}: istFrei und reserviere`, () => {\n", + " let s = new Sitzplatz(5,6)\n", + " assertEquals(typeof s.istFrei, 'function')\n", + " assertEquals(s.istFrei(), true, 'Am Anfang muss der Sitzplatz frei sein')\n", + " assertEquals(s.reserviere('Kimmig'), true, 'Die erste Reservierung muss gelingen')\n", + " assertEquals(s.istFrei(), false, 'Nach Reservierung darf der Sitzplatz nicht mehr frei sein')\n", + " assertEquals(s.reserviere('Kimmig'), false, 'Die zweite Reservierung darf nicht mehr gelingen')\n", + "})\n", + "Deno.test(`${_nr}: getPosition`, () => {\n", + " let s = new Sitzplatz(5,6)\n", + " assertEquals(typeof s.getPosition, 'function')\n", + " assertEquals(s.getPosition(), {row: 5, col: 6})\n", + "\n", + " s = new Sitzplatz(20,7)\n", + " assertEquals(s.getPosition(), {row: 20, col: 7})\n", + "})\n", + "Deno.test(`${_nr}: getReservierung`, () => {\n", + " let s = new Sitzplatz(5,6)\n", + " assertEquals(typeof s.getReservierung, 'function')\n", + " assertEquals(s.getReservierung(), '')\n", + " s.reserviere('Kimmig')\n", + " assertEquals(s.getReservierung(), 'Kimmig')\n", + "})" + ] + }, + { + "cell_type": "markdown", + "id": "4bd8276c-6772-4a7e-9e1e-3fb0ba856a2d", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## 2. Klasse: `Kino`\n", + "In der Klasse `Kino` sollen alle Sitzplätze verwaltet werden. Dazu:\n", + "\n", + "* Beim Anlegen eines Kinos soll die Größe (`rows` und `cols`) angegeben werden. Dabei werden automatisch alle Sitzplätze angelegt und in einem Array abgespeichert.\n", + "* Mit der Methode `ausgabe` soll das Kinolayout ausgegeben werden, freie Plätze mit \".\", reservierte Plätze mit \"X\". Beispiel:\n", + "```\n", + " ...XXX..X.\n", + " ...X...X.X\n", + " XXXXX.XXX.\n", + " ...XXX.XXX\n", + "```\n", + "* Hinweis: oben ist Zeile \"0\", links ist Spalte \"0\"\n", + "* Mit `reserviere(row, col, name)` wird ein einzelner Sitzplatz auf den angegebenen Namen reserviert - sofern dieser noch frei ist. Zurückgegeben werden soll `true` bzw `false` ob die Reservierung erfolgreich war.\n", + "* Mit `freieSitze()` soll gezählt werden, wie viele freie Sitze das Kino noch hat." + ] + }, + { + "cell_type": "raw", + "id": "4cf7100c-5c11-42be-9776-a2e0d6b291aa", + "metadata": { + "editable": true, + "raw_mimetype": "", + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "Klasse \"Kino\":\n", + "\n", + "Attribute:\n", + "*\n", + "\n", + "Methoden:\n", + "*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "656cde9b-a105-4752-bf9b-8dcdabf3803c", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "645adebb-fab8-4457-ad06-2c56d4db66fb", + "metadata": { + "editable": false, + "jupyter": { + "source_hidden": true + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "Deno.test(`${_nr}: class Kino`, () => {\n", + " assertEquals(typeof Kino, 'function')\n", + "})\n", + "Deno.test(`${_nr}: freieSitze`, () => {\n", + " let k = new Kino(5,10)\n", + " assertEquals(typeof k.freieSitze, 'function')\n", + " assertEquals(k.freieSitze(), 50)\n", + "\n", + " k = new Kino(12,25)\n", + " assertEquals(k.freieSitze(), 12*25)\n", + "})\n", + "Deno.test(`${_nr}: reserviere`, () => {\n", + " let k = new Kino(5, 10)\n", + " assertEquals(typeof s.reserviere, 'function')\n", + " assertEquals(k.freieSitze(), 50)\n", + " assertEquals(k.reserviere(2,5,'Kimmig'), true)\n", + " assertEquals(k.freieSitze(), 49)\n", + " assertEquals(k.reserviere(2,5,'Kimmig'), false)\n", + "})\n", + "Deno.test(`${_nr}: ausgabe`, () => {\n", + " let k = new Kino(1, 1)\n", + " console.start()\n", + " k.ausgabe()\n", + " assertEquals(console.end(), '.')\n", + "\n", + " k.reserviere(0, 0, 'Kimmig')\n", + " console.start()\n", + " k.ausgabe()\n", + " assertEquals(console.end(), 'X')\n", + "})\n", + "Deno.test(`${_nr}: ausgabe2`, () => {\n", + " let k = new Kino(5, 10)\n", + " console.start()\n", + " k.ausgabe()\n", + " assertEquals(console.end(), '..........\\n..........\\n..........\\n..........\\n..........')\n", + "\n", + " k.reserviere(1, 4, 'Kimmig')\n", + " k.reserviere(1, 5, 'Kimmig')\n", + " k.reserviere(2, 7, 'Kimmig')\n", + " console.start()\n", + " k.ausgabe()\n", + " assertEquals(console.end(), '..........\\n....XX....\\n.......X..\\n..........\\n..........')\n", + "})" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Deno", + "language": "typescript", + "name": "deno" + }, + "language_info": { + "codemirror_mode": "typescript", + "file_extension": ".ts", + "mimetype": "text/x.typescript", + "name": "typescript", + "nbconvert_exporter": "script", + "pygments_lexer": "typescript", + "version": "5.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}