175 lines
4.2 KiB
Plaintext
175 lines
4.2 KiB
Plaintext
{
|
|
"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
|
|
}
|