Katalogisierung/Management von Objekten (Instanzen)



  • Hallo Leute,

    ich bin C++-Neuling (Hintergrund bissel C/Python/Matlab - keine OOP!). Mein Interesse gilt vor allem OOP-Techniken.
    Angefangen habe ich erstmal mit einem der gaengigen Beispiele - eine Klasse mit (x,y)-Lokationen (inklusive Punkt verschieben, neu setzen etc...).

    Mein naechster Schritt waere eigentlich gewesen, die verschiedenen Lokationen zu katalogisieren, d.h. im einfachsten Fall nach ID's und/oder Objektnamen suchen zu koennen usw.

    Aber wie katalogisiert/managed man eigentlich seine Objekte??? Da ich nichts gefunden habe, wie man beispielsweise ueber alle Objekte einer Klasse iterieren kann, war mein naechster Gedanke, eine Katalog-Klasse zu entwickeln, welche z.B. alle Objektnamen und z.B. eine Objekt-ID in jeweils einem Vektor aus Strings und Integers hinterlegt.

    Leider teilt niemand (Google) das Problem mit mir 🙄 oder ich weiss nicht richtig, wonach ich suchen muss (meine 2 C++-Buecher z.B. verlieren darueber kein Wort). Ich hab darum den Verdacht, dass ich hier ein gravierendes Verstaendnisproblem habe? Bevor ich jetzt also sinnlos rumfummle, meine Frage an etwas erfahrenere C++/OO-Experten. Welche Techniken werden verwendet, um Objekte zu katalogisieren/managen? Ein kleines Beispiel oder ein paar Links waeren sicher hilfreich.

    Sorry fuers lange Post und Danke fuer Eure Hinweise,
    Torsten



  • Also irgendwie hört es sich so an also würdest du nach Reflexion suchen. Das wirst du aber bei reinem C++ vergeblich suchen.
    Es gibt zwar diverse Möglichkeiten Kompilierzeit Reflexion zu erstellen aber keine richtige.

    Sollte das nicht sein nach dem du suchst glaube ich das du irgendwo 'falsch abgebogen bist' 🙂

    Ich kann dir da jetzt auch keine wirklichen Zeiger geben außer vielleicht das Buch von Marc++us Objektorientierte Programmierung für Dummies | ISBN: 3826629841



  • Yep!!! Danke evilissimo! Das war offensichtlich der richtige Begriff!!!

    Hmmm... Irgendwie ist das doch aber ein genereller Bedarf, den Ueberblick ueber seine Objekte zu behalten...? Ich verwende z.B. ein C++basiertes Programm, das ohne ein derartiges Feature seinen Sinn verloere... 🙄 . Es verwaltet verschiedene topologische Features (Punkte, Polylines, triangulierte Flaechen etc etc). Wenn das mit diesen Reflektionen nicht so richtig portabel ist werden sie es wohl ueber irgendwelche Katalog-Klassen machen _muessen_, oder?

    evilissimo schrieb:

    Also irgendwie hört es sich so an also würdest du nach Reflexion suchen. Das wirst du aber bei reinem C++ vergeblich suchen.
    Es gibt zwar diverse Möglichkeiten Kompilierzeit Reflexion zu erstellen aber keine richtige.



  • Dorstne schrieb:

    Yep!!! Danke evilissimo! Das war offensichtlich der richtige Begriff!!!

    Hmmm... Irgendwie ist das doch aber ein genereller Bedarf, den Ueberblick ueber seine Objekte zu behalten...? Ich verwende z.B. ein C++basiertes Programm, das ohne ein derartiges Feature seinen Sinn verloere... 🙄 . Es verwaltet verschiedene topologische Features (Punkte, Polylines, triangulierte Flaechen etc etc). Wenn das mit diesen Reflektionen nicht so richtig portabel ist werden sie es wohl ueber irgendwelche Katalog-Klassen machen _muessen_, oder?

    evilissimo schrieb:

    Also irgendwie hört es sich so an also würdest du nach Reflexion suchen. Das wirst du aber bei reinem C++ vergeblich suchen.
    Es gibt zwar diverse Möglichkeiten Kompilierzeit Reflexion zu erstellen aber keine richtige.

    'Überblick' ist so eine Sache. Du brauchst dafür doch keine Reflexion.
    Ich denke du solltest dich mal mit Polymorphie und Vererbung beschäftigen.

    Du kannst ja z.B: eine Basisklasse GeoObjekt haben das die Basisklasse aller deiner 'Objekte' ist. Und du kannst dann alle in einer Liste als Zeiger abspeichern (am besten mit hilfe von einem SmartPointer wegen dem Speichermanagement)

    Aber ich denke das geht schon eher in die Richtung was du da machen willst.
    Der Anfang beim OOP ist nicht ganz so einfach. Selbst nach fast 8 Jahren Programmieren von denen sogar fast 5 beruflich sind bin ich immer noch nicht so gut in guten OO-Design 😉

    BR
    Vinzenz



  • evilissimo schrieb:

    Dorstne schrieb:

    Irgendwie ist das doch aber ein genereller Bedarf, den Ueberblick ueber seine Objekte zu behalten...? Ich verwende z.B. ein C++basiertes Programm, das ohne ein derartiges Feature seinen Sinn verloere... 🙄 . Es verwaltet verschiedene topologische Features (Punkte, Polylines, triangulierte Flaechen etc etc).?

    ....
    Ich denke du solltest dich mal mit Polymorphie und Vererbung beschäftigen.

    Du kannst ja z.B: eine Basisklasse GeoObjekt haben das die Basisklasse aller deiner 'Objekte' ist. Und du kannst dann alle in einer Liste als Zeiger abspeichern (am besten mit hilfe von einem SmartPointer wegen dem Speichermanagement)

    ....

    BR
    Vinzenz

    Hallo Vinzenz, ich hab gleich nochmal in meinen beiden Buechern nach Polymorphie geschaut. Dirk Louis schneidet in "Objektorientiert in C++" unter diesem Thema tatsaechlich auch die Verwaltung geometrischer Formen an. Scheint die richtige Richtung zu sein. Wirklich vielen Dank fuer diesen Wegweiser! Ich versuch das also erstmal nachzuvollziehen und auf mein Lokationsbeispiel anzuwenden.

    Viele Gruesse, Torsten


Log in to reply