Objekte - Übung3
parent
971326b818
commit
77745372f4
|
|
@ -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
|
||||
}
|
||||
Loading…
Reference in New Issue