Abstraktion in der OOP: Komplexität verbergen

Sie fahren ein Auto, indem Sie Pedale drücken und ein Lenkrad drehen. Sie müssen weder die Kraftstoffeinspritzung noch die Kolbenbewegung verstehen. Das Auto verbirgt diese Details vor Ihnen. Sie nutzen lediglich eine einfache Schnittstelle.

Software funktioniert auf die gleiche Weise.

Denken Sie daran, eine E-Mail zu versenden. Ihr Code sieht wahrscheinlich so aus:

emailService.send(email);

Es sieht einfach aus. Hinter den Kulissen führt das System viele Aufgaben aus:

Sie müssen diese Schritte nicht sehen. Ihnen ist nur wichtig, dass die E-Mail versendet wird.

Wenn Sie jeden Schritt offenlegen, verursachen Sie Probleme. Stellen Sie sich vor, jeder Entwickler müsste manuell aufrufen:

Dies macht Ihren Code anfällig. Wenn Sie Ihren E-Mail-Anbieter ändern, müssen Sie jede einzelne Stelle in Ihrer Anwendung aktualisieren. Ihr Code wird eng an die Implementierung gekoppelt.

Abstraktion löst dieses Problem.

Abstraktion legt offen, was ein Objekt tut. Sie verbirgt, wie es das tut. Sie zeigen dem Benutzer nur das, was er benötigt.

Der Benutzer interagiert mit einer stabilen Schnittstelle. Er muss sich nicht um Ihre Authentifizierungslogik oder Ihre Wiederholungsstrategie kümmern. Diese Details bleiben verborgen.

Viele Menschen verwechseln Abstraktion mit Kapselung. Hier ist der Unterschied:

Kapselung fragt: Wer kann den Zustand dieses Objekts ändern? Sie schützt Daten.

Abstraktion fragt: Welche Details sollte der Benutzer sehen? Sie verbirgt Komplexität.

Sie arbeiten zusammen, um bessere Systeme zu bauen.

Als Nächstes werden wir über Vererbung sprechen. Wir werden uns ansehen, wie man gemeinsames Verhalten handhabt, ohne denselben Code zweimal schreiben zu müssen.

Quelle: https://dev.to/ashay_tiwari_3658168ad5db/abstraction-in-oop-hiding-complexity-without-hiding-capability-1111