inf-abi2027/03 Objektorientierung/01 Objekte/01 Einführung.ipynb

263 lines
6.4 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "c37ce57d-6439-4eb0-bda5-32d33ddfbebe",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Objektorientierung\n",
"\n",
"Bei der objektorientierten Programmierung werden mehrere Attribute und Methoden zu logischen oder\n",
"realen Objekten zusammengefasst."
]
},
{
"cell_type": "markdown",
"id": "56763840-610a-4f28-abf8-6fe0473571b2",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Objekte\n",
"\n",
"Ein Objekt ist ein eindeutig identifizierbares Element. Dieses enthält gewisse Informationen und kann\n",
"bestimmte Aktionen ausführen.\n",
"\n",
"Beispiele für Objekte sind:\n",
"* **reale Dinge**, die man aus dem Alltag kennt und die sich beschreiben lassen, wie z.B. eine Person, ein Buch, ein Auto,...\n",
"* **Rollen**, die beispielsweise eine Person annehmen kann und die mit gewissen Eigenschaften verbunden ist, wie z.B. Chef, Angestellter, Kunde, Student, Schüler,...\n",
"* **Ereignisse/Vorgänge**, welche man sich vorstellen kann, aber nicht gegenständlich existiert, wie z.B. ein Meeting, eine Bestellung, eine Schulnote,..."
]
},
{
"cell_type": "markdown",
"id": "0d7af8b2-83d3-4c99-9ae2-8d3205b14d22",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Objekte in TypeScript anlegen\n",
"\n",
"Eigenschaften bzw. sogenannte Attribute können wir in TypeScript einfach zu Objekten zusammenfassen, indem wir diese in geschweifte Klammern schreiben.\n",
"\n",
"Die Attribute bekommen Namen und Werte - *Besonderheit hierbei ist, dass die Werte **innerhalb eines Objektes** nicht mit dem Gleich-Zeichen sondern mit einem Doppelpunkt zugewiesen werden.*\n",
"\n",
"Mehrere Attribute sind mit Komma voneinander getrennt."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "2f010494-eeaa-485c-b731-54c05781fe4e",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" name: \"Droste-Hülshoff-Gymnasium\",\n",
" schueler: 600,\n",
" schulleiter: \"Stefan Maier\"\n",
"}\n"
]
}
],
"source": [
"let schule = {\n",
" name: 'Droste-Hülshoff-Gymnasium',\n",
" schueler: 600,\n",
" schulleiter: 'Stefan Maier'\n",
"}\n",
"\n",
"console.log(schule)"
]
},
{
"cell_type": "markdown",
"id": "b0360017-7032-48e5-a41e-e86fcddd0802",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Methoden\n",
"\n",
"Neben Attributen kann ein Objekt auch Methoden beinhalten. Methoden sind Funktionen, die an ein Objekt gebunden sind."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c7a62c16-a78f-4e2a-a863-3605556de62b",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"let auto = {\n",
" kennzeichen: 'D-HG 1',\n",
" hupe() {\n",
" console.log('Törööt!')\n",
" }\n",
"}"
]
},
{
"cell_type": "markdown",
"id": "b94d0f59-4b84-4638-9105-b9a57303e781",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Auf Attribute und Methoden eines Objektes zugreifen\n",
"\n",
"Wollen wir auf einzelne Attribute eines Objektes zugreifen bzw. Methoden eines Objektes aufrufen, so können wir das mit dem sogenannten Punkt-Operator tun:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "768d24e5-eccb-44c7-ab59-30d779d496e7",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Droste-Hülshoff-Gymnasium\n",
"Törööt!\n"
]
}
],
"source": [
"console.log( schule.name )\n",
"\n",
"auto.hupe()"
]
},
{
"cell_type": "markdown",
"id": "7fcbda33-8675-4aed-9456-20f735613e69",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Anmerkung:\n",
"\n",
"Diese Schreibweise kennen wir bereits z.B. von `console.log()`! Es gibt also bereits vorgegeben ein Objekt `console` und dieses hat die Methode `log()`."
]
},
{
"cell_type": "markdown",
"id": "ff72b09b-4ba6-4ed9-a2e8-ba304d39e100",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Innerhalb des Objektes auf Attribute und Methoden zugreifen\n",
"\n",
"Genauso, wie wir mittels des Variablennamen und dem Punkt auf die Attribute eines Objektes zugreifen können, benötigt man für den Zugriff auf die Attribute innerhalb eines Objektes ebenfalls den Punkt-Operator.\n",
"\n",
"Da innerhalb eines Objektes aber dessen Variablenname nicht bekannt ist, verwenden wir für den Zugriff `this.`:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "00303c31-dd07-4f2f-9bc9-df7cfc416946",
"metadata": {
"editable": false,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hallo, ich heiße Max Mustermann\n"
]
}
],
"source": [
"let person = {\n",
" vorname: 'Max',\n",
" nachname: 'Mustermann',\n",
"\n",
" vorstellen() {\n",
" console.log('Hallo, ich heiße ' + this.vorname + ' ' + this.nachname)\n",
" }\n",
"}\n",
"\n",
"person.vorstellen()"
]
}
],
"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
}