Hallo Community,
Ich habe erst angefangen ein kleines klickspiel zu programmieren. Ich möchte es jetzt objektorientiert implementieren. Ich weiß jetzt in diesem Punkt nicht wo ich am besten die logik einbauen soll. Ich habe bereits folgende klasse :
GameActivity
Objekt1 und objekt2 erben von Entity
ObjektFactory
Ich möchte jetzt folgendes erreichen:
1. Nach einer bestimmten Zeit soll ein neues Objekt1 oder Objekt2 hinzugefügt werden
2. Jedes Objekt soll sich mit einem bestimmten Muster bewegen. Mache ich die logik in der klasse Objekt1/2 oder in die Factory?
Wie überlegt man sich am besten, wo die logik reingehört?
3. Macht es Sinn in die Klasse factory die logik welches Objekt reinzupacken?
Vielen Dank für eure Hilfe. Falls noch weitere Infos fehlen, kann ich diese gerne noch schreiben.
Zu 1: nur zum Verständnis Objekt1 und Objekt2 sind Klassen? Wenn ja, kannst du keine Klassen zur Laufzeit(bei dir Zeit) erstellen. Oder meinst du Instanzen(objekte) der Klassen Objekt1/2?
Zu 2: Wie du etwas machst hängt vom Umfang des Projektes ab. Ich würde ein Interface erstellen oder ne Abstrakte Klasse mit den Bewegungsabläufen.
Factory empfinde ich meist für kleine Projekte für überdimensioniert. Bin generell kein Freund für jede kleine Methode oder ähnliches eine neue Klasse zu schreiben.
Ich schon, wenn die Methode(n) eine Klasse rechtfertigt.
Factory ist sowas, wo soll es schließlich sonst rein?
An jeder Stelle direkt erstellen, statt die Factory nutzen? In irgendeiner anderen Klasse unterbringen?
Beides widerspricht GRASP und SOLID und sonstigen Prinzipen...
Danke für eure Antworten.
Mit Objekt1 und Objekt2 habe ich Klassen wie Quadrat und Kreis gemeint, von denen ich dann zur Laufzeit Objekte erzeuge.
Ok, dann mache ich die Logik für die Bewegung in die Klasse Quadrat/ Kreis und übergebe ihnen eine Referenz von der Zeichenfläche, richtig? Und rufe dann im Hauptprogramm nur noch die bewegeImKreis()-Methode von der Klasse Kreis auf richtig?
Unter Umständen ist es auch sinnvoll, die unterschiedlichen Bewegungsalgorithmen in jeweils eigenen Klassen zu realisieren, deren Instanzen man den Objekten dann nach Bedarf zuweist. Damit lässt sich das Bewegungsverhalten einzelner Objekte dann einfach zur Laufzeit wechseln und ein Kreis kann sich beispielsweise mal eine Zeit lang wie ein Quadrat bewegen. Stichwort: Strategie-Entwurfsmuster.