inf-abi2027/03 Objektorientierung/01 Objekte/04 Übungen.ipynb

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
}