Klassen/Objekte realisierung..



  • Guten Tag,

    Ich bin immernoch an meinem kleinen Bomberman und habe schon n paarmal neu angefangen, wie das halt so ist am anfang ­čśë , und steh immernoch irgendwie an derselben Frage..

    Nun, ich habe hier eben mein Bomberman, hab es ganz ganz am Anfang aufgeteilt in 4 Klassen:

    • Game
    • Map
    • Graphics
    • Player

    Wobei jede Klasse ihre eigenen Funktionen hat:

    • Game

    • Run

    • Map

    • Load

    • getMap

    • Graphics

    • DrawMap

    • DrawPlayer

    • MovePlayer

    • Player

    • Update

    • Move

    • Draw

    Nun habe ich es hingebracht das das Spiel l├Ąuft, aber bis jetzt immer unsch├Ân, will heissen das ich es zwar geschafft habe indem ich:

    • Alles in Funktions├╝bergaben gepackt habe.
    • Das Game Objekt ├╝berall ├╝bergeben habe (also wirklich fast jede Funktion hatte das Game Objekt als ├╝bergabeparameter..).
    • Alles global deklarieren.

    Nun, ich habe sehr sehr viel gelesen in letzter Zeit ├╝ber C++, und irgendwie hab ich einfach im Kopf das:

    • Man sollte wenn m├Âglichst OHNE Funktions├╝bergabe auskommen.
    • Man sollte ALLES ├╝ber getFunktionen (Will heissen man sollte alles abfragen k├Ânnen von den anderen Klassen) kriegen.
    • OHNE globale Variablen auskommen!

    Nun versuche ich jetzt mein Projekt irgendwie mit denen Voraussetzungen, wobei ich mir ehrlich gesagt nichtmal sicher bin ob das ├╝berhaupt das richtige ist, aber wie auch immer man lernt ja am besten aus Fehlern ­čśë

    Jetzt mal zu meinen ersten Fragen, wieweit bin ich bis hier hin zum Text aufm richtigen Weg? Ist es wirklich richtig das man sowenig wie m├Âglich ├╝ber Funktions├╝bergaben regelt?

    So, und wenn das oben stimmt, wie kann ich von

    • Player

    • Draw

    die

    • Graphics

    • DrawPlayer

    Funktion aufrufen ohne auch nur eine Funktions├╝bergabe?
    Ich brauch ja vom Player aus das Objekt das schon vorher in der Graphics Klasse das Fenster aufgemacht hat, und wie soll ich das bitte rausfinden ohne ├╝bergabe? irgendwie steh ich auf nem Schlauch..
    Auch zum Abfragen was das Objekt sein k├Ânnte, brauch ich ja das Objekt das eben das Graphics objekt kreiert hat, und das w├Ąre ja wieder eine ├╝bergabe...

    Ich weis schon das ich es l├Âsen k├Ânnte ├╝ber andere Wege, aber ich wills jetzt einfach so erreichen wie es im sch├Ânsten Fall ist! ­čśë

    Vielen Dank f├╝rs Antworten!



  • Wieso zum Teufel sollte man ohne Funktions├╝bergaben auskommen? Vielleicht hast du falsch verstanden, dass man call-by-value bei Klassen vermeiden soll.



  • Najq ich hatte halt wirklichn ALLES per parameter ├╝bergeben, das sah ziemlich verwirrend aus.. Vieleicht hab ich da wirklich was falsches reinintepretiert, aber ist es nocht so das es sch├Âner is umso weniger paraneter man in der ├╝bergabe hat?



  • Flutscherino schrieb:

    Najq ich hatte halt wirklichn ALLES per parameter ├╝bergeben, das sah ziemlich verwirrend aus.. Vieleicht hab ich da wirklich was falsches reinintepretiert, aber ist es nocht so das es sch├Âner is umso weniger paraneter man in der ├╝bergabe hat?

    Ja, also man sollte so viele Parameter haben wie es Sinn macht. 7 sind wahrscheinlich schon zu viel, aber das h├Ąngt halt von der Situation ab.



  • Bei elementaren Datentypen ist aber auch Call-by-Value absolut ok, so habe ich das jedenfalls mal irgendwo gelesen.

    Wenn du das Gameobjekt jedes mal ├╝bergeben musst, macht es dann nicht mehr Sinn dass das Gameobjekt Instanzen von deinen Players, Maps etc erzeugt und h├Ąlt?



  • Grasshopper schrieb:

    Bei elementaren Datentypen ist aber auch Call-by-Value absolut ok, so habe ich das jedenfalls mal irgendwo gelesen.

    Nat├╝rlich, Skalare sind ja nur ein paar Bytes gro├č. Da bringt eine Referenz ├╝berhaupt keinen Sinn.



  • Grasshopper schrieb:

    Bei elementaren Datentypen ist aber auch Call-by-Value absolut ok, so habe ich das jedenfalls mal irgendwo gelesen.

    Richtig. Und nicht nur da. Ich ├╝bergebe alles was <=10Bytes gro├č ist als by-value



  • out schrieb:

    Grasshopper schrieb:

    Bei elementaren Datentypen ist aber auch Call-by-Value absolut ok, so habe ich das jedenfalls mal irgendwo gelesen.

    Richtig. Und nicht nur da. Ich ├╝bergebe alles was <=10Bytes gro├č ist als by-value

    Wie stehts mit long double ? ­čĄí



  • Sone schrieb:

    out schrieb:

    Grasshopper schrieb:

    Bei elementaren Datentypen ist aber auch Call-by-Value absolut ok, so habe ich das jedenfalls mal irgendwo gelesen.

    Richtig. Und nicht nur da. Ich ├╝bergebe alles was <=10Bytes gro├č ist als by-value

    Wie stehts mit long double ? ­čĄí

    Hat bei mir 10 Bytes. :p



  • Aha, aha, wiedermal was wichtiges gelernt.

    Vielen Dank!



  • Zur Info: Crosspost mit dem hier.



  • Da bist du Supermoderator!?!



  • ├ľhm.. ja?


Log in to reply