OOP-Frage



  • Verflixt - Marcus war schneller 😢



  • @Marcus:

    Bei DirectX ist es tatsächlich so, daß Du zum erstellen der Textur das Device brauchst...



  • Ja naja, Singletons kann man sicher verwenden, aber muss ja net sein.
    Ich persönlich habe nichts gegen die Referenzsache!
    Was stört dich daran?
    Das ist nicht unsaubere OOP, es ist halt so, dass dann alle Klassen eine Verbindung zu der Klasse haben, diese in der Programmierung als Referenz gekennzeichnet. 🙂

    MfG MAV



  • Erstmal vielen Dank für die vielen Beiträge!

    Marc++us schrieb:

    Nein, ich glaube er hat das Problem, daß er ein Objekt von Videoadapter hat, und er muß nun jeder Klasse eine Referenz auf dieses Objekt mitgeben (im Ktor). Oder er legt das Objekt global an, was er wohl vermeiden will.

    Ja genau das meine ich!

    Marc++us schrieb:

    Es gibt dafür zwei Lösungen, die mir - bei dieser Informationslage - einfallen:

    a) realisiere Videoadapter als Singleton

    Was ist ein Singleton. Ich kenn das vielleicht, aber den Begriff nicht.

    Marc++us schrieb:

    b) überlege, ob wirklich jedes andere Objekt Zugriff auf Videoadapter benötigt - benötigt eine Texture tatsächlich Zugriff auf den Videoadapter? Ist das auch richtig?

    Ja, da ich DirectX benutze und Texturen etc. auf D3DDevice zugreifen müssen, wobei D3DDevice ein Element von Videoadapter ist.

    Mis2com schrieb:

    Ich persönlich habe nichts gegen die Referenzsache!
    Was stört dich daran?

    Dabei stört mich, dass ich jedesmal, wenn ich ein Textureobjekt etc. anlege, den Videoadapter im Konstruktor übergeben muss. Ich hatte gehofft, dass es eine schönere/einfachere Lösung gibt, die trotzdem sauberen OOP-Stil verwendet.



  • Ist so recht sauber.
    Saubererer wäre es aber einen Texturmanager anzulegen, der die Texturen intern verwaltet.
    Dann musst du nur einmal den Texturmanager erstellen und ihm die Referenz geben und Texturen kannst du dann mit einer Funktion im Texturmanager laden oder auch setzen bzw. abholen. 🙂

    MfG MAV



  • Mis2com schrieb:

    Ist so recht sauber.
    Saubererer wäre es aber einen Texturmanager anzulegen, der die Texturen intern verwaltet.
    Dann musst du nur einmal den Texturmanager erstellen und ihm die Referenz geben und Texturen kannst du dann mit einer Funktion im Texturmanager laden oder auch setzen bzw. abholen. 🙂

    MfG MAV

    Das stimmt! Diese Lösung hatte ich auch schon mal, nur wollte ich diesmal alles in eigene Klassen packen, da die Texturen z.B. Nachfahren von 3 anderen Klassen sind und ich zusätzlich mehrere Textureklassen habe (z.B. volumen Texture, animierte Texture etc.).





  • OK, vielen Dank!

    Dann werde ich die Singleton-variante verwenden.



  • Veilleicht könnte auch eine Object-Factory helfen.



  • Helium schrieb:

    Veilleicht könnte auch eine Object-Factory helfen.

    Kannst du mir sagen, was ne Object-Factory ist. Bei google hab ich nichts gescheites gefunden!?


Anmelden zum Antworten