OOP ist nicht wegen sich selbst wichtig, sondern wegen dem, was es mit sich bringt. Etwas, das sich mit der Fähigkeit befasst, Dinge zu abstrahieren und zu isolieren, Dinge zu gruppieren und nur die Teile freizulegen, die benötigt werden, um miteinander zu interagieren.
Dies ist eine gebräuchliche Technik namens "Modularisierung", die es ermöglicht, komplexe Systeme als Aggregation von einfacheren zu erstellen, ohne auf hoher Ebene auf jedes einzelne Detail Rücksicht zu nehmen, und bei der Komponenten austauschbar sein müssen, auch wenn sie nicht genau die richtigen sind gleich.
Es wurde versucht, diese "Konstruktionskonzepte" in die Softwareentwicklung einzubeziehen, seitdem das Softwareprodukt selbst größer als die "Einzelentwicklerfähigkeit" geworden war. Daher war eine Möglichkeit erforderlich, Entwickler dazu zu bringen, an unabhängigen Teilen zu arbeiten und diese Teile zuzulassen zusammen interagieren.
Das heißt, diese Prinzipien sind nicht notwendigerweise nur in OOP zu finden (wenn die Berechnungstheorie gültig ist, gibt es unendlich viele mögliche Methoden, um zu diesen Ergebnissen zu kommen).
OOP ist einfach ein erfolgreicher Versuch , die Dinge zusammen zu stellen, zu diesen allgemeinen Bedingungen geben (wie Module, Verkapselung, Substitution) präzisere Definitionen und aufwendige Konzeptualisierung auf diesen Definitionen (Muster) , die können in Programmiersprachen passen.
Denken Sie an OOP zunächst nicht als " Sprachfeature ", sondern als " gemeinsames Lexikon ", das Softwareentwickler dazu bringt, sich dem Software-Design anzunähern.
Die Tatsache, dass eine gegebene Sprache Grundelemente hat oder nicht, die dieses Lexikon direkt erzwingen und beispielsweise sicherstellen, dass eine "Kapsel" nicht versehentlich von dem geöffnet wird, der dies nicht tun soll, ist ein sekundärer Aspekt des OOP-Entwurfs. Deshalb werden auch große C-Projekte oft als OOP "verwaltet", auch wenn die Sprache selbst keine direkte Unterstützung dafür bietet.
Der Vorteil von allem, was nicht erkennbar ist, bis eine Projektgröße in der Fähigkeit eines einzelnen Entwicklers verbleibt, alles zu verstehen und nachzuverfolgen (in solchen Situationen kann dies sogar als "Overhead" angesehen werden) oder in einer kleinen Gruppe, in der etwas entwickelt wird eine kurze Zeit. Und das ist der Hauptgrund, warum Junioren, die OOP anhand eines "Sprachfeatures" studiert haben, es oft falsch interpretieren und schlecht gestalteten Code produzieren.
Wie OOP in Sprachen passt, hängt davon ab, wie Sprachdesigner das OOP-Prinzip in ihrem eigenen Konstrukt interpretieren.
So wird "Kapselung" in C ++ zu "privaten Mitgliedern" (und eine "Kapsel" wird zu einer Klasse), "Substitution" wird zum Überschreiben virtueller Funktionen oder zur Parametrisierung / Spezialisierung von Vorlagen usw., während in D eine Kapsel ein "Modul" ist (und die Substitution erfolgt) durch Klassen usw.), wodurch ein bestimmtes Paradigma oder Muster direkt in einer bestimmten Sprache verfügbar gemacht wird und nicht in einer anderen und so weiter.
Was Personalvermittler bei der Beantwortung von OOP-Fragen suchen, ist nur die Überprüfung Ihrer Fähigkeit, Software-Design für zukünftige große Projekte und Entwicklungen zu abstrahieren und zu verstehen. OOP, für sie ist es nur ein "Wörterbuch", von dem sie angenommen haben, dass Sie und sie es wissen, damit Sie über andere allgemeinere Dinge sprechen oder sich in einer bestimmten Implementierung konkretisieren können.