inf-abi2027/03 Objektorientierung/02 Vererbung/03 Übung.ipynb

207 lines
4.7 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

{
"cells": [
{
"cell_type": "markdown",
"id": "c4b4353b",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Aufgabe 03.02.3 - 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
}