263 lines
6.4 KiB
Plaintext
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
|
|
}
|