{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "636d4527-50fc-4836-ae08-00c12844da8d", "metadata": { "editable": false, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "import { assertEquals } from \"jsr:@std/assert\"" ] }, { "cell_type": "markdown", "id": "d90b7734-c902-4300-80ef-d8bf55a64813", "metadata": { "editable": false, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "# Aufgabe 03.01.4\n", "\n", "Programmiert werden soll ein einfaches Mathe-Tool mit den beiden Klassen `Punkt` und `Gerade`.\n", "\n", "Eine mathematische Gerade wird durch die Gleichung $y = m\\cdot x + c$ beschrieben, Punkte haben im zweidimensionalen Raum die Koordinaten $P(x\\mid y)$\n", "\n", "Es soll möglich sein:\n", "* einen Punkt direkt mit den Koordinaten anlegen\n", "* eine Gerade direkt mit Steigung und y-Achsenabschnitt anlegen\n", "* eine Gerade mithilfe von zwei Punkten anlegen\n", "* eine Gerade mit einer anderen Geraden schneiden lassen, als Ergebnis soll ein Punkt zurückgegeben werden.\n", "* es soll in der Klasse `Punkt` eine Methode `toString()` geben, die einen String mit der mathematischen Beschreibung des Punktes zurückgibt, z.B. $P(2\\mid3)$ (ohne Leerzeichen!)\n", "* es soll in der Klasse `Gerade` eine Methode `toString()` gebenm die einen String mit der mathematischen Formel zurückgibt, z.B. $y=2*x-3$ (ohne Leerzeichen!)" ] }, { "cell_type": "markdown", "id": "789364d0-c61c-4237-b02e-ddfc04d7401f", "metadata": { "editable": false, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Entwirf zunächst die Klassen, also welche Attribute und welche Methoden die Klassen enthalten müssen:" ] }, { "cell_type": "raw", "id": "a25cfb30-0a08-47c3-bad1-bc7712aa2c2e", "metadata": { "editable": true, "raw_mimetype": "", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Klasse \"Punkt\":\n", "\n", "Attribute:\n", "*\n", "\n", "Methoden:\n", "*" ] }, { "cell_type": "raw", "id": "a46499ec-0c9a-4ed4-815d-b680ed90803f", "metadata": { "editable": true, "raw_mimetype": "", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Klasse \"Gerade\":\n", "\n", "Attribute:\n", "*\n", "\n", "Methoden:\n", "*" ] }, { "cell_type": "code", "execution_count": null, "id": "594735d3-e90e-443e-9eff-e4600c331bc2", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "245aec76-71a6-478e-9301-08ca4e14ff71", "metadata": { "editable": false, "jupyter": { "source_hidden": true }, "slideshow": { "slide_type": "" }, "tags": [ "Test" ] }, "outputs": [], "source": [ "let _nr = \"03.01.4\"\n", "Deno.test(`${_nr}: class Punkt`, () => {\n", " assertEquals(typeof Punkt, 'function')\n", "})\n", "Deno.test(`${_nr}: class Gerade`, () => {\n", " assertEquals(typeof Gerade, 'function')\n", "})\n", "Deno.test(`${_nr}`, () => {\n", " let p1 = new Punkt(1,-1)\n", " let p2 = new Punkt(3,3)\n", " assertEquals(p1.toString(), 'P(1|-1)')\n", " assertEquals(p2.toString(), 'P(3|3)')\n", "\n", " let g1 = new Gerade(p1,p2)\n", " assertEquals(g1.toString(), 'y=2*x-3')\n", "\n", " let g2 = new Gerade(-0.5, 2)\n", " let p = g1.schneide(g2)\n", " assertEquals(p1.toString(), 'P(2|1)')\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 }