Was genau ist ein "Wrapper"?



  • Ich hab zwar eine ungefähre Vorstellung, aber irgendwie bleibt es mir noch ein bißchen schwammig... Deshalb folgende Fragen:

    Was genau ist der Nutzen einer Wrapper-Klasse, wofür braucht man es, wofür nicht?

    Kann man das Ziel auch anders erreichen? Vielleicht mache ich es ja schon die ganze Zeit "anders", ohne es zu merken 😞

    Gebt mir mal ein bißchen Brainstorming zu dem Thema *liebguck*



  • Ein Wrapper kapselt die Funktionalität einer anderen Komponente, um sie z.B. einfacher benutzbar zu machen. Daraus ergibt sich logischerweise, daß man auch auf anderen Wegen zum Ziel kommt...



  • Stell Dir vor, Du hast ein Interface: I

    Einige Klassen von Dir implementieren dieses Interface, erben also davon und implementieren entsprechende Funktionalität. Jetzt hast Du auch noch eine Bibliothek, da ist eine Klasse drin, die im Prinzip alles kann, was Du brauchst, allerdings implementiert sie nicht Dein Interface, die Methoden sind also etwas verschieden: unterschiedlicher Name, vielleicht muß man auch mehrere Methoden aufrufen um die Aufgabe zu erledigen, die Dein Interface mit einer Methode anbietet.
    Jetzt erstellst Du eine neue Klasse, die erbt von Interface und enthält (oder erbt davon) ein Objekt der Klasse aus der Bibliothek. Und alle Funktionen des Interfaces implementierst Du jetzt so, daß sie einfach auf die entsprechenden Methoden der Klasse aus der Bibliothek weitergeleitet werden.

    Und schon kannst Du die Klasse in Deiner Software verwenden, obwohl sie normalerweise das nötige Interface nicht hätte. Und genau diese beschriebene Klasse ist der Wrapper.

    MfG Jester



  • Objekte unterschiedlichen Typs in einer "einheitlicher Box" verpacken.
    "Einheitliche Box" = Wrapper 😉



  • Danke erstmal. So ähnlich hatte ich auch gedacht.

    Also kann man auch sagen, daß "Wrapper" eine rein funktionale Bezeichnung ist, es gibt keine formellen Anforderungen an diese Klasse?

    Wenn in der Klasse dann noch zusätzliche Funktionalität ist, trifft das sozusagen nicht mehr die "reine Lehre", oder? Erstellt Ihr im Zweifelsfall mehrere Klassen, von denen eben eine das pure "Wrapping" beinhaltet und die andere(n) weitere Inhalte, die aber vom Kontext in die Wrapper-Klasse passen würden?

    Hab gerade meine theoretische Phase 😉



  • Das kommt drauf an ob du klassen aus funktionalen aspekten bildest oder den/die oop gedanken/absichten verfolgst...

    🙄



  • 1ntrud0r schrieb:

    Das kommt drauf an ob du klassen aus funktionalen aspekten bildest oder den/die oop gedanken/absichten verfolgst...

    Hm - muß sich das ausschließen??



  • Ein gutes Bsp. da ich es so mache. Ich habe eine Wrapperklasse welche MySQL implementiert. Dann habe ich eine für ODBC. Ich brauche meine Programme nicht zu ändern um von MySQL zu ODBC zu wechseln da ich die Wrapperklassen habe, welche immer die gleichen Methoden verwenden.


Anmelden zum Antworten