gibt es polymorphe iterator-hierarchien?



  • Also, ich arbeite gerade an meiner Facharbeit über iteratoren. Ich hab darin das iterator pattern erklärt, pro/contra aufgelistet, und verschiedene implementationsformen angeschnitten.

    Das Problem ist nun, dass ich für meine Argumentation eine fiktive implementation benutze. Diese ist in der Grundform ähnlich den iteratoren in C++, benutzt aber eine Polymorphe Klassenhierarchie um den verschiedenen Eigenschaften der Container gerecht zu werden.

    also in etwa sowas:

    class ForwardIterator
    {
        public:
            virtual void next()=0;
            virtual void* get()=0;//man verzeihe mir das void* templates sind tabu
           ...
    };
    class BackwardIterator:public ForwardIterator
    {
        public:
            virtual void previous()=0;
    };
    
    class ConcreteListIterator:public BackwardIterator
    {
        public:
            virtual void next(){...}
            virtual void* get(){...}
            virtual void previous(){...}
            ...
    };
    

    nun bin ich im letzten teil meiner Facharbeit, und vergleiche darin die implementation in verschiedenen sprachen/bibliotheken. Jetzt bin ich aber in der miesere, dass ich im internet keine hierarchie dieser Form finde auf die ich mich beziehen kann. Das droht im moment, meine Facharbeit zu sprengen, da meine Argumentation mangels Praxis beispielen quasi hinfällig wird. Kennt vielleicht jemand ne bibliothek die eine ähnliche Hierarchie benutzt?



  • Vielleicht hättest du das in der richtigen Reihenfolge angehen sollen. Na haste wenigstens was gelernt.

    Bye, TGGC (Fakten)



  • @otze
    Btrachtest du nur externe Iteratoren? Oder auch interne (also z.B. Methoden die auf einem Block bzw. einer Closure arbeiten)?

    Hast du dir die Beispiele aus dem GoF-Buch angeschaut? ET++? ObjectWindows 2.0? Booch Components?



  • Der Sinn an Iteratoren ist doch, das sie möglichst leichtgewichtig ist. Wieso sollte man also die virtuelle Tabelle mitschleppen? Bei einfachen Hierarchien wie dieser geht das auch mit kleinen Typen als Template-Parametern (in Sprachen die sowas beherrschen), wobei die Konvertierbarkeit in einer Klassenhierarchie nach oben ausgenutzt wird.
    Siehe Boost.Iterator



  • Hast du inzwischen so ne Bibliothek gefunden?


Anmelden zum Antworten