Hallo community,
Ich arbeite gerade an einem Programm, dass bei einem Browsergame alle Daten ausliest usw.
Nun gibt es allerdings auch Schiffe mit Atk, Hülle, usw...
Sollte ich nun für jedes Schiff eine eigene Klasse anlegen oder sollte ich lieber in einer Klasse Flotte alle Schiffe als int speichern und die Eigenschaften über Funktionen auslesen (Atk, Hülle, etc.).
Das Gleiche gilt ja auch für Forschung und Gebäude.
Ich tendiere eher zu letzterem.
ohne jetzt genaueres über das projekt zu wissen würde ich im allgemeinen zu folgendem raten:
wenns nur einen schiffst typ gibt dann einfach nur eine Klasse schiff und fertig. Und für jedes schiff das exestiert erstellst du eben ein objekt davon
wenn es mehrere schiffstypen gibt: Eine Abstakte Klasse Schiff und und für jeden schiffstyp eine eigene klasse die von der abstrakten erbt
Das war auch erst mein Gedanke, nur war ich mir nicht sicher, ob es wegen dem größeren Speicherbedarf ein bessere Lösung gibt,
da ja viele Schiffe einer Art, sonst immer ein neues Objekt wäre, mit gleichen Werten.
Bsp. 10.000 Auroras --> komplett gleiche Werte
Man könnte auch beides verknüpfen: In dem man die Anzahl in der Klasse als Eigenschaft definiert.
Ich würde eine Klasse Schiff machen, die eine Property (Enum) des Schiffstyps hat.
Über die Enum kannst Du Dir dann die spezifischen Werte des Schiffs ausgeben lassen.
Sowas wie
ShipProperties schiffsEigenschaften = ShipProperties.GetByType(myEnum.Attacker);
Sollte sich ein einzelnes Schiff jedoch "hochleveln" lassen, dann brauchst Du die Werte direkt am Objekt.
Edit: Möglich wäre natürlich auch Konstanten innerhalb der Schiffsklasse, wie PPK vorgeschlagen hatte.
Aufgrund der Auflistungsmöglichkeiten würde ich aber den Weg über Enums gehen (bzw. gehe es auch bei einigen ähnlichen Sachen).
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
die idee mit den enums gefällt mir! Das muss ich mir merken für zukünftige sachen 😃
Danke für die Antworten.
Ich nutze jetzt eine Kombination aus beidem, da ich die Schiffe selbst nicht als Objekt benötige.
Meine Schiffsklasse speichert alle wichtigen Werte, die das Schiff betreffen und die Anzahl der Schiffe.
Ein Schiff erzeuge ich über eine statische Funktionen, der ich ein Enum und die Anzahl der Schiffe übergebe.