Best Practice Was ist die elegantere Lösung bzgl. Klassenaufteilung in Robocode ?

C

ChrisAtNight

Gast
Hallo,

wir haben die Aufgabe für ein Robocode-Team zu erstellen und antreten zu lassen.
Nach jetzigen Kenntnisstand müssen ja dafür zwei Klassen von einer der Robot-Klassen (z.B. TeamRobot) abgeleitet und anschließend über eine *.team-Datei verknüft werden. Wenn ich das richtig interpretiere wird sich die Robocode-Umgebung aus jeder der Klassen dann wohl entsprechend ein Objekt ableiten.

Das Verhalten der Robots soll durch einen Zustandsautomaten gesteuert werden, welcher auch durch die zur Verfügung stehenden Events beeinflusst wird.

Soweit sogut ...

Nun ist es ja sicherlich alles andere als anzuraten, alles Benötigte in die abgeleiteten Klassen zu packen.
Es entstand der Gedanke alles, was das Fahren betrifft, in eine Eigene Klasse zu packen - alles rund um das Radar in eine eigene Klasse u.s.w. Zusätzlich soll es z.B. noch eine Datenspeicherklasse geben.

Erscheint mir, wenn ich das selber so lese, vielleicht nicht optimal - aber mir fällt auch nichts ein, wie man das schöner lösen könnte.

Was jetzt bei der Lösung interessiert:

- man könnte Methoden und Variablen der einzelnen Klassen hintereinander immer weiter vererben, bis das Ganze in eine Endklasse mündet (also quasi Mehrfachvererbung, aber eben seriell), aus der sich Robocode dann das Objekt erstellt.

oder

- man könnte einige Klassen für sich gestellt lassen und diesen für das Weiterarbeiten mit dem jeweiligen Objekt eben das Objekt übergeben. Also z.B. sowas:
Java:
Fahrwerk.fahreKreis(this);

Was ist nun eleganter ? Oder besser ganz ander lösen ? Wie ?

Vielen Dank
Chris
 

Kevin94

Top Contributor
Ob es wirklich sinvoll ist, dass ganze in extra Klassen auszulagern glaube ich auch nicht. Das generelle Konzept von Robocode ist, dass du eine Klasse erstellst, die irgendwie von Robot ableitet, dann dem System das mitteilst und das erstellt dann mit Reflections ein (oder mehrere) Objekte von dieser Klasse. Nur weil so extrem heraussticht: Von einer Klasse können andere Klassen ableiten oder Objekte erzeugt werden, aber keine Objekte abgeleitet werden.
Für ein Team reicht auch eine Klasse, man braucht nicht zwei verschiedene Robots sondern kann auch mehrer gleiche haben. Am einfachsten halte ich es allerdings, wenn dein Team aus einem Leader und mehreren untergeordneten Robots besteht, die ihre Daten an den Leader senden und von dem Befehle bekommen. Die gesamte Logik steckt damit in der Klasse des Leaders, inwiefern es dann Sinn macht Teile in andere Klassen auszulagern kommt auf die Menge an Code und der Strategie an.
In jedem Fall braucht ihr ein Protokoll mit dem die Robots eines Teams miteinander kommunizieren.
 
C

ChrisAtNight

Gast
Danke für die Antwort.

Habe es jetzt erstmal nach Methode 1, d.h.

"- man könnte Methoden und Variablen der einzelnen Klassen hintereinander immer weiter vererben, bis das Ganze in eine Endklasse mündet (also quasi Mehrfachvererbung, aber eben seriell), aus der sich Robocode dann das Objekt erstellt."

umgesetzt.

Dazu noch eine blöde Frage. Üblicherweise benutzt man zum Zugriff von einem Objekt der Klasse A auf eine Eigenschaft von Klasse B ja setter und getter.

Tut man das in der Praxis auch bei Klassen, die voneinander erben ? Oder setzt man eher die Variablen "protected" und greift direkt darauf zu ?

Danke
Chris
 

Volvagia

Top Contributor
Ich kenne Robocode nicht, aber ganz global würde ich Setter vorziehen.
Einerseits, da du bei direkten Zugriff keine Prüfung durchführen kannst und dir so leichter Logikfehler (die unter Umständen erst bemerkbar werden, wenn ganz bestimmte Dinge mit minimaler Wahrscheinlichkeit zutreffen) durch ungültige Werte passieren, andererseits wird unter Umständen mehr getan als bloß ein Wert gesetzt. Selbst wenn das jetzt noch nicht geplant ist kannst du bei Erweiterungen hinterher einfach die Methode verändern, wärend du das sonst bei jeden Variablenzugriff ändern müsstest.

Außerdem sind vererbbare Klassen sozusagen "Erweiterbar von jedem". (Sofern die Sichtbarkeit passt.)
Wenn jemand anders von deiner Klasse erbt müsste er die Struktur kennen um zu wissen, was bei einer Änderung gemacht werden soll. Falls du ein paar einfache Methoden als Schnittstelle für Änderungen bereit stellst ist das imho viel klarer definiert.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Rechnen mit Brüchen, ist meine Lösung soweit richtig? Java Basics - Anfänger-Themen 4
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
W Texteingabe - Bedeutung Fehlermeldung, Lösung? Java Basics - Anfänger-Themen 18
M Kennt jemand die richtige Lösung? Java Basics - Anfänger-Themen 7
H Codewars akzeptiert Lösung nicht Java Basics - Anfänger-Themen 29
A Selbe Aufgaben stellung, andere Lösung Java Basics - Anfänger-Themen 7
M Lösung Aufgabe - Java Programmiren lernen für Dummies Java Basics - Anfänger-Themen 11
ZH1896ZH Java-SemesterTest ohne Lösung :( Java Basics - Anfänger-Themen 47
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
M Hamstersimulator- lösung hilfe benotigt Java Basics - Anfänger-Themen 3
M Hamstersimulator- Lösung? Java Basics - Anfänger-Themen 3
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
W Tipps/Anmerkungen zu meiner Lösung?! Java Basics - Anfänger-Themen 2
H lösung aufgabe Java Basics - Anfänger-Themen 12
J Gleiche Methode in 2 verschiedenen Klassen - Lösung ? Java Basics - Anfänger-Themen 8
P java.lang.ClassCastException Bedeutung und Lösung Java Basics - Anfänger-Themen 3
M Methoden Fehler und finde die Lösung nicht wirklich Java Basics - Anfänger-Themen 6
J RPN Taschenrechner - keine Lösung!! Java Basics - Anfänger-Themen 84
I java.lang.ArrayIndexOutOfBoundsException at lösung.main Java Basics - Anfänger-Themen 3
J Best Practice DOS Fenster mit Befehlszeile (Lösung) Java Basics - Anfänger-Themen 2
S mehrfache if-Abfragen - beste Lösung Java Basics - Anfänger-Themen 1
J Einfache pub/sub Lösung mit ausführlicher Doku Java Basics - Anfänger-Themen 5
D Best Practice Testdaten. Was ist eine saubere Lösung? Java Basics - Anfänger-Themen 3
D Datentypen Datentyperstellung | Kompiler sagt Syntax Error doch ich find keine Lösung Java Basics - Anfänger-Themen 2
V Verstehe die Lösung einer Aufgabe von Grunkurs-Java nicht. Java Basics - Anfänger-Themen 11
P Verstehe Lösung einer Aufgabe von "Grundkurs-Java" nicht Java Basics - Anfänger-Themen 5
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
C Lösung für RegEx in Java gesucht Java Basics - Anfänger-Themen 2
S Eine rekursive Lösung Java Basics - Anfänger-Themen 4
G OOP [Eilig] Biete 10€ für Lösung von 2 Grundlagen-Aufgaben Java Basics - Anfänger-Themen 6
C For-Schleife wie kommt man auf die Lösung? Java Basics - Anfänger-Themen 2
M Erste Schritte boolean: ist Zahl Hexadezimal - Lösung verwirrend Java Basics - Anfänger-Themen 6
O Funktioniert dies? Und gibt es eine bessere Lösung? Java Basics - Anfänger-Themen 6
G Vererbung Lösung Standardproblem Java Basics - Anfänger-Themen 2
J Lösung eines Zahlenintervall wierd an der Falschen Stelle angezeigt. Java Basics - Anfänger-Themen 8
S Bessere Lösung? Java Basics - Anfänger-Themen 4
C Sortierverfahren - allgemeine Lösung? Java Basics - Anfänger-Themen 9
3 Bitte um Hilfe bei Lösung einer Aufgabe Java Basics - Anfänger-Themen 16
D speicherschonendere lösung? Java Basics - Anfänger-Themen 19
M Interval Teilmenge bestimmen - Fehler in meiner Lösung Java Basics - Anfänger-Themen 6
M Suche Korrektor für meine Lösung (FH: Java1 - Übungsklausur) Java Basics - Anfänger-Themen 4
F OOP Wieder mal Zugriffsprobleme... (Lösung am Ende) Java Basics - Anfänger-Themen 11
U JTable viele möglichkeiten, keine Lösung Java Basics - Anfänger-Themen 5
T Objektübergabe - saubere Lösung? Java Basics - Anfänger-Themen 3
S Bessere Lösung zu häufigem instanceof Java Basics - Anfänger-Themen 25
U Rekursive lösung von pascal dreieck Java Basics - Anfänger-Themen 11
S LineNumberReader - bessere Lösung möglich? - Log4J Java Basics - Anfänger-Themen 9
A brauche eine Lösung für Problem bei Moorhuhn-Version Java Basics - Anfänger-Themen 5
C Lösung einer Aufgabe mittels Iteration und Rekursion Java Basics - Anfänger-Themen 12
F Eingabe darf nur 1 oder 0 sein. Meine Lösung macht Probleme. Java Basics - Anfänger-Themen 8
C Frage zu try - catch (saubere Lösung?) Java Basics - Anfänger-Themen 3
G Bessere Lösung für SQL STMNT ? (Schneller?) Java Basics - Anfänger-Themen 4
D Benutzung von globalen Variablen einzigste Lösung? Java Basics - Anfänger-Themen 6
F Servlets, Formulare und ich weiß keine Lösung Java Basics - Anfänger-Themen 4
A Struktur -> Beste Lösung? Java Basics - Anfänger-Themen 3
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
J Worte auf Gültigkeit bzgl. Alphabet testen Java Basics - Anfänger-Themen 1
W Bestätigung bzgl Shadowing/this Java Basics - Anfänger-Themen 7
D Frage bzgl. Interfaces Java Basics - Anfänger-Themen 10
G Datentypen Tipps, Ratschläge erwünscht bzgl. Datentyp bestimmen über Wertebereich Java Basics - Anfänger-Themen 5
M Frage bzgl. Testbarkeit von Methoden in Relation zu Ihren Abhängigkeiten Java Basics - Anfänger-Themen 11
J Klassen Hilfe bei unbekannten Zeilen bzgl. Klassen / Komponenten Java Basics - Anfänger-Themen 12
K Frage bzgl. Multithreading Java Basics - Anfänger-Themen 5
M Frage bzgl. Oracle Java Zertifizierung Java Basics - Anfänger-Themen 4
1 Frage bzgl. Polymorphismus Java Basics - Anfänger-Themen 6
E Threads Verständnisfrage bzgl. Threads und Sleep Java Basics - Anfänger-Themen 2
X Frage zur Vererbung (bzgl Supercontruktor) Java Basics - Anfänger-Themen 7
F Verständisproblem bzgl. nicht Vorhandensein von Call-by-reference Java Basics - Anfänger-Themen 2
P Fehlersuche bzgl. Array-Keys Java Basics - Anfänger-Themen 6
L Frage bzgl. Threads beim Bilder laden Java Basics - Anfänger-Themen 3
0x7F800000 Elemente einer Äquivalenzklasse bzgl einer Ordnung vereinen? Java Basics - Anfänger-Themen 18
P Verständnis bzgl. MVC Java Basics - Anfänger-Themen 11
P Frage bzgl. Class Sharing Java Basics - Anfänger-Themen 2
G Dringende Frage bzgl. meines Codes Java Basics - Anfänger-Themen 30
C Frage bzgl. main Java Basics - Anfänger-Themen 2
C Frage bzgl. action von Button Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben