1. Einführung in die Prinzipien von OOP

Heute werden Sie eine neue und interessante Welt entdecken. Die Welt der objektorientierten Programmierung ( OOP ). Sie haben bereits etwas über Klassen und Objekte gelernt. Heute erfahren Sie mehr über sie, noch viel mehr.

OOP entstand als Reaktion auf die zunehmende Komplexität von Programmen. Als die Zahl der Variablen und Methoden in Programmen in die Zehntausende ging, wurde klar, dass etwas getan werden musste. Eine Lösung bestand darin, Daten und zugehörige Methoden in separaten Objekten zu kombinieren.

Jetzt mussten Programmierer getrennt beschreiben, wie Objekte extern interagieren und wie sie sich intern verhalten. Dies machte es viel einfacher, Programme zu verstehen und zu schreiben. Es blieb jedoch eine Frage offen: Welche Methoden sollten objektintern sein und welche anderen Objekten zur Verfügung stehen?

Es wurden viele Ansätze versucht. Und basierend auf den entdeckten Best Practices entstanden 4 Prinzipien von OOP . Sie sind Abstraktion, Kapselung, Vererbung und Polymorphismus . Zuvor waren es nur drei, doch Experten entschieden sich später, auch die Abstraktion hinzuzufügen.


2. Abstraktion

Im Internet wird immer noch über die Definition von Abstraktion in OOP gestritten . Das Problem ist nicht, dass jeder falsch liegt. Es ist so, dass jeder Recht hat . Je kleiner ein Programm ist, desto mehr Abstraktion ist an die Java-Sprache gebunden. Je größer ein Programm ist, desto stärker ist die Abstraktion mit der Modellierung/Vereinfachung realer Objekte verbunden.

Aber die besten Köpfe scheinen sich darin einig zu sein:

Unter Abstraktion versteht man die Verwendung nur der Eigenschaften eines Objekts, die es in einem Programm ausreichend genau darstellen. Die Grundidee besteht darin, das Objekt mit der kleinsten Menge an Feldern und Methoden darzustellen , die gleichzeitig die Lösung Ihrer Aufgaben mit ausreichender Genauigkeit ermöglichen .

In Java wird die Abstraktion durch abstrakte Klassen und Schnittstellen erreicht.

Abstraktion im wirklichen Leben

Ein gutes Beispiel für Abstraktion im wirklichen Leben sind Stellenbeschreibungen in einem Unternehmen oder einer Organisation. Der Titel einer Position ist eine Sache, die konkreten Verantwortlichkeiten, die einer Position zugeordnet werden, eine ganz andere.

Stellen Sie sich vor, Sie entwerfen die Organisationsstruktur Ihres zukünftigen Unternehmens. Sie können die Sekretariatsaufgaben aufteilen und auf mehrere verschiedene Positionen verteilen. Sie können die CEO-Position in mehrere separate Positionen aufteilen: CFO, CTO, CMO, HR Director. Oder Sie kombinieren beispielsweise die Positionen Büroleiter und Personalvermittler.

Sie denken sich Berufsbezeichnungen aus und teilen dann die Verantwortlichkeiten für diese Positionen auf. Abstraktion bedeutet, sich vom Objekt als Ganzes zu lösen und die wesentlichen Eigenschaften und Komponenten auszuwählen, die wir benötigen.

Einführung in die Prinzipien von OOP.  Abstraktion

Aus programmtechnischer Sicht ist Abstraktion die korrekte Aufteilung eines Programms in Objekte . Normalerweise gibt es Dutzende Möglichkeiten, ein großes Programm als interagierende Objekte darzustellen. Durch die Abstraktion können Sie die wesentlichen Merkmale auswählen und die unwesentlichen ignorieren.


3. Kapselung

Das Ziel der Kapselung besteht darin, Interaktionen durch die Vereinfachung von Objekten zu verbessern.

Und der beste Weg, etwas zu vereinfachen, besteht darin, alles Komplizierte vor neugierigen Blicken zu verbergen. Wenn Sie beispielsweise in das Cockpit eines Boeing-Jumbojets gesteckt werden, verstehen Sie nicht sofort, wie man ihn bedient:

Doch für die Passagiere im Flugzeug ist alles einfacher: Sie kaufen ein Ticket und steigen in das Flugzeug, das abhebt und dann landet. Sie können problemlos von einem Kontinent zum anderen fliegen, indem Sie nur „ein Ticket kaufen“ und „in ein Flugzeug steigen“. Die ganze Komplexität der Vorbereitung des Flugzeugs für Flug, Start, Landung und verschiedene Notfallsituationen bleibt Ihnen verborgen. Ganz zu schweigen von der Satellitennavigation, dem Autopiloten und den Flugsicherungszentren. Und das vereinfacht uns das Leben.

Aus programmtechnischer Sicht bedeutet Kapselung „das Verstecken der Implementierung“. Ich mag diese Definition. Unsere Klasse kann Hunderte von Methoden enthalten und sehr komplexe Verhaltensweisen in verschiedenen Situationen implementieren. Aber wir können alle seine Methoden vor neugierigen Blicken verbergen (indem wir sie mit dem privaten Modifikator markieren) und nur zwei oder drei Methoden für die Interaktion mit anderen Klassen belassen (indem wir sie mit dem öffentlichen Modifikator markieren). Dann sehen alle anderen Klassen unseres Programms nur die drei öffentlichen Methoden und rufen sie auf, andere jedoch nicht. Und die ganze Komplexität wird innerhalb der Klasse verborgen sein, so wie das Cockpit vor glücklichen Passagieren verborgen bleibt.


4. Vererbung

Das Erbe hat zwei Seiten . Vererbung in der Programmierung und Vererbung im wirklichen Leben. In der Programmierung ist Vererbung eine besondere Beziehung zwischen zwei Klassen . Aber die Vererbung im wirklichen Leben ist weitaus interessanter.

Wenn wir im wirklichen Leben etwas erschaffen müssen, haben wir zwei Möglichkeiten:

  1. Erstellen Sie das, was wir brauchen, von Grund auf und investieren Sie dabei viel Zeit und Mühe.
  2. Erstellen Sie das, was wir brauchen, basierend auf etwas, das bereits existiert.

Die optimale Strategie lautet: Nehmen Sie eine vorhandene gute Lösung, modifizieren Sie sie ein wenig, passen Sie sie an unsere Bedürfnisse an und nutzen Sie sie dann.

Wenn wir die Menschheitsgeschichte bis zu ihren Anfängen zurückverfolgen, entdecken wir, dass Milliarden von Jahren vergangen sind, seit das Leben auf dem Planeten begann. Aber wenn wir davon ausgehen, dass der Ausgangspunkt des Menschen unsere Primatenvorfahren sind (dh der Mensch „basiert auf“ Primatenvorfahren), dann sind nur ein paar Millionen Jahre vergangen. Der Aufbau von Grund auf dauert länger. Viel länger.

Beim Programmieren können Sie etwas Ähnliches tun, indem Sie eine Klasse basierend auf einer anderen erstellen. Die neue Klasse stammt von der vorhandenen Klasse ab (erbt sie). Dies ist sehr vorteilhaft, wenn eine vorhandene Klasse über 80–90 % der von uns benötigten Daten und Methoden verfügt. Wir deklarieren einfach die entsprechende Klasse als übergeordnete Klasse unserer neuen Klasse und alle Daten und Methoden der übergeordneten Klasse erscheinen automatisch in der neuen Klasse. Praktisch, oder?


5. Polymorphismus

Polymorphismus ist ein Programmierkonzept. Es beschreibt eine Situation, in der verschiedene Implementierungen hinter einer einzigen Schnittstelle verborgen sind. Wenn wir für ein Gegenüber das reale Leben betrachten, finden wir, dass das Führen eines Fahrzeugs gut dazu passt.

Wenn jemand einen LKW fahren kann, kann er auch hinter das Steuer eines Krankenwagens oder hinter das Steuer eines Sportwagens gesetzt werden. Eine Person kann ein Auto unabhängig von der Art des Autos bedienen, da alle Autos über die gleiche Bedienoberfläche verfügen: Lenkrad, Pedale und Gangschaltung. Die Innenausstattung der Autos ist unterschiedlich, sie verfügen jedoch alle über die gleiche Steuerschnittstelle.

Zurück zur Welt der Programmierung: Polymorphismus ermöglicht den Zugriff auf Objekte verschiedener Klassen (normalerweise mit einem gemeinsamen Vorfahren) auf die gleiche Weise, eine Eigenschaft, deren Wert kaum hoch genug eingeschätzt werden kann. Sein Wert steigt, wenn das Programm größer wird.

OOP bedeutet Prinzipien. Interne Gesetze. Jeder von ihnen schränkt uns in gewisser Weise ein, bietet aber im Gegenzug große Vorteile, wenn das Programm größer wird. Die vier Prinzipien von OOP sind wie vier Beine eines Tisches. Nimmt man einen weg, wird das ganze System instabil.