UML Diagramm in Java implementieren-Korrektur

canyakan95

Bekanntes Mitglied
Hallo ich habe eine Datei hochgeladen ...Diese dargestellte UML KLassen mit den AUfgaben sollte ich in Java implementieren.Dies habe ich auch gemacht ..
Meine Codes:
Code:
package projekte;

public abstract class Vorhaben {

    @SuppressWarnings("unused")
    private String Titel;
   
    public Vorhaben(String Titel)
    {
        this.Titel=Titel;
    }

}


package projekte;

public class Projekt extends Vorhaben{

    private Aufgabe[] aufgaben;
    @SuppressWarnings("unused")
    private Projektverwaltung management;
    private String Titel;
    private int anzaufträge=0;
   
    public Projekt(String Titel)
    {
        super(Titel);
        aufgaben = new Aufgabe[11];
    }
   
    public String getTitel()
    {
        return Titel;
    }
   
    public boolean addAufgabe(Aufgabe neu)
    {
        boolean eingefügt;
       
        if(anzaufträge<aufgaben.length)
        {
            aufgaben[anzaufträge]=neu;
            anzaufträge++;
            eingefügt=true;
        }
        else
        {
            eingefügt = false;
        }
        return eingefügt;
    }
}

package projekte;

public class Aufgabe extends Vorhaben {

    private String Titel;
    @SuppressWarnings("unused")
    private Projekt projekt;
   
    public Aufgabe(String Titel) {
        super(Titel);
    }
   
    public String getTitel()
    {
        return Titel;
    }
}

package projekte;

public class Projektverwaltung{
   
    private Projekt[] projekte;
   
    public void listeAlleProjekte()
    {
        for(int i=0;i<projekte.length;i++)
        {
            if(projekte[i]!=null){
            System.out.println(projekte[i].getTitel());
            }
            }
    }
}

package projekte;

public class MainProjekte {

    public static void main(String[] args) {
       
        Projekt eins = new Projekt("Test");
       
        Aufgabe eins1 = new Aufgabe("Lernen");
        Aufgabe zwei2 = new Aufgabe("Pause");
       
        eins.addAufgabe(eins1);
        eins.addAufgabe(zwei2);
       
        Projektverwaltung test = new Projektverwaltung();
        test.listeAlleProjekte();
       
    }
}

Nur kriege ich in der main-methode eine NullPointerException ...und kann nicht herausfinden warum.
Hoffe ihr könnt mich verbessern oder weiter helfen.
Mfg
 

Anhänge

  • Bildschirmfoto 2016-02-06 um 20.52.52.png
    Bildschirmfoto 2016-02-06 um 20.52.52.png
    185,9 KB · Aufrufe: 49
Du definierst mehrere Instanzvariablen Titel, die private sind. Du setzt die Variable im Vorhaben (auf die du nie zugreifst bis auf das Setzen im Konstruktor!) und liest eine andere
.. . Die ist dann natürlich null.

Warnungen solltest du nicht ignorieren, wenn du diese nicht wirklich verstanden hast ....

Eine mögliche Lösung: Mach die Variable protected so dass du von abgeleiteten Klassen aus drauf zugreifen kannst oder implementier Setter und Getter die Du dann nutzen kannst.
 
Habe das auf protected umgestellt
nur habe ich das ganze mit der klasse vorhaben nicht verstanden.
kannst du kurz hinschreiben ,was du mit der klasse vorhaben meinst.
mfg
 
Du hast eine Klasse Vorhaben. In der Klasse hast Du einen String Titel.
Nun erbt Projekt von Vorhaben und Du hast erneut eine Instanzvariable Titel. Diese Variable "überdeckt" dann die Variable Titel von Vorhaben. Ich denke nicht, dass Du das wolltest.

Und Dein "@SuppressWarnings("unused")" zeigt schon, dass da etwas sehr dubios ist. Deine Zugriffe auf Titel gehen halt nicht auf den Titel, den Du in Vorhaben definiert hast (und den Du im Konstuktor setzt) sondern auf die anderen Titel Variablen.
 
so habe nun folgendes ...aber iwie passt die klasse projektverwaltung noch nicht ganz..die fehlermeldung nullpointer besteht noch immer..

Code:
package projekte;

public abstract class Vorhaben {

    protected String Titel;
   
    public Vorhaben(String Titel)
    {
        this.Titel=Titel;
    }
}


package projekte;

public class Projekt extends Vorhaben{

    private Aufgabe[] aufgaben;
    private Projektverwaltung management;
    private int anzaufträge=0;
   
    public Projekt(String Titel)
    {
        super(Titel);
        aufgaben = new Aufgabe[11];
    }
   
    public String getTitel()
    {
        return Titel;
    }
   
    public boolean addAufgabe(Aufgabe neu)
    {
        boolean eingefügt;
       
        if(anzaufträge<aufgaben.length)
        {
            aufgaben[anzaufträge]=neu;
            anzaufträge++;
            eingefügt=true;
        }
        else
        {
            eingefügt = false;
        }
        return eingefügt;
    }
}


package projekte;

public class Aufgabe extends Vorhaben {

    private Projekt projekt;
   
    public Aufgabe(String Titel) {
        super(Titel);
    }
   
    public String getTitel()
    {
        return Titel;
    }
}

package projekte;

public class Projektverwaltung{
   
    private Projekt[] projekte;
   
    public void listeAlleProjekte()
    {
        for(int i=0;i<projekte.length;i++)
        {
            if(projekte[i]!=null)
            {
                System.out.println(projekte[i].getTitel());
            }
        }
    }
}

package projekte;

public class MainProjekte {

    public static void main(String[] args) {
       
        Projekt eins = new Projekt("Test");
       
        Aufgabe eins1 = new Aufgabe("Lernen");
        Aufgabe zwei2 = new Aufgabe("Pause");
       
        eins.addAufgabe(eins1);
        eins.addAufgabe(zwei2);
       
        Projektverwaltung test = new Projektverwaltung();
        test.listeAlleProjekte();
       
    }
}
 
Du erstellst eine Instanz von Projektverwaltung und rufst dann eine Methode davon auf. Das ist noch ok. Die Methode versucht aber auf das Array projekte zuzugreifen, welches du aber nicht instanziert hast, daher NullPointer.
was meinst du genau mit "instanziert" und wo sollte ich sie hinzufügen oder "instanzieren"...
so??
Code:
package projekte;

public class Projektverwaltung{
  
    private Projekt[] projekte;
  
    public Projektverwaltung(){
        projekte = new Projekt[21];
    }
  
    public void listeAlleProjekte()
    {
        for(int i=0;i<projekte.length;i++)
        {
            if(projekte[i]!=null)
            {
                System.out.println(projekte[i].getTitel());
            }
        }
    }
}

kriege so zwar keinen fehler , aber auf der konsole wird nichts angezeigt
 
So wie du es nun im Konstruktor tust. Der war weiter oben noch nicht da.

Gelöst hast du dein Problem aber noch nicht. Du hast zwar nun ein Array für deine Projekte, dieses ist aber noch leer. Du musst dir nun eine Möglichkeit überlegen wie du deine Projekte in die Datenstruktur aufnehmen möchtest.
 

Zurück
Oben