# Hilfe beim Überladen und optionalen Eingaben



## WusAA28 (20. Nov 2014)

Hallo
ich habe mehrere Aufgaben gestellt bekommen und tappe an manchen Stellen echt im dunkeln:bahnhof: Vielleicht könnt ihr mir da ja weiterhelfen

Die erste Aufgabe lautet:

Software für Geldautomaten II
Erweitern Sie Ihre Geldautomaten-Software aus Übungsblatt 2, Aufgabe 2. Erstellen
Sie einen Konstruktor für die Klasse Konto, mit dem das Angeben des
Kundennamens bei Erstellung eines Konto-Objekt erzwungen wird. Legen Sie
innerhalb dieses Konstruktors auch die Kontonummer des neuen Kontos automatisiert
fest, indem eine Klassenvariable hochgezählt wird.
Schreiben Sie einen weiteren Konstruktor, der Ihren ersten Konstruktor aufruft
und zusätzlich das Festlegen eines Startguthabens zum Konto ermöglicht.
Eine neue Serie von Geldautomaten der Firma Nixcor Windorf AG soll auch
Cent-Beträge auszahlen können. Damit dies möglich wird, überladen Sie bitte
entsprechend die Methoden payIn(...) und payOut(...).

Im großen und ganzen ja kein Problem nur an einigen Stellen hängt es noch 

Mein Code sieht wie folgt aus:

```
public class Konto
{
    
    // Attribute
    static int kontonummer =10000000;
    private String kundenname;
    private float kontostand;
    
    // Kontruktoren
    public Konto(float kontostand){
      setKontostand(kontostand);
    }
    
     public Konto(String kundenname){
        kontonummer = kontonummer + 1;
        this.kundenname=kundenname;
    }
    
    
    // Setter
    
    public void setKundenname(String name){
        this.kundenname=name;
    }
    
    public void setKontostand(float kontostand){
        this.kontostand=kontostand;
    }
    
    // Methoden
    public void payIn(int amount) {
        kontostand = kontostand + amount;
        printBalance();
    }
    
    public void payOut (int amount) {
        
        if ( kontostand - amount<0)
           System.out.println("Kontostand zu gering, ihr Guthaben betraegt: " + kontostand);
        else  {
           kontostand= kontostand - amount;
           printBalance();
        }
        }
    
    public void printBalance(){
      System.out.println("Der Kontoinhaber ist "+kundenname);
      System.out.println("Der Kontoihaber hat folgende Kontonummer: "+kontonummer);
      System.out.println("aktueller Kontostand: "+kontostand);
    }
    
    // Überladene Methoden
    
    public void payIn( int amount, float cent){
        kontostand = kontostand + amount + cent;
        printBalance();
    }
}
```

Das erste Problem was ich habe ist beim überladen des Konstruktors


```
public class Konto
{
    
    // Attribute
    static int kontonummer =10000000;
    private String kundenname;
    private float kontostand;
    
    // Kontruktoren
    public Konto(float kontostand){
      this(kundenname);
      setKontostand(kontostand);
    }
    
     public Konto(String kundenname){
        kontonummer = kontonummer + 1;
        this.kundenname=kundenname;
    }
```

Dort bekomme ich immer die Fehlermeldung :

cannot  reference kundenname before supertype constructor has been called

Wenn ich nun aber ein super() davor schreibe bekomme ich die Fehlermeldung :

call to this must be first statement in constructor

Wisst ihr was ich falsch mache? Ich bin am verzweifeln (

Das zweite Problem macht sich bei den überladenen Methoden von payIn und payOut breit.
ich verstehe einfach nicht wie das mit dem überladen funktionieren soll ???:L???:L

Die zweite Aufgabe wäre:

Büchersammlung
Sie möchten Ihre private Büchersammlung in Java modellieren. Schreiben Sie eine
Klasse Buch, welche bestimmte Eigenschaften wie z. B. ISBN, Titel, Autoren, Erscheinungsjahr,
Verlag und Zustand hat. Bilden Sie die Eigenschaften sinnvoll ab.
Beim Erzeugen eines neuen Buches soll mindestens ISBN, Titel und Autor gesetzt
werden. Sozusagen handelt es hierbei um Pflichtfelder. Alternativ können auch
alle Angaben getätigt werden. Entwerfen Sie entsprechende Konstruktoren.
Hinweis: Schreiben Sie getter- und setter-Methoden für alle Attribute.

Mein Code dafür sieht wie folgt aus:

```
public class Buch
{
    private int isbn;
    private String titel;
    private String autoren;
    private int erscheinungsjahr;
    private String verlag;
    private String zustand;
    
    //konstruktor
    public  Buch(int isbn, String titel, String autoren,int erscheinungsjahr, String verlag , String zustand){
        setIsbn(isbn);
        setTitel(titel);
        setAutoren(autoren);
        setErscheinungsjahr(erscheinungsjahr);
        setVerlag(verlag);
        setZustand(zustand);
        
        
        System.out.println("Die ISBN Nummer des Buches lautet: "+isbn);
        System.out.println();
        System.out.println("Der Titel des Buchs lautet: "+titel);
        System.out.println();
        System.out.println("Der Autor die Autoren des Buches sind: "+autoren);
        System.out.println();
        System.out.println("Das Erscheinungsjahr des Buches ist: "+erscheinungsjahr);
        System.out.println();
        System.out.println("Der Verlag ist "+verlag);
        System.out.println();
        System.out.println("Der Zustand des Buches ist "+zustand);
    }
    
    // Getter und Setter Methoden
    
    public int getIsbn(){
        return isbn;
    }
    
    public void setIsbn( int isbn){
        this.isbn=isbn;
    }
    
    public String getTitel(){
        return titel;
    }

    public void setTitel(String neuertitel){
        this.titel=neuertitel;
    }
    
    public String getAutoren(){
        return autoren;
    }
    
    public void setAutoren(String Autoren){
        this.autoren=autoren;
    }
    
    public int getErscheinungsjahr(){
       return erscheinungsjahr;
    }
    
    public void setErscheinungsjahr(int erscheinungsjahr){
        this.erscheinungsjahr=erscheinungsjahr;
    }
    
    public String getVerlag(){
        return verlag;
    }
    
    public void setVerlag(String verlag){
        this.verlag=verlag;
    }
    
    public String getZustand(){
        return zustand;
    }
    
    public void setZustand(String zustand) {
        this.zustand=zustand;
    }
}
```

Hier wäre meine Frage, wie stelle ich es an das ich Erscheinungsjahr, Verlag und Zustand nur optinal eingeben muss und nicht immer die Fehlermeldung: empty parameter field erhalte

Ich hoffe ihr könnt mir bei meinen Problemen weiterhelfen und bedanke mich schonmal im vorhinein 

Mfg.
WusAA


----------



## WusAA28 (18. Dez 2014)

Kann geclosed werden.


----------



## Joose (18. Dez 2014)

Konntest du dein Problem lösen? Wenn ja wie schaut die Lösung aus?
Es wäre für andere sicher auch hilfreich wenn du die Lösung hier posten würdest.


----------



## WusAA28 (23. Dez 2014)

Ja ich konnte mein Problem lösen. Die Lösungen schauen wie folgt aus.

Zu Problem 1.

Das Problem mit den Konstruktor habe ich so gelöst:

```
// Kontruktoren
    
    public Konto(String kundenname){ 
         i++;
         kontonummer = 10000000 + i ;
         setKundenname(kundenname);
        }
    
    public Konto(float kontostand, String kundenname){
        this(kundenname);
        setKontostand(kontostand);
    }
```

Die Überladenen Methoden sehen nun so aus:

```
// Überladene Methoden
    
    public void payIn( int amount, float cent){
        kontostand = kontostand + amount + cent;
        printBalance();
    }
    
    public void payOut (int amount,float cent) {
        
        if ( kontostand - amount<0)
           System.out.println("Kontostand zu gering, ihr Guthaben betraegt: " + kontostand);
        else  {
           kontostand= kontostand - amount - cent;
           printBalance();
        }
        }
```

Zu Problem 2.

Das Problem habe ich auch wieder mit einem Konstruktor gelöst:


```
//konstruktor
    public  Buch(int isbn, String titel, String autoren,int erscheinungsjahr, String verlag , String zustand){
        this(isbn,titel,autoren);
        setErscheinungsjahr(erscheinungsjahr);
        setVerlag(verlag);
        setZustand(zustand);
        
        
        System.out.println();
        System.out.println("Das Erscheinungsjahr des Buches ist: "+erscheinungsjahr);
        System.out.println();
        System.out.println("Der Verlag ist "+verlag);
        System.out.println();
        System.out.println("Der Zustand des Buches ist "+zustand);
    }
    
     public  Buch(int isbn, String titel, String autoren){
        setIsbn(isbn);
        setTitel(titel);
        setAutoren(autoren);
        Autor.neuerAutor(neuerAutor);
        
        System.out.println("Die ISBN Nummer des Buches lautet: "+isbn);
        System.out.println();
        System.out.println("Der Titel des Buchs lautet: "+titel);
        System.out.println();
        System.out.println("Der Autor die Autoren des Buches sind: "+autoren);
    }
```


----------

