{ "cells": [ { "cell_type": "markdown", "id": "c4b4353b", "metadata": { "editable": false, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "# Aufgabe 03.02.2 - Geräteverwaltung\n", "\n", "In diesem Notebook übst du das Prinzip der **Vererbung** anhand eines alltagsnahen Beispiels aus dem Schulkontext.\n", "\n", "## Hinweise vorab:\n", "Verwende in den Unterklassen den Konstruktor der Oberklasse mit `super(...)`.\n", "\n", "Achte darauf, dass die geerbten Eigenschaften nicht erneut in den Unterklassen definiert werden." ] }, { "cell_type": "markdown", "id": "a1d972e7", "metadata": { "editable": false, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Aufgabe 1: Basisklasse `Geraet`\n", "\n", "Erstelle eine Klasse `Geraet` mit folgenden Eigenschaften:\n", "\n", "- `name: string`\n", "- `inventarNummer: number`\n", "\n", "sowie einer Methode:\n", "\n", "- `getInfo(): string`\n", " - Gibt eine Beschreibung des Geräts zurück, z. B.\n", " `\"Lehrer-Laptop 3 (Inventar-Nr. 1023)\"`\n", "\n", "**Hinweis:** Diese Klasse soll später als Oberklasse dienen." ] }, { "cell_type": "code", "execution_count": 1, "id": "c46b28f3", "metadata": {}, "outputs": [], "source": [ "// TODO: Klasse Geraet hier implementieren\n" ] }, { "cell_type": "markdown", "id": "b05ab6c1", "metadata": { "editable": false, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Aufgabe 2: Abgeleitete Klasse `Laptop`\n", "\n", "Erstelle eine Klasse `Laptop`, die **von `Geraet` erbt**.\n", "\n", "Zusätzliche Eigenschaft:\n", "\n", "- `betriebssystem: string`\n", "\n", "Zusätzliche Methode:\n", "\n", "- `starten(): string`\n", " - z. B. `\"Laptop Lehrer-Laptop 3 mit Windows wird gestartet.\"`\n", "\n", "**Hinweis:** Verwende im Konstruktor `super(...)`, um den Konstruktor der Oberklasse aufzurufen." ] }, { "cell_type": "code", "execution_count": 2, "id": "1e60185f", "metadata": {}, "outputs": [], "source": [ "// TODO: Klasse Laptop hier implementieren\n" ] }, { "cell_type": "markdown", "id": "20935441", "metadata": { "editable": false, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Aufgabe 3: Abgeleitete Klasse `Tablet`\n", "\n", "Erstelle eine Klasse `Tablet`, die ebenfalls **von `Geraet` erbt**.\n", "\n", "Zusätzliche Eigenschaft:\n", "\n", "- `stiftVorhanden: boolean`\n", "\n", "Zusätzliche Methode:\n", "\n", "- `zeichnen(): string`\n", " - Gibt nur dann `\"Zeichnen mit dem Tablet möglich.\"` zurück,\n", " wenn ein Stift vorhanden ist,\n", " sonst `\"Kein Stift vorhanden.\"`." ] }, { "cell_type": "code", "execution_count": 3, "id": "0a97a012", "metadata": {}, "outputs": [], "source": [ "// TODO: Klasse Tablet hier implementieren\n" ] }, { "cell_type": "markdown", "id": "f2cb0748", "metadata": { "editable": false, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Aufgabe 4: Nutzung der Klassen\n", "\n", "1. Erzeuge ein Objekt der Klasse `Laptop`.\n", "2. Erzeuge ein Objekt der Klasse `Tablet`.\n", "3. Rufe bei beiden Objekten die Methode `getInfo()` auf.\n", "4. Rufe zusätzlich die jeweils spezifischen Methoden auf:\n", " - `starten()` beim Laptop\n", " - `zeichnen()` beim Tablet\n", "\n", "Überprüfe die Rückgabewerte mithilfe von `console.log(...)`." ] }, { "cell_type": "code", "execution_count": 4, "id": "0cbfb6f1", "metadata": {}, "outputs": [], "source": [ "// TODO: Objekte erzeugen und Methoden testen\n" ] }, { "cell_type": "markdown", "id": "15fcd64d", "metadata": { "editable": false, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Merksatz\n", "\n", "- **Gemeinsame Eigenschaften und Methoden** → Oberklasse\n", "- **Spezielle Eigenschaften und Methoden** → Unterklasse\n", "\n", "Dieses Prinzip hilft, Code übersichtlich und wartbar zu halten." ] } ], "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 }