CodeGym /Kurse /Frontend SELF DE /Einführung in OOP

Einführung in OOP

Frontend SELF DE
Level 39 , Lektion 1
Verfügbar

2.1 Grundlegende Konzepte der OOP

Im Kern des objektorientierten Programmieransatzes liegt die OOP-Paradigma. Das ist, wenn alle Entitäten des Programms als Objekte betrachtet werden. Objekte sind Daten + Methoden/Funktionen, die etwas mit diesen Daten tun.

Man könnte auch sagen, dass ein Objekt einen Zustand und ein Verhalten hat. Der Zustand eines Objekts wird durch seine Daten bereitgestellt, die in seinen internen Variablen gespeichert werden. Das Verhalten eines Objekts ist die Gesamtheit aller Aktionen, die seine Methoden ausführen.

Es gibt in einem durchschnittlichen Programm viele tausend Objekte, in einem großen Programm sogar Millionen. Um das Chaos zu verringern, wurde beschlossen, die Objekte in Klassen zu organisieren und diese Klassen in eine Art Hierarchie einzuordnen.

Das ist interessant!
Das Konzept der Klassenhierarchie wurde aus der Tierwelt entlehnt, wo es Menschen gibt, die Primaten sind, die Säugetiere sind, und so weiter.

Jedes Objekt hat eine Klasse, aus der es erzeugt wird. Einerseits ist die Klasse ein Template für Objekte, andererseits ein eigenständiges Objekt mit seinen eigenen Besonderheiten (mehr dazu später).

Um das Konzept der Klassen besser zu verstehen, schau dir die folgenden Definitionen an:

Klasse — ist ein Template oder Schema zur Erstellung von Objekten, das Attribute und Methoden definiert, die für alle Objekte dieses Typs charakteristisch sind. Klassen ermöglichen es, Daten und Funktionen, die mit diesen Daten arbeiten, in einer Einheit zu organisieren.

Objekt — Instanz einer Klasse. Jedes Objekt hat einen Zustand (bestimmt durch Attribute) und ein Verhalten (bestimmt durch Methoden).

Abstraktion — ist das Herausarbeiten allgemeiner Eigenschaften von Objekten und das Erstellen von Klassen, die diese allgemeinen Eigenschaften repräsentieren. Das hilft, komplexe Systeme zu vereinfachen und ihre Verständlichkeit zu verbessern.

Vererbung — ermöglicht es einer Klasse (der Kindklasse), Attribute und Methoden einer anderen Klasse (der Elternklasse) zu erben. Das unterstützt die Wiederverwendbarkeit von Code und erleichtert die Wartung.

Polymorphismus — ermöglicht es, ein einheitliches Interface zur Arbeit mit Objekten verschiedener Klassen zu verwenden. Das wird durch die Überschreibung von Methoden in Kindklassen erreicht, die von den Elternklassen geerbt werden.

Abstraktion — beinhaltet das Identifizieren allgemeiner Merkmale von Objekten und das Erstellen von Klassen, die diese allgemeinen Merkmale darstellen. Das hilft, komplexe Systeme zu vereinfachen und ihre Verständlichkeit zu erhöhen.

Wenn du wenigstens die Hälfte verstanden hast — super. Weiter gehen wir genauer auf jeden dieser Punkte ein.

2.2 Abstraktion

Ein gutes Beispiel für Abstraktion im echten Leben ist die Beschreibung von Positionen in einem Unternehmen oder einer Organisation. Die Jobbezeichnung ist das Eine, die Pflichten jeder spezifischen Position sind etwas ganz anderes.

Stell dir vor, du entwirfst die Struktur deines zukünftigen Unternehmens. Du könntest die Aufgaben eines Sekretärs aufteilen: sie auf mehrere andere Positionen verteilen. Du könntest die Position des CEOs in mehrere unabhängige Positionen aufteilen: CFO, CTO, CMO, HR-Manager. Oder du könntest zum Beispiel die Positionen von Office-Manager und Recruiter zu einer zusammenfassen.

Aus programmiertechnischer Sicht ist Abstraktion, sagen wir, die richtige Aufteilung des Programms auf Objekte. Normalerweise kann man jedes große Programm auf dutzende Arten in eine Interaktion von Objekten darstellen. Abstraktion erlaubt es, die wesentlichen Eigenschaften hervorzuheben und unwesentliche wegzulassen.

Abstraktion

Abstraktion ist wie eine Strategie im Militärwesen. Eine schlechte Strategie und keine geniale Taktik kann die Situation noch retten.

2.3 Kapselung

Das Ziel der Kapselung ist es, die Qualität der Interaktion von Dingen durch Vereinfachung zu verbessern.

Kapselung

Und der beste Weg etwas zu vereinfachen, ist es, alles Komplizierte vor fremden Augen zu verstecken. Wenn man zum Beispiel in ein Boeing-Cockpit gesetzt wird, wird man nicht sofort wissen, wie man es steuert:

Boeing-Cockpit

Auf der anderen Seite sieht alles für die Passagiere des Flugzeugs einfacher aus: man kauft ein Ticket, setzt sich ins Flugzeug, hebt ab und landet. Man kann problemlos von Kontinent zu Kontinent fliegen, indem man nur die Fähigkeiten „Ticket kaufen“ und „ins Flugzeug setzen“ besitzt. Alle Komplexitäten wie die Vorbereitung des Flugzeugs auf den Flug, Start, Landung und verschiedene Notfallsituationen sind vor uns verborgen. Ganz zu schweigen von der Satellitennavigation, dem Autopiloten und den Kontrollzentren in den Flughäfen. Und das vereinfacht unser Leben.

Aus programmiertechnischer Sicht ist Kapselung „Verstecken der Implementierung“. Ich mag diese Definition. Unsere Klasse kann Hunderte von Methoden enthalten und ein sehr komplexes Verhalten in verschiedenen Situationen umsetzen. Aber wir können alle ihre Methoden vor fremden Augen verbergen (indem wir ihre Namen mit „__“ umrahmen), und für die Interaktion mit anderen Klassen nur ein paar Methoden übrig lassen. Dann werden alle anderen Klassen unseres Programms nur diese drei Methoden in dieser Klasse sehen und genau diese aufrufen. Und alle Komplexitäten werden innerhalb der Klasse versteckt, ähnlich wie das Cockpit vor den glücklichen Passagieren.

2.4 Vererbung

Vererbung hat zwei Seiten: die programmiertechnische Seite und die Seite des realen Lebens. Aus programmiertechnischer Sicht ist Vererbung eine spezielle Beziehung zwischen zwei Klassen. Viel interessanter jedoch ist, was Vererbung aus Sicht des realen Lebens bedeutet.

Wenn wir im realen Leben etwas erschaffen müssten, hätten wir zwei Möglichkeiten:

  1. die benötigte Sache von Grund auf zu schaffen, was viel Zeit und Mühe kostet;
  2. die benötigte Sache auf Grundlage eines bereits existierenden zu schaffen.

Die optimalste Strategie sieht so aus: Wir nehmen eine bereits existierende gute Lösung, verbessern sie ein wenig, passen sie an unsere Bedürfnisse an und nutzen sie.

Wenn wir die Geschichte der Entstehung der Menschheit zurückverfolgen, stellen wir fest, dass seit dem Entstehen des Lebens auf dem Planeten Milliarden von Jahren vergangen sind. Wenn man jedoch annimmt, dass der Mensch aus Affen entstanden ist (auf der Grundlage von Affen), sind nur ein paar Millionen Jahre vergangen. Erschaffung von Grund auf – dauert länger. Viel länger.

Auch in der Programmierung gibt es die Möglichkeit, eine Klasse auf Grundlage einer anderen zu erstellen. Die neue Klasse wird zum Nachfolger (Kind) einer bereits existierenden Klasse. Dies ist sehr nützlich, wenn es eine Klasse gibt, die 80%-90% der benötigten Daten und Methoden enthält. Wir erklären einfach die passende Klasse zum Elternteil unserer neuen Klasse, und dann hat die neue Klasse automatisch alle Daten und Methoden der Elternklasse. Praktisch, oder?

2.5 Polymorphismus

Polymorphismus ist ein Konzept aus dem Bereich der Programmierung. Es beschreibt eine Situation, in der sich hinter einer Schnittstelle unterschiedliche Implementierungen verbergen. Wenn man versucht, seine Analoga im realen Leben zu finden, wäre eines dieser Analoge der Prozess der Fahrzeugführung.

Wenn jemand einen Lkw fahren kann, kann man ihn auch hinter das Steuer eines Krankenwagens oder Sportwagens setzen. Eine Person kann ein Fahrzeug unabhängig davon steuern, was es für ein Fahrzeug ist, weil alle das gleiche Steuerinterface haben: Lenkrad, Pedale und Schalthebel. Das interne Layout der Fahrzeuge ist unterschiedlich, aber alle haben das gleiche Steuerinterface.

Wenn man zum Programmieren zurückkehrt, ermöglicht Polymorphismus einen einheitlichen Umgang mit Objekten verschiedener Klassen (die normalerweise einen gemeinsamen Vorfahren haben) – etwas, das schwer zu überschätzen ist. Sein Wert wird höher, je größer das Programm ist.

OOP sind Prinzipien. Interne Gesetze. Jedes von ihnen schränkt uns in irgendeiner Weise ein, gibt im Gegenzug jedoch große Vorteile, wenn das Programm auf eine große Größe anwächst. Die vier Prinzipien der OOP sind wie die vier Beine eines Stuhls. Entferne nur eine, und das ganze System wird instabil.

1
Aufgabe
Frontend SELF DE, Level 39, Lektion 1
Gesperrt
Methodenvererbung
Methodenvererbung
1
Aufgabe
Frontend SELF DE, Level 39, Lektion 1
Gesperrt
Object.create
Object.create
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION