Java programmieren |
java25 unregistriert
|
|
Meine Frage:
Hallo leute ich habe gerade probleme bei einer Aufgabe:
Als Vorlage habe ich das bekommen:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
|
abstract class ZeichenbareFigur implements GeometrischeFigur {
private Color farbe; // Farbe des Objekts
/**
* Zeichnet das Objekt.
*/
abstract void zeichne();
/**
*
* @param farbe Farbe des Objekts.
*/
public ZeichenbareFigur(Color farbe) {
this.farbe = farbe;
}
/**
* Ändert die Farbe des Objekts und zeichnet es neu.
* @param farbe Neue Farbe des Objekts.
*/
public void setzeFarbe(Color farbe) {
this.farbe = farbe;
zeichne();
}
/**
* Gibt die Farbe des Objekts zurück.
* @return Farbe des Objekts.
*/
public Color gibFarbe() {
return farbe;
}
} |
|
Nun Aufgabenstellung:
Ausgangspunkt für diese Aufgabe ist eine modifizierte Musterlösung . Die abstrakte Oberklasse ZeichenbaresObjekt wurde in
ZeichenbareFigur geändert, die das Interface GeometrischeFigur implementiert. Die Unterklassen
(Kreis, Polygon etc.) müssen nun nicht mehr explizit das Interface implementieren.
Ziel ist es, Sammlungen von zeichenbaren geometrischen Figuren zu verwalten.
a) Schreiben Sie dazu die Klasse FigurSammlung.
Der Konstruktor soll keine Parameter erwarten und ein geeignetes Collection-Datenfeld für die zu
verwaltenden ZeichenbareFigur-Objekte initialisieren.
b) Die Methode public void hinzu(ZeichenbareFigur f) soll der Sammlung eine neue Figur hinzufügen.
c) Die Methode public void zeichne() soll alle Figuren der Sammlung zeichnen.
d) Schreiben Sie die Methode public double gibFlaeche(), die einfach die Summe der Einzelflächen
zurückgibt (Sie brauchen hier also nicht auf Überlappungen zwischen den einzelnen Figuren
zu achten!).
e) Implementieren Sie auch die Methode public Punkt gibSchwerpunkt(). Erstellen Sie ein neues
(Hilfs-)Polygon aus den Schwerpunkten der einzelnen Figuren und geben Sie dessen Schwerpunkt
als Ergebnis zurück.
Hinweis: Das Ergebnis dieser Methode ist nicht der tatsächliche Schwerpunkt der Figurensammlung.
Diesen zu bestimmen ist nicht trivial, dazu müssten die einzelnen Figuren z. B. gewichtet
nach ihrer Fläche in die Berechnung eingehen.
f) Die Methode public void rotiereFarben() soll die Farben der Figuren so rotieren, dass jede
Figur die Farbe der nächsten Figur der Sammlung erhält (die letzte Figur soll die ehemalige Farbe
1
der ersten Figur erhalten). Wenn die Figuren der Sammlung also die Farben rot, grün, blau und
gelb haben, sollen die nach dem Aufruf der Methode die Farben grün, blau, gelb und rot haben.
Mein Ansatz sieht so aus:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
import java.util.Collection;
public class FigurSammlung {
public FigurSammlung(){
java.util.Collection;
}
} |
|
Habe ich so das collection datenfeld initialisiert im Konstruktor ?
Meine Ideen:
gepostet
|
|
11.05.2013 17:06 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
Nein – und schon jetzt lehne ich mich aus dem Fenster und gebe dir den Rat: Fange nicht mit dieser Aufgabe an, sie ist zu fortgeschritten für dich. Du solltest nochmal einige Grundlagen wiederholen, z.B. wie man Klassenvariablen deklariert und initialisiert.
Die Collection muss eine Variable werden, die im Groben sowas macht wie "farbe" in der Oberklasse, also
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
import java.util.Collection;
public class FigurSammlung {
private Collection figuren;
public FigurSammlung () {
// hier muss figuren initialisiert werden
}
} |
|
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
11.05.2013 19:06 |
|
|
java25 unregistriert
|
|
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
import java.util.Collection;
public class FigurSammlung {
private final ZeichenbareFigur<Collection> elems;
public FigurSammlung(){
elem = new LinkedZeichenbareFigur<java.util.Collection>();
}
} |
|
Könnte ich das so machen ?
Ich versuche halt langsam programmieren zu lernen.
|
|
11.05.2013 19:28 |
|
|
java25 unregistriert
|
|
ich benutze eclipse .
Kannst du mir nicht sagen wo genau der fehler liegt ?
Oder kannst du mir eine bessere ide empfehlen?
|
|
11.05.2013 19:38 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
Nein, Eclipse ist super!
Aber Eclipse sollte dir definitiv Fehler für den obigen Code anzeigen. Zum Beispiel, dass du die Variable einmal "elems" und einmal "elem" nennst.
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
11.05.2013 19:41 |
|
|
java25 unregistriert
|
|
Ich habs so gemacht.
Aber es funzt trotzdem net .
In welcher Zeile liegt den der Fehler?
import java.util.Collection;
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
|
public static void main(String[] args){
}
public class FigurSammlung {
private final ZeichenbareFigur<Collection> elems;
public FigurSammlung(){
elems = new LinkedZeichenbareFigur<java.util.Collection>();
}
} |
|
|
|
11.05.2013 19:55 |
|
|
java25 unregistriert
|
|
import java.util.Collection;
public static void main(String[] args){
}
public class FigurSammlung {
private final Collection<ZeichenbareFigur> elems;
public FigurSammlung(){
elems = new LinkedCollection<ZeichenbareFigur>();
}
}
Das funktioniert immer noch nicht.
Ja eclipse zeigt mir fehler an , aber es sagt mir auch das keine main existiert , daher hatte ich das public static.... angefügt.
Was soll ich sonst machen?
|
|
11.05.2013 20:17 |
|
|
java25 unregistriert
|
|
Leute was mache ich denn nur falsch?
|
|
12.05.2013 12:31 |
|
|
|