# Klassendiagramm in Java Code umwandeln



## programmer13 (29. Nov 2016)

hallo zusammen,

ich muss ein Klassendiagramm in java Code umwandeln. Die Aufgabenstellung findet ihr im Anhang. Stimmt meine Lösung oder fehlt etwas?
Vielen Dank für die Hilfe.


```
public class Kuenstlerliste {
            public void hinzufuegen (Kuenstlergruppe gruppe) {}
            public boolean entfernen (Kuenstlergruppe gruppe) {}
}
```


```
public abstract class Kuenstlergruppe {
    private string name;
 
    public void Kuenstlergruppe (String name) {}
    public String getName() {
    return name;
    }
    public abstract String getArt()
  }
```


```
public class Musikgruppe extends Kuenstlergruppe {
    public static double aktGemaPauschale;
    private double preisProStunde;
    private String musikStil;
}

public Musikgruppe (String name, String stil, double preis) {}
   public double getAktGemaPauschale() {}
   public double getPreisProStunde () {}
```


```
public class Artistengruppe (double preisProStunde, String genre) {
public Artistengruppe (String name, String genre, double preis) {}
public double getPauschalPreis() {}

}
```


----------



## Joose (29. Nov 2016)

Java Code bitte in Code-Tags posten, danke 
[code] ... dein code ...[/code]

Die KuenstlerListe sollte noch eine Methode `get` haben, die Artistengruppe leitet nicht von Kuenstlergruppe ab?
Seit wann hat eine Klasse Parameter? 
Deine ganzen getter geben nichts zurück.


----------



## Kababär (29. Nov 2016)

Ohne das Diagramm gesehen zu haben. Die Klasse Artistengruppe sieht etwas seltsam aus, oder?


----------



## programmer13 (29. Nov 2016)

```
public class Kuenstlerliste {
        public void hinzufuegen (Kuenstlergruppe gruppe) {}
        public boolean entfernen (Kuenstlergruppe gruppe) {}
        public Kuenstlergruppe get (int i)
    }
   
    public abstract class Kuenstlergruppe {
        private string name;
    
        public void Kuenstlergruppe (String name) {}
        public String getName() {
        return name; }
        public abstract String getArt() {
            return Art;  }
      }
   
    public class Musikgruppe extends Kuenstlergruppe {
        public static double aktGemaPauschale;
        private double preisProStunde;
        private String musikStil;
    }

    public Musikgruppe (String name, String stil, double preis) {}
       public double getAktGemaPauschale() {return AktGemaPauschale}
       public double getPreisProStunde () {return PreisProStunde}
      
    public class Artistengruppe (double preisProStunde, String genre) {
           public Artistengruppe (String name, String genre, double preis) {}
           public double getPauschalPreis()
           {return PauschalPreis}

           }
```

Habe die return bei den get-Methoden ergänzt. Welche Punkte daran kann ich noch verbessern?


----------



## Joose (29. Nov 2016)

programmer13 hat gesagt.:


> Habe die return bei den get-Methoden ergänzt. Welche Punkte daran kann ich noch verbessern?


Einige, auch die ergänzten "return" stimmen nicht oder sind unvollständig ....


```
public class Kuenstlerliste {
   public void hinzufuegen (Kuenstlergruppe gruppe) {}
   public boolean entfernen (Kuenstlergruppe gruppe) {}
   public Kuenstlergruppe get (int i)
}
```
Der Methodenrump der Methode `get` fehlt (inkl. Inhalt).
Die Methoden `hinzufuegen` und `entfernen` sind nicht implementiert.


```
public abstract class Kuenstlergruppe {
   private string name;

   public void Kuenstlergruppe (String name) {}
   public String getName() {
   return name; }
   public abstract String getArt() {
   return Art;  }
}
```
Abstrakte Methoden haben keinen Implementierung, diese werden erst in den Kindklassen implementiert.
Außerdem gibt es kein Attribut `Art` was soll er also deiner Meinung nach zurückgeben?
Dir fehlt hier der Konstruktor, dafür hast du eine Methode `Kuenstlergruppe` deklariert. Anmerkung: Ein Konstruktor hat keinen Rückgabewert.


```
public class Musikgruppe extends Kuenstlergruppe {
   public static double aktGemaPauschale;
   private double preisProStunde;
   private String musikStil;
}

public Musikgruppe (String name, String stil, double preis) {}
public double getAktGemaPauschale() {return AktGemaPauschale}
public double getPreisProStunde () {return PreisProStunde}
```
Die Klammerung ist falsch, die Methoden bzw. der Konstruktor befinden sich außerhalb der Klassendeklaration.
Es fehlen ";" und Attribute werden in lowerCamelCase geschrieben. Und nicht wie bei dir mal so mal so 


```
public class Artistengruppe (double preisProStunde, String genre) {
   public Artistengruppe (String name, String genre, double preis) {}
   public double getPauschalPreis()
   {return PauschalPreis}
}
```
Seit wann hat eine Klassedeklaration eine Parameterliste?
Woher nimmst du plötzlich das Attribut `PauschalPreis` welches du im getter zurückgibst? Nirgends ist dieses Attribut deklariert.
Auch hier achte wieder auf die lowerCamelCase schreibweise.

*Allgemein: 
Laut angabe sollst du das Klassendiagramm umsetzen und auch entsprechend ergänzen. Dir fehlt die Implementierung einiger Methode und aller Konstruktoren.
Abgesehen davon fehlen dir die Grundlagen wie eine Klasse aufgebaut ist, du solltest dir diese Grundlagen nochmal anschauen, lernen und üben. Außerdem ist es ratsam deinen Code doch dem Compiler zu übergeben, dieser wird dich dann auf eine fehlerhafte Syntax aufmerksam machen.
Achte auch auf eine korrekte Einrückung und Formatierung des Codes, dann ist dieser für dich aber auch andere lesbarer.*


----------

