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?


Anmelden zum Antworten