Wenn Sie etwas Anfängerprogrammierung gemacht haben, oder sogar begonnen haben, verschiedene Sprachen zu betrachten, sind Sie wahrscheinlich auf den Begriff "objektorientierte Programmierung" (oder "OOP") gestoßen.
Es gibt viele technische Erklärungen darüber, was es ist, aber heute werden wir uns mit der Definition von objektorientierter Programmierung beschäftigen.
Bevor wir beginnen: Verfahrenssprachen
Um zu verstehen, was eine objektorientierte Programmiersprache ist, müssen Sie verstehen, was sie ersetzt hat. Frühe Programmiersprachen wurden prozedural genannt, weil der Programmierer eine sehr spezifische Menge von Prozeduren definieren würde, die der Computer durchführen würde.
In den frühesten Tagen wurden Verfahren auf Lochkarten geschrieben. Diese Schritte nahmen Daten auf, führten eine Folge von Aktionen mit diesen Daten durch und gaben dann neue Daten aus.
Verfahrenssprachen funktionierten eine Zeit lang (und einige werden noch verwendet). Wenn Sie jedoch etwas über eine einfache Abfolge von Schritten hinaus programmieren möchten, kann es schwierig werden, prozedurale Sprachen zu verwalten. Hier kommt die objektorientierte Programmierung ins Spiel.
Das Objekt der objektorientierten Programmierung
Was ist also objektorientierte Programmierung?
Die erste objektorientierte Sprache (allgemein Simula genannt) führte die Idee von Objekten ein . Objekte sind Sammlungen von Informationen, die als eine einzelne Entität behandelt werden.
Wir werden mit einem Beispiel tiefer in das eintauchen, was das eigentlich bedeutet, aber zuerst müssen wir über Klassen sprechen. Klassen sind wie Vorobjekte. Sie enthalten eine Liste von Attributen, die bei ihrer Definition zu einem Objekt werden.
Nehmen wir als Beispiel das Programmieren eines Schachspiels. Wir könnten eine Klasse namens Piece haben. Innerhalb von Stück haben wir eine Liste von Attributen:
- Farbe
- Höhe
- Gestalten
- Bewegung erlaubt
Ein Objekt definiert einfach eine bestimmte Instanz eines Objekts, das zu dieser Klasse gehört.
Also könnten wir ein Objekt namens WhiteQueen haben. Dieses Objekt hätte Definitionen für alle vier Attribute (weiß, groß, zylindrisch mit Zinnen, beliebig viele Leerzeichen in jeder Richtung). Es könnte auch Methoden oder Funktionen haben.
Was macht das so viel besser als den prozeduralen Ansatz?
Kurz gesagt, objektorientierte Programmiersprachen (wie Java) erleichtern das Organisieren von Daten und Code auf eine Weise, die für größere Projekte vielseitiger ist.
Um es etwas genauer zu besprechen, werden wir über die vier Grundlagen der objektorientierten Programmierung sprechen.
Objektorientierte Programmierung: Abstraktion
Nur weil Sie etwas verwenden möchten, müssen Sie nicht wissen, wie es funktioniert. Eine Espressomaschine zum Beispiel ist komplex. Aber Sie müssen nicht wissen, wie es funktioniert. Sie müssen nur wissen, dass Sie Espresso bekommen, wenn Sie "On" drücken.
Das Gleiche gilt für Objekte in der objektorientierten Programmierung. In unserem Schachbeispiel haben wir vielleicht eine move () -Methode. Diese Methode könnte eine Menge Daten und andere Methoden erfordern. Es könnte die Anfangspositions- und Endpositionsvariablen benötigen. Es könnte eine andere Methode verwenden, um zu bestimmen, ob es ein Stück erfasst hat.
Aber das musst du nicht wissen. Alles, was Sie wissen müssen, ist, dass es sich bewegt, wenn Sie dem Stück sagen, dass es sich bewegen soll. Das ist Abstraktion.
Objektorientierte Programmierung: Kapselung
Die Kapselung ist eine der Möglichkeiten, mit der die objektorientierte Programmierung Abstraktion erzeugt. Jedes Objekt ist eine Sammlung von Daten, die als eine einzelne Entität behandelt werden. Und innerhalb dieser Objekte sind Daten - sowohl Variablen als auch Methoden.
Die Variablen innerhalb eines Objekts werden im Allgemeinen privat gehalten, was bedeutet, dass andere Objekte und Methoden nicht auf sie zugreifen können. Objekte können nur durch ihre Methoden beeinflusst werden.
Ein Bishop-Objekt kann mehrere Informationen enthalten. Zum Beispiel könnte es eine Variable namens "position" haben. Diese Variable ist notwendig, um die move () -Methode zu verwenden. Und natürlich hat es eine Farbe.
Indem die Position variable private und die Methode move () public gemacht wird, schützt ein Programmierer die Bewegungsvariable davor, von irgendetwas anderem beeinflusst zu werden. Und wenn die Farbe eine private Variable ist, gibt es keine Möglichkeit für ein anderes Objekt, sie zu ändern, es sei denn, es gibt eine Methode, die die Änderung zulässt. (Was Sie wahrscheinlich nicht haben würden, da die Farbe des Stückes konstant bleiben sollte.)
Diese Variablen und Methoden werden innerhalb des Bishop-Objekts beibehalten. Da sie gekapselt sind, könnte ein Programmierer die Struktur oder den Inhalt des Objekts ändern, ohne sich um die öffentliche Schnittstelle kümmern zu müssen.
Objektorientierte Programmierung: Vererbung
Objektorientierte Programmiersprachen haben neben Klassen auch Unterklassen. Diese enthalten alle Attribute der übergeordneten Klasse, sie können jedoch auch andere Attribute enthalten.
In unserem Schachspiel benötigen die Bauernstücke eine Methode, die sie in andere Teile verwandeln kann, wenn sie es bis zum Ende des Bretts schaffen. Wir nennen es die transformPiece () -Methode.
Nicht jedes Stück benötigt die Methode transformPiece (). Also würden wir es nicht in die Klasse Piece geben wollen. Stattdessen können wir eine Unterklasse namens Pfand erstellen. Da es sich um eine Unterklasse handelt, erbt es alle Attribute von Piece. Eine Instanz der Unterklasse Pfand enthält also eine Farbe, Höhe, Form und Bewegung erlaubt.
Aber es enthält auch die transformPiece () -Methode. Jetzt müssen wir uns nie mehr darum sorgen, diese Funktion versehentlich auf einem Turm zu verwenden. Hier ist eine technische Erklärung:
Das Erstellen von Unterklassen spart außerdem viel Zeit. Anstatt neue Klassen für alles zu erstellen, können Programmierer eine Basisklasse erstellen und diese bei Bedarf auf neue Unterklassen erweitern. (Es sollte jedoch darauf hingewiesen werden, dass eine übermäßige Abhängigkeit von der Vererbung schlecht ist. 10 Grundlegende Programmiergrundsätze Jeder Programmierer muss folgen 10 Grundlegende Programmiergrundsätze Jeder Programmierer muss Folgen Sie immer Code schreiben, der von jedem gepflegt werden kann, der am Ende an Ihrer Software arbeitet Ende, hier sind einige Programmierprinzipien, die Ihnen helfen, Ihre Handlung zu bereinigen. Lesen Sie mehr.)
Objektorientierte Programmierung: Polymorphismus
Polymorphismus ist ein Ergebnis der Vererbung. Um den Polymorphismus vollständig zu verstehen, bedarf es einiger Programmierkenntnisse, daher werden wir hier nur auf die Grundlagen eingehen. Kurz gesagt, erlaubt es der Polymorphismus den Programmierern, Methoden mit demselben Namen, aber mit verschiedenen Objekten zu verwenden .
Zum Beispiel könnte unsere Stückklasse eine move () -Methode haben, die ein Stück um ein Leerzeichen in eine beliebige Richtung verschiebt. Das funktioniert für das Königsstück, aber für nichts anderes. Um dieses Problem zu beheben, können wir eine neue move () -Methode in der Rook-Unterklasse definieren, die Bewegung als eine unbegrenzte Anzahl von Leerzeichen vorwärts, rückwärts, links oder rechts definiert.
Wenn nun ein Programmierer die Methode move () aufruft und ein Stück als Argument verwendet, weiß das Programm genau, wie sich das Stück bewegen soll. Dies spart eine Menge Zeit über den Versuch, herauszufinden, welche von vielen verschiedenen Methoden Sie verwenden sollten.
Objektorientierte Programmierung in Kürze
Wenn dein Kopf ein wenig nach den letzten vier Definitionen dreht, mach dir keine Sorgen. Hier sind die wichtigsten Dinge, die Sie sich merken müssen:
- Die objektorientierte Programmierung sammelt Informationen in einzelne Objekte, die als Objekte bezeichnet werden.
- Jedes Objekt ist eine einzelne Instanz einer Klasse.
- Abstraktion verbirgt das Innenleben eines Objekts, wenn es nicht notwendig ist, sie zu sehen.
- Die Kapselung speichert verwandte Variablen und Methoden in Objekten und schützt sie.
- Vererbung ermöglicht es, dass Unterklassen Attribute aus übergeordneten Klassen verwenden.
- Polymorphismus ermöglicht Objekten und Methoden, mit mehreren verschiedenen Situationen mit einer einzigen Schnittstelle umzugehen.
Wenn Sie sich an diese Punkte erinnern können, haben Sie einen guten Überblick darüber, was objektorientierte Programmierung ist. Die vier Grundlagen der objektorientierten Programmierung können, wie ich bereits erwähnt habe, etwas schwierig zu handhaben sein. Aber sobald Sie anfangen zu programmieren, werden sie klarer werden.
Denken Sie daran, dass wir in diesem Artikel nur allgemeine Aspekte besprochen haben. Verschiedene objektorientierte Sprachen werden ihre eigenen Eigenarten und Möglichkeiten haben, Dinge zum Laufen zu bringen. Sobald Sie die richtige Sprache für Sie gewählt haben Suchen Sie nach den besten Programmiersprachen? Fang hier an! Auf der Suche nach den besten Programmiersprachen? Fang hier an! Ganz gleich, ob Sie Programmiersprachen noch nicht beherrschen oder eine neue Programmiersprache kennenlernen möchten, eine der wichtigsten Fragen ist: "Welche Programmiersprache passt zu mir?" Lesen Sie mehr und Sie werden lernen, wie OOP-Prinzipien in die Praxis umgesetzt werden.