Java programmieren

Neue Frage »

Auf diesen Beitrag antworten »
java25 Java programmieren

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
 
Auf diesen Beitrag antworten »
Airblader

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
    }
}
Auf diesen Beitrag antworten »
java25

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.
Auf diesen Beitrag antworten »
Airblader

Darf ich fragen, was du zum Programmieren nutzt? Jetzt hast du nämlich ganz klare Syntax-Fehler, die jede IDE dir eigentlich anzeigen sollte. Wenn du bisher keine verwendest, wird es höchste Zeit, dir eine zuzulegen.

Langsam programmieren lernen ist eine super Sache – aber du versuchst dich an einer Aufgabe, die ganz offenbar weit über deinem Niveau ist. Bitte springe nochmal ein paar Lektionen zurück zu den Grundlagen über Variablen in Java. Wir werden hier sonst nicht vorankommen.
 
Auf diesen Beitrag antworten »
java25

ich benutze eclipse .

Kannst du mir nicht sagen wo genau der fehler liegt ?

Oder kannst du mir eine bessere ide empfehlen?
Auf diesen Beitrag antworten »
Airblader

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.
Auf diesen Beitrag antworten »
java25

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>(); 
		
	}
	

}
Auf diesen Beitrag antworten »
Airblader

Ich frage nochmal: Zeigt dir Eclipse denn keine Fehler an? Du dürftest das eigentlich nichtmal kompilieren können!

Ich gehe jetzt nochmal auf ein paar Fehler ein, aber dann mache ich hier Schluss. Ich hatte vorhin schon gesagt: Fange mit den Grundlagen an, das hier ist zu fortgeschritten. Es gibt viele gute Bücher zu Java, mit denen du dir sowas beibringen kannst.

  • Was soll die main-Methode außerhalb der Klasse? Das ist ein ganz klarer Fehler bei dem dir Eclipse die gesamte Methode schön rot darstellen sollte.
  • Der Typ von elems ist falsch. Gemeint ist wohl eher Collection<ZeichenbareFigur>. Auch hier sollte dir Eclipse sofort die Zeile rot markieren.
  • LinkedZeichenbareFigur wird wohl kaum existieren – auch hier: Die Zeile muss rot sein…


Wenn dir Eclipse hier nicht nahezu alles rot markiert hat, dann stimmt irgendwas nicht.
Auf diesen Beitrag antworten »
java25

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?
Auf diesen Beitrag antworten »
java25

Leute was mache ich denn nur falsch?
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »