CodeGym /Java Kurs /Python SELF DE /Einführung in OOP

Einführung in OOP

Python SELF DE
Level 15 , Lektion 2
Verfügbar

2.1 Grundkonzepte der OOP

Die objektorientierte Programmiersprache basiert auf der OOP-Paradigma. Das ist, wenn alle Entitäten eines Programms als Objekte betrachtet werden. Objekte sind Daten + Methoden/Funktionen, die mit diesen Daten etwas machen.

Man kann 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 sind. Das Verhalten eines Objekts ist die Gesamtheit aller Aktionen, die seine Methoden ausführen.

In einem durchschnittlichen Programm gibt es Tausende von Objekten, in einem großen Millionen. Um irgendwie das Chaos zu verringern, wurde beschlossen, Objekte in Klassen zu organisieren, und Klassen in eine gewisse Hierarchie.

Das ist interessant! Das Konzept der Klassenhierarchie wurde der Tierwelt entnommen, in der es Menschen gibt, die Primaten sind, die Säugetiere sind, usw.

Jedes Objekt hat eine Klasse, mit deren Hilfe es erstellt wird. Auf der einen Seite ist die Klasse eine Art Vorlage für das Objekt, auf der anderen Seite ist sie ein eigenständiges Objekt mit eigenen Besonderheiten (dazu später mehr).

Um das Konzept der Klassen besser zu verstehen, schauen wir uns die folgenden Definitionen an:

Klasse:

Eine Klasse ist eine Vorlage oder ein Schema zur Erstellung von Objekten, das Attribute und Methoden definiert, die für alle Objekte dieses Typs charakteristisch sind. Klassen erlauben es, Daten und Funktionen, die mit diesen Daten arbeiten, in ein einziges Ganzes zu organisieren.

Objekt:

Ein Objekt ist eine Instanz einer Klasse. Jedes Objekt hat einen Zustand (definiert durch Attribute) und ein Verhalten (definiert durch Methoden).

Verkapselung:

Verkapselung bedeutet, die interne Implementierung einer Klasse zu verstecken und ein Interface zur Interaktion mit Objekten dieser Klasse bereitzustellen. Dies hilft, Daten zu schützen und den Zugriff darauf zu steuern.

Vererbung:

Vererbung erlaubt es einer Klasse (der Tochterklasse), Attribute und Methoden einer anderen Klasse (der Elternklasse) zu erben. Das trägt zur Wiederverwendung von Code bei und vereinfacht dessen Wartung.

Polymorphismus:

Polymorphismus ermöglicht die Verwendung eines einheitlichen Interfaces zur Arbeit mit Objekten verschiedener Klassen. Dies wird durch Überladen von Methoden in den Tochterklassen erreicht, die von den Elternklassen geerbt werden.

Abstraktion:

Abstraktion besteht darin, gemeinsame Merkmale von Objekten zu identifizieren und Klassen zu erstellen, die diese gemeinsamen Merkmale repräsentieren. Das hilft, komplexe Systeme zu vereinfachen und deren Verständlichkeit zu verbessern.

Wenn du mindestens die Hälfte verstanden hast – super. Als nächstes gehen wir auf jeden dieser Punkte genauer ein.

2.2 Abstraktion

Ein gutes Beispiel für Abstraktion im realen Leben ist die Beschreibung von Positionen in einem Unternehmen oder einer Organisation. Der Name der Position ist das eine, aber die Aufgaben jeder spezifischen Position sind etwas ganz anderes.

Stell dir vor, du entwirfst die Struktur deines zukünftigen Unternehmens. Du kannst die Aufgaben eines Sekretärs auf mehrere andere Positionen verteilen. Du kannst die Position des Geschäftsführers in mehrere unabhängige Positionen aufteilen: Finanzdirektor, Technischer Direktor, Marketingdirektor, Personaldirektor. Oder zum Beispiel die Positionen des Office-Managers und des Recruiters in einer Position vereinen.

Aus der Sicht der Programmierung ist Abstraktion – sagen wir – die korrekte Aufteilung des Programms in Objekte. Normalerweise kann man jedes große Programm auf Dutzende von Arten als interagierende Objekte darstellen. Abstraktion erlaubt es, die Hauptmerkmale auszuwählen und die nebensächlichen zu ignorieren.

Abstraktion ist wie eine Strategie in der Kriegsführung. Eine schlechte Strategie – und keine geniale Taktik kann die Situation noch retten.

2.3 Verkapselung

Das Ziel der Verkapselung ist es, die Qualität der Interaktion zwischen den Elementen zu verbessern, indem ihre Interaktion vereinfacht wird.

Und der beste Weg, etwas zu vereinfachen, ist, alles Komplexe vor neugierigen Blicken zu verbergen. Zum Beispiel, wenn du in das Cockpit eines Boeing gesetzt wirst, wirst du nicht sofort verstehen, wie man es steuert:

Andererseits sieht für die Passagiere des Flugzeugs alles einfacher aus: Ticket gekauft, ins Flugzeug gesetzt, abgehoben und gelandet. Du kannst einfach von einem Kontinent zum anderen fliegen, indem du nur die Fähigkeiten "Ticket kaufen" und "ins Flugzeug setzen" hast. Alle Komplexitäten in Form der Vorbereitung des Flugzeugs zum Fliegen, des Starts, der Landung und verschiedener onverwacht Situationen 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 der Sicht der Programmierung ist Verkapselung das "Verbergen der Implementierung". Mir gefällt diese Definition. Unsere Klasse kann hunderte von Methoden enthalten und sehr komplexes Verhalten in verschiedenen Situationen umsetzen. Aber wir können alle ihre Methoden vor neugierigen Blicken verbergen (indem wir ihre Namen auf beiden Seiten mit „__“ umrahmen) und nur ein paar Methoden zur Interaktion mit anderen Klassen übriglassen. Dann werden alle anderen Klassen unseres Programms in dieser Klasse nur drei Methoden sehen und genau diese aufrufen. Und alle Komplexitäten werden innerhalb der Klasse versteckt, wie das Cockpit vor glücklichen Passagieren.

2.4 Vererbung

Die Vererbung hat zwei Seiten. Die Seite der Programmierung und die Seite des realen Lebens. Aus der Sicht der Programmierung ist Vererbung ein besonderes Verhältnis zwischen zwei Klassen. Viel interessanter ist aber, was Vererbung aus der Sicht des realen Lebens ist.

Wenn wir in der realen Welt etwas erschaffen müssten, gäbe es zwei Wege:

  1. das benötigte Ding von Grund auf neu erschaffen, dabei viel Zeit und Mühe aufwenden;
  2. das benötigte Ding auf der Grundlage eines bereits bestehenden erschaffen.

Die optimalste Strategie sieht so aus: wir nehmen eine bestehende gute Lösung, verbessern sie ein wenig, passen sie an unsere Bedürfnisse an und verwenden sie.

Wenn wir die Entstehungsgeschichte des Menschen zurückverfolgen, stellt sich heraus, dass seit dem Beginn des Lebens auf der Erde Milliarden Jahre vergangen sind. Und wenn man sich vorstellt, dass der Mensch aus dem Affen entstanden ist (auf der Grundlage eines Affen), dann sind nur ein paar Millionen Jahre vergangen. Erschaffung von Grund auf – dauert länger. Viel länger.

In der Programmierung gibt es auch die Möglichkeit, eine Klasse auf der Grundlage einer anderen zu erstellen. Die neue Klasse wird zum Nachkommen (Erben) der bereits bestehenden. Das ist sehr vorteilhaft, wenn es eine Klasse gibt, die 80%–90% der benötigten Daten und Methoden enthält. Wir erklären einfach die passende Klasse als Elternteil unserer neuen Klasse, dann erscheinen in der neuen Klasse automatisch alle Daten und Methoden der Elternklasse. Bequem, nicht wahr?

2.5 Polymorphismus

Polymorphismus ist ein Konzept aus der Programmierung. Es beschreibt eine Situation, in der sich hinter einem Interface verschiedene Implementierungen verbergen. Wenn man versucht, seine Analogien im wirklichen Leben zu finden, wäre eine davon der Prozess der Autoführung.

Wenn eine Person einen Lastwagen fahren kann, kann sie auch einen Krankenwagen fahren oder einen Sportwagen. Eine Person kann ein Auto führen, unabhängig davon, welches Auto das ist, weil sie alle das gleiche Steuerinterface haben: Lenkrad, Pedale und Gangschalthebel. Das innere Design der Autos ist unterschiedlich, aber sie alle haben das gleiche Steuerinterface.

Wenn wir zur Programmierung zurückkehren, erlaubt Polymorphismus ein einheitliches Ansprechen von Objekten verschiedener Klassen (in der Regel mit einem gemeinsamen Vorfahren) – eine Sache, die schwer zu überschätzen ist. Ihr Wert steigt umso mehr, je größer das Programm wird.

OOP ist Prinzipien. Interne Gesetze. Jeder von ihnen schränkt uns in gewisser Weise ein, bietet im Gegenzug jedoch erhebliche Vorteile, wenn das Programm auf eine große Größe anwächst. Die vier Prinzipien von OOP sind wie die vier Beine eines Stuhls. Entfernen Sie mindestens eines, und das gesamte System wird instabil.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION