OOP Übung2

main
Alexander Kimmig 2026-01-08 17:35:57 +00:00
parent b56fc35dc8
commit 971326b818
3 changed files with 283 additions and 2 deletions

View File

@ -170,7 +170,10 @@
"tags": []
},
"outputs": [],
"source": []
"source": [
"function abstand(punkt1, punkt2) {\n",
"}"
]
},
{
"cell_type": "code",

View File

@ -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",

View File

@ -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
}