From 77745372f4ddbdadb0a7b84740c277c70b7880ed Mon Sep 17 00:00:00 2001 From: Alexander Kimmig Date: Sun, 11 Jan 2026 18:05:01 +0000 Subject: [PATCH] =?UTF-8?q?Objekte=20-=20=C3=9Cbung3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01 Objekte/06 Übung3.ipynb | 235 ++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 03 Objektorientierung/01 Objekte/06 Übung3.ipynb diff --git a/03 Objektorientierung/01 Objekte/06 Übung3.ipynb b/03 Objektorientierung/01 Objekte/06 Übung3.ipynb new file mode 100644 index 0000000..56e88f4 --- /dev/null +++ b/03 Objektorientierung/01 Objekte/06 Übung3.ipynb @@ -0,0 +1,235 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fdc1fa62-d57a-4eb1-801e-3fcbe3cc9c89", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "# Schneckenrennen\n", + "\n", + "Es treten mehrere Rennschnecken in einem Schneckenrennen gegeneinander an.\n", + "\n", + "Hinweis: es gibt hierbei keine automatisierten Tests, ihr müsst selbst anhand der Beispiel-Programmierung erkennen, ob eure Programmierung richtig ist!" + ] + }, + { + "cell_type": "markdown", + "id": "54c6e6e3-c1e0-4728-9ea5-24523b1a2142", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## 1. Klasse `Rennschnecke`\n", + "\n", + "Rennschnecken sollen folgene Eigenschafen besitzen:\n", + "* einen Namen (z.B. \"Frieda\")\n", + "* eine Rasse (z.B. \"braune Rakete\")\n", + "* eine Maximalgeschwindigkeit (d.h. maximale Veränderung der Strecke pro Schritt)\n", + "* die Schnecke soll wissen, welche Strecke sie bereits zurückgelegt hat\n", + "\n", + "Erstelle für die Klasse `Rennschnecke` einen Konstruktor. Die Maximalgeschwindigkeit soll dabei einen zufälligen Wert zwischen 0 und 5 bekommen (Tipp: `Math.random()`), die zurückgelegte Strecke soll zu Beginn natürlich 0 sein.\n", + "\n", + "Lege eine Methode `krieche()` an, welche die Schnecke abhängig von ihrer Maximalgeschwindigkeit eine zufällige Strecke weiter bewegt. Soll heißen: sie kriecht eine zufällige Strecke größer null und kleiner ihrer Maximalgeschwindigkeit (Tipp: `Math.random() * maximalgeschwindigkeit`)\n", + "\n", + "Lege außerdem eine Methode toString() an, welche die Daten der Schnecke mit `return` als String zurückgibt:\n", + "```\n", + "Frieda (braune Rakete) hat bisher 17.5cm zurückgelegt\n", + "```" + ] + }, + { + "cell_type": "raw", + "id": "0e0d97e5-3c2f-4c4e-bef6-8a2c3a430860", + "metadata": { + "editable": true, + "raw_mimetype": "", + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "Klasse \"Rennschnecke\":\n", + "\n", + "Attribute:\n", + "*\n", + "\n", + "Methoden:\n", + "*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2800c9bf-7aa4-43dc-8008-1fb564ff2f43", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "class Rennschnecke {\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1a0ddceb-f579-4f22-ac70-9a8f3477ad3d", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "// Beispiel-Programmierung statt Testläufe\n", + "// Diese Programmierung sollte problemlos durchlaufen und ihr müsst aufgrund der Ausgabe selbst entscheiden, ob eure Programmierung richtig ist!\n", + "\n", + "// neue Rennschnecke anlegen\n", + "let s = new Rennschnecke(\"Frieda\", \"braune Rakete\")\n", + "// ausgeben\n", + "console.log( s.toString() )\n", + "// kriechen lassen -> soll keine Ausgabe erzeugen\n", + "s.krieche()\n", + "// nochmal mit neuer Strecke neu ausgeben\n", + "console.log( s.toString() )" + ] + }, + { + "cell_type": "markdown", + "id": "3e58a0c6-e234-4b1c-8ab5-f91f15041534", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## 2. Klasse `Rennen`\n", + "\n", + "Ein Rennen hat folgende Eigenschaften:\n", + "* einen Namen\n", + "* die teilnehmenden Schnecken selbst - lege hier 5 Schnecken an!\n", + "* die Länge der zu kriechenden Strecke\n", + "\n", + "Überlege dir, welche dieser Werte bereits im Konstruktor gesetzt werden sollten.\n", + "\n", + "Lege eine Methode `toString()` an, welche die Daten des Rennens mit `return` als String zurückgibt in der Form:\n", + "```\n", + "Beim Rennen \"großer Preis\" steht es aktuell:\n", + "* Frieda (braune Rakete) hat bisher 17.5cm zurückgelegt\n", + "* Gunter (schleimiger Kriecher) hat bisher 14.9cm zurückgelegt\n", + "```\n", + "(Tipp: verwende für die Ausgabe der einzelnen Schnecken deren `toString()`-Methode.)\n", + "\n", + "Lege eine Methode `lasseSchneckenKriechen()` an, welche alle teilnehmenden Schnecken einmal kriechen lässt (also bei jeder Schnecke die `kriechen()`-Methode aufruft).\n", + "\n", + "Lege eine Methode `durchfuehren()` an, welche so lange `lasseSchneckenKriechen()` aufruft, bis eine der Schnecken das Ziel erreicht hat. Die Gewinnerschnecke soll dabei mit `return` zurückgegeben werden." + ] + }, + { + "cell_type": "raw", + "id": "31fcd095-b08b-4953-b40b-dbf0b2515e50", + "metadata": { + "editable": true, + "raw_mimetype": "", + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "Klasse \"Rennen\"\n", + "\n", + "Attribute:\n", + "*\n", + "\n", + "Methoden:\n", + "*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255c6ac2-1589-475a-8ab0-e83b49aec82c", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "class Rennen {\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9c9e0e6b-8d42-4c72-ab4e-e0b609895077", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "// Beispiel-Programmierung statt Testläufe\n", + "// Diese Programmierung sollte problemlos durchlaufen und ihr müsst aufgrund der Ausgabe selbst entscheiden, ob eure Programmierung richtig ist!\n", + "\n", + "// Rennen anlegen, Länge: 100cm\n", + "let r = new Rennen(\"großer Preis\", 100)\n", + "// ausgeben\n", + "console.log( r.toString() )\n", + "// alle Schnecken einmal kriechen lassen -> soll selbst keine Ausgabe erzeugen\n", + "r.lasseSchneckenKriechen()\n", + "// nochmals ausgeben\n", + "console.log( r.toString() )\n", + "// Dann Rennen komplett durchführen -> soll selbst keine Ausgabe erzeugen\n", + "let sieger = r.durchfuehren()\n", + "// Sieger ausgeben\n", + "console.log( \"Gewonnen hat:\" )\n", + "console.log( sieger.toString() )" + ] + } + ], + "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 +}