Refacotr code for AB8
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
# Aufgabenblatt 2
|
||||
|
||||
## Allgemeine Anmerkungen
|
||||
Ihre Lösung für dieses Aufgabenblatt ist bis Montag, 28.3. 11h durch `git commit` und `push`
|
||||
Ihre Lösung für dieses Aufgabenblatt ist bis Montag, 28.3. 11h durch `git commit` und `push`
|
||||
abzugeben. Mit der Angabe werden folgende Dateien mitgeliefert: `BodyQueue.java`, `BodyForceMap.java` und `Aufgabe2Test.java`. Diese Klassen dürfen nur an den Stellen verändert werden, die mit `TODO` markiert sind. Zusätzliche Klassen, Interfaces, Methoden und Variablen dürfen aber eingefügt werden. Wenn Sie zusätzlich zu den gefragten Klassen, weitere Klassen definieren, achten Sie darauf, dass die Klassennamen mit `My` beginnen, um Konflikte mit späteren Aufgabenblättern zu vermeiden.
|
||||
|
||||
## Ziel
|
||||
@ -10,10 +10,10 @@ Ziel der Aufgabe ist die Implementierung einer linearen und einer assoziativen D
|
||||
## Beschreibung der gegebenen Dateien
|
||||
- `BodyQueue` ist das Gerüst für eine Implementierung einer linearen Datenstruktur zur Verwaltung
|
||||
von Objekten des Typs `Body`.
|
||||
- `BodyForceMap` ist das Gerüst für eine Implementierung einer assoziativen Datenstruktur, die
|
||||
- `BodyForceMap` ist das Gerüst für eine Implementierung einer assoziativen Datenstruktur, die
|
||||
einen Himmelskörper mit der auf ihn wirkenden Kraft assoziiert.
|
||||
- `Aufgabe2Test` ist eine vorgegebene Klasse, die Sie zum Testen Ihrer Implementierung verwenden
|
||||
sollten. Bei einer fehlerfreien Implementierung sollten bei der Ausführung dieser Klasse keine Exceptions geworfen werden und alle Tests als erfolgreich ("successful") ausgegeben werden. Sie müssen diese Klasse nicht verändern, können aber eigene Testfälle hinzufügen.
|
||||
- `Aufgabe2Test` ist eine vorgegebene Klasse, die Sie zum Testen Ihrer Implementierung verwenden
|
||||
sollten. Bei einer fehlerfreien Implementierung sollten bei der Ausführung dieser Klasse keine Exceptions geworfen werden und alle Tests als erfolgreich ("successful") ausgegeben werden. Sie müssen diese Klasse nicht verändern, können aber eigene Testfälle hinzufügen.
|
||||
|
||||
## Aufgaben
|
||||
|
||||
@ -27,10 +27,10 @@ Ihre Aufgaben sind folgende:
|
||||
Body[] keys; // assume descending order according to mass
|
||||
Body toInsert;
|
||||
...
|
||||
|
||||
|
||||
int left = 0;
|
||||
int right = size - 1;
|
||||
|
||||
|
||||
while (left <= right) {
|
||||
int middle = left + ((right - left) / 2);
|
||||
if (keys[middle].mass() < toInsert.mass()) {
|
||||
@ -39,14 +39,14 @@ Ihre Aufgaben sind folgende:
|
||||
left = middle + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// index where to insert: right + 1
|
||||
```
|
||||
4. Bauen Sie die bereits bestehende Klasse `Simulation` so um, dass keine Kollisionen von Himmelskörpern mehr berücksichtigt werden. Dadurch soll der Programmcode vereinfacht werden. Die Anzahl der Himmelskörper ändert sich im Laufe der Simulation somit nicht. Testen Sie die Simulation.
|
||||
5. Ändern Sie nun die Klasse `Simulation` so, dass zur Verwaltung der Himmelskörper anstelle des Arrays Objekte der Klassen `BodyQueue` und `BodyForceMap` verwendet werden. Das heißt beispielsweise, dass die Zugriffe auf die Himmelskörper der Simulation über Methoden von `BodyQueue` erfolgen müssen. Anstelle des Arrays `forceOnBody` soll ein Objekt des Typs `BodyForceMap` benutzt werden.
|
||||
5. Ändern Sie nun die Klasse `Simulation` so, dass zur Verwaltung der Himmelskörper anstelle des Arrays Objekte der Klassen `BodyQueue` und `BodyForceMap` verwendet werden. Das heißt beispielsweise, dass die Zugriffe auf die Himmelskörper der Simulation über Methoden von `BodyQueue` erfolgen müssen. Anstelle des Arrays `forceOnBody` soll ein Objekt des Typs `BodyForceMap` benutzt werden.
|
||||
6. Testen Sie die Simulation wieder. Das Verhalten der Simulation sollte unverändert sein. Je nach Implementierung der Klassen `BodyQueue` und `BodyForceMap` ist es möglich (und kein Problem), dass die Simulation jetzt langsamer läuft, als nach dem Umbau in Schritt 4.
|
||||
7. (Freiwillige Zusatzaufgabe ohne Bewertung:) Testen Sie die Simulation mit den folgenden fünf
|
||||
Himmelskörpern:
|
||||
7. (Freiwillige Zusatzaufgabe ohne Bewertung:) Testen Sie die Simulation mit den folgenden fünf
|
||||
Himmelskörpern:
|
||||
```
|
||||
Body sun = new Body(1.989e30,new Vector3(0,0,0),new Vector3(0,0,0));
|
||||
Body earth = new Body(5.972e24,new Vector3(-1.394555e11,5.103346e10,0),new Vector3(-10308.53,-28169.38,0));
|
||||
@ -60,4 +60,4 @@ Himmelskörpern:
|
||||
- Implementierung von `BodyQueue`: 2 Punkte
|
||||
- Implementierung von `BodyForceMap`: 2 Punkte
|
||||
- Anpassung von `Simulation`: 1 Punkt
|
||||
- Gesamt: 5 Punkte
|
||||
- Gesamt: 5 Punkte
|
||||
|
Reference in New Issue
Block a user