Java



  • Hallo leute kann mir jemand erklären wie man Collection-Datenfelder z.B in einem

    Konstruktor initialisieren kann?



  • Schlechter Thread-Titel...

    class Blubb
    {
        private final List<Element> elems;
    
        public Blubb()
        {
            elem = new LinkedList<Element>();
        }
    }
    

    So?

    MfG SideWinder



  • SideWinder schrieb:

    So?

    Nee. Wenn schon, dann elemns = ... 😉



  • Könnte ich es z.B so machen ?

    public class FigurSammlung {
    
    	private final List<java.util.Collection> elems;
    
    	public FigurSammlung(){
    
    		elem = new LinkedList<java.util.Collection>(); 
    
    	}
    
    }
    

    Die original aufgabenstellung ist so:

    Als Vorlage habe ich das bekommen:

    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.



  • Nein, List ist bereits eine Collection (siehe Vererbungshierarchie), d.h. List<Collection> würde eine Liste von Collections anlegen, nicht eine Collection von ZeichenbaresObjekt.

    MfG SideWinder



  • Würde es so gehen?

    public class FigurSammlung {
    
    	private final ZeichenbareFigur<Collection> elems;
    
    	public FigurSammlung(){
    
    		elem = new LinkedZeichenbareFigur<java.util.Collection>(); 
    
    	}
    
    }
    


  • Nein, du hast den Stoff eurer letzten Unterrichtsstunde über Collections scheinbar nicht verstanden. Bitte nochmal ansehen 🙂

    MfG SideWinder



  • Könntest du mir nicht ein wenig erklären wie ich das machen kann?

    Hab in der schule info und es ist freiwillig.

    Und sie setzen kenntnisse voraus.



  • Ich habs jetzt so gemacht , funktioniert aber trotzdem nicht .

    Woran liegt das?

    import java.util.Collection;
    
    public static void main(String[] args){
    
    }
    
    public class FigurSammlung {
    
    	private final Collection<ZeichenbareFigur> elems;
    
    	public FigurSammlung(){
    
    		elems = new LinkedCollection<ZeichenbareFigur>(); 
    
    	}
    
    }
    


  • Man kann nicht mehrere Elemente speichern indem man einfach "Linked" davorsetzt. Eine LinkedList ist eine Form von List, das solltet ihr irgendwo stehen haben.

    MfG SideWinder



  • Kannst du mir eine seite empfehlen wo das genau steht?

    Ich hab nicht so richtig was zu diesem thema gefunden.

    Ich hätte es jetzt so gemach, aber leider ist das quatsch.

    import java.util.Collection;
    
    public static void main(String[] args){
    
    }
    
    public class FigurSammlung {
    
    	private final Collection<ZeichenbareFigur> elems;
    
    	public FigurSammlung(){
    
    		elems = new Collection<ZeichenbareFigur>(); 
    
    	}
    
    }
    


  • http://www.javabuch.de/

    Sieh dir den Unterschied zwischen Interface und Implementierung an.

    MfG SideWinder



  • Ja ich weiss im interface darf man keine funktionen definieren usw.

    Aber was mache ich jetzt genau weiter ?

    KAnnst du mir nicht nur bei der a) helfen danach werde ich euch dann in ruhe lassen egal ob ich die Aufgabe hinbekomme oder nicht.

    Weil so komme ich ja mittlerweile seit etlichen stunden nicht weiter.



  • Kann mir jemand helfen?





  • Kann ich in meiner Aufgabe die collection List benutzen?


Anmelden zum Antworten