getter/setter Garage

Vladyslav

Mitglied
Hi,
könnt mir vll. jemand sagen was ich da falsch gemacht habe ?
Ich soll zwei Klassen erstellen, in der einen sind die Objekte für ein Auto, mit entsprechendem Konstruktor.
In der anderen die eigentliche Garage. Der Hubraum der Autos muss verglichen und das mit dem größten soll ausgegeben werden.

Soweit so gut.
Ich soll in der Methode setHubraum(int xy) als auch im Konstruktor sicher stellen, dass keine ungültigen Werte übergeben werden, nur ( x >=0 ).
Im Konstruktor soll im Falle einer ungültigen Aufgabe der Hubraum auf 1600 hoch gesetzt werden.

Ich dachte ich hätte es so gelöst, nur kommt bei mir in der Klasse Garage keine solche Fehlermeldung raus, bin gerade überfragt. Hätte jemand vll. ein Tipp wie ich es bewerkstellige, das in der Methode setHubraum() und im Konstrukt sicherstelle, dass die Eingabe gültig ist und im Falle einer falschen Eingabe der Hubraum in Konstruktor auf 1600 gesetzt wird ?

mfG
Code:
public class Auto {
    
    private String marke;
    private String farbe;
    private int ps;
    private int hubraum;

    
    public Auto(String marke, String farbe, int ps, int hubraum) // Konstruktor
    {
        this.marke = marke;
        this.farbe = farbe;
        this.ps    = ps;
        if (hubraum <= 0)
        {
            hubraum = 1600;
        }
        else
        {
        this.hubraum = hubraum;
        }
    }
    
    //getter - lesender Zugriff
    
    public String getMarke ()
    {
        return marke;
    }
    public String getFarbe()
    {
        return farbe;
    }
    public int getPS()
    {
        return ps;
    }
    public int getHubraum()
    {
        return hubraum;
    }
    
    //setter - schreibender Zugriff
    
    public void setMarke (String marke)
    {
        this.marke = marke;
    }
    public void setFarbe (String farbe)
    {
        this.farbe = farbe;
    }
    public void setPS (int ps)
    {
        this.ps = ps;
    }
    public void setHubraum (int hubraum)
    {
        if (hubraum <= 0)
        {
            System.out.println("Falsche Eingabe!");
            this.hubraum = hubraum;
        }
        else
        {
        this.hubraum = hubraum;
        }
    }
    
    
}
 

LimDul

Top Contributor
Im Konstruktor:
Java:
public Auto(String marke, String farbe, int ps, int hubraum) // Konstruktor
    {
        this.marke = marke;
        this.farbe = farbe;
        this.ps    = ps;
        if (hubraum <= 0)
        {
            hubraum = 1600;
        }
        else
        {
        this.hubraum = hubraum;
        }
    }
Welche Variable wird im Fall kleiner gleich 0 auf 1600 gesetzt? Es ist nicht das Feld, sondern der übergebene Parameter. Sprich, dein Hubram vom Auto bleibt 0, da du das nicht setzt. Da fehlt ein this davor: this.hubraum = 1600;

Im Setter
Java:
public void setHubraum (int hubraum)
    {
        if (hubraum <= 0)
        {
            System.out.println("Falsche Eingabe!");
            this.hubraum = hubraum;
        }
        else
        {
        this.hubraum = hubraum;
        }
    }
Was machst du im Falll einer ungültigen Eingabe?
Erstens: Du gibst aus: "Falsche Eingabe". Das ist schon mal gut
Zweitens: Dann übernimmst du die falsche Eingabe. Warum? Die Zeile unter dem System.out muss weg, du willst die Eingabe ja in dem Fall eben nicht übernehmen.
 

VfL_Freak

Top Contributor
Moin,

meinst Du dies "System.out.println("Falsche Eingabe!")" mit Fehlermeldung oder kommt was in der Javakonsole ??
Wenn ich es richtig sehe (und dies der gesamte Code ist) rufst Du "setHubraum" auch nicht auf !!

VG Klaus
 

Vladyslav

Mitglied
@ VfL_Freak nein es ist nicht der gesamte Code, habe noch ein Klasse mit dem Namen Garage.
Code:
public class Garage {
   
    public static void main (String []args )
    {
        int anzahlAutos = 3;
        int groessterHubraum = 0;
        String autoGroessterHubraum = "";
        Auto []autos = new Auto[3];
        autos[0] = new Auto ("Auto1","blau",50,5500);
        autos[1] = new Auto ("Auto2","rot",100,2000);
        autos[2] = new Auto ("Auto3","gelb",150, 1000);
       
        for ( int i = 0 ; i < anzahlAutos; i ++)
        {
            if (autos[i].getHubraum()>groessterHubraum)
            {
                groessterHubraum = autos[i].getHubraum();
                autoGroessterHubraum = autos[i].getMarke();
            }
        }
        System.out.println(autoGroessterHubraum+" mit "+ groessterHubraum+ "ccm");
    }
}
 

VfL_Freak

Top Contributor
Ganz wundervoll :rolleyes:
Bleibt immer noch die Frage, was Du mit "Fehlermeldung" meinst ..... :oops:
Und auch in "Garage" rufst Du "setHubraum" auch nicht auf !!
VG Klaus
 

Vladyslav

Mitglied
Mit Fehlermeldung, war nur die Ausgabe mit System.out.println gemeint.

Das mit dem "setHubraum".
Mir ist unklar, wie ich es einbauen soll. setHubraum ist doch lediglich der lesende Zugriff und mit get kann ich die Werte doch ggf. verändern oder?
 

Vladyslav

Mitglied
Ok.
Verstehe ich es richtig?
Um setHubraum richtig in der Klasse Java richtig zu implementieren, damit es Werte einließt. Würde ich eine Scanner in der Klasse Auto bei "public void setHubraum (int hubraum) " einsetzen.
In der Klasse Garage müssten, dann in der Konsole die Hubraumwerte manuell eingegeben werden?
 

temi

Top Contributor
Eine geschickte Lösung, die auch unnötige Codeverdoppelung vermeidet wäre diese:

Schreibe die Methode setHubraum(), im Prinzip so, wie du es bereits fast richtig gemacht hast.

Pseudocode: Wenn der Wert des Parameters kleiner oder gleich Null ist, dann setze die Instanzvariable hubraum auf 1600, ansonsten setze die Instanzvariable auf den Wert des Parameters.

Im Konstruktor rufst du einfach die Methode setHubraum() auf, als Aufrufparameter der Methode verwendest du den Parameter hubraum des Konstruktors. Damit wird die Grenze überwacht und der Wert korrekt gesetzt.
 

LimDul

Top Contributor
Eine geschickte Lösung, die auch unnötige Codeverdoppelung vermeidet wäre diese:

Schreibe die Methode setHubraum(), im Prinzip so, wie du es bereits fast richtig gemacht hast.

Pseudocode: Wenn der Wert des Parameters kleiner oder gleich Null ist, dann setze die Instanzvariable hubraum auf 1600, ansonsten setze die Instanzvariable auf den Wert des Parameters.

Im Konstruktor rufst du einfach die Methode setHubraum() auf, als Aufrufparameter der Methode verwendest du den Parameter hubraum des Konstruktors. Damit wird die Grenze überwacht und der Wert korrekt gesetzt.
Dann sollte die setMethode aber nicht public sein - public Methoden würde ich vermeiden aus dem Konstruktor aufzurufen.

Ich würde - wenn wie normalerweise - die set Methode public sein soll, eine Methode setHubraumInternal schreiben, die private ist und die Logik wie oben beschrieben hat. Der Konstruktor und der public setter rufen dann nur diese Methode auf, delegieren also dahin.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
W Getter/Setter Java Basics - Anfänger-Themen 4
KogoroMori21 Objektvariable anderer Klasse übernehmen, Getter/Setter Java Basics - Anfänger-Themen 11
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
KogoroMori21 Getter und Setter Java Basics - Anfänger-Themen 5
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
S getter, setter in abstrakter Klasse oder lieber Unterklassen Java Basics - Anfänger-Themen 4
topi Kapselung getter und setter Java Basics - Anfänger-Themen 5
D Setter/Getter für Instanzvariablen praktisch? Java Basics - Anfänger-Themen 19
S Getter/Setter - Variablenklasse ? Java Basics - Anfänger-Themen 5
S getter and setter Java Basics - Anfänger-Themen 12
L Getter und Setter Java Basics - Anfänger-Themen 2
M Generics getter und setter Methoden Java Basics - Anfänger-Themen 4
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
L Klassen - Getter & Setter Methoden Java Basics - Anfänger-Themen 2
D Erste Schritte Java - Setter und Getter Java Basics - Anfänger-Themen 1
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
K Klassen Setter/Getter Java Basics - Anfänger-Themen 3
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
K Kapselung getter & setter Java Basics - Anfänger-Themen 11
J Frage zu Setter u. Getter Java Basics - Anfänger-Themen 7
T Variablen Getter-Setter vs Public Variable? Java Basics - Anfänger-Themen 5
Y Konstruktor - Setter/Getter Java Basics - Anfänger-Themen 3
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
K getter & setter Java Basics - Anfänger-Themen 6
C getter/setter Problem anscheinend Java Basics - Anfänger-Themen 13
G Erste Schritte Getter und Setter Java Basics - Anfänger-Themen 12
B Getter,Setter - Konstruktor überflüssig? Java Basics - Anfänger-Themen 26
N Sprite Methode (Getter, Setter, Konstruktor) Java Basics - Anfänger-Themen 9
S getter/setter aufrufen Java Basics - Anfänger-Themen 9
B Java getter/setter funktioniert nicht! Java Basics - Anfänger-Themen 7
X OOP Getter/Setter überschreiben den Wert ihrer Variablen nicht Java Basics - Anfänger-Themen 4
T Erste Schritte Verständnisfrage: Getter und Setter Methoden Java Basics - Anfänger-Themen 3
V public Variablen vs Getter + Setter Java Basics - Anfänger-Themen 4
F Getter und Setter Java Basics - Anfänger-Themen 4
lulas[]args getter/setter umstellung Java Basics - Anfänger-Themen 6
B Klassen Getter-Setter vor neuem Klassenaufruf - wie? Java Basics - Anfänger-Themen 20
N OOP Getter, Setter und andere Probleme Java Basics - Anfänger-Themen 8
A OOP Getter und Setter Java Basics - Anfänger-Themen 18
L Unterschied Konstruktor / Getter Setter Java Basics - Anfänger-Themen 13
L Setter und Getter für Arrays? Java Basics - Anfänger-Themen 4
N boolean bei Setter und getter methoden Java Basics - Anfänger-Themen 21
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
Houly Setter/Getter MEthoden testen Java Basics - Anfänger-Themen 4
P OOP Getter&Setter Methoden funktionieren nicht Java Basics - Anfänger-Themen 7
H Setter-und-Getter-Konvention Java Basics - Anfänger-Themen 8
V Reflection API - getter und setter Java Basics - Anfänger-Themen 7
-horn- EINE setter/getter klasse aus mehreren klassen befüllen Java Basics - Anfänger-Themen 13
C Getter/Setter Java Basics - Anfänger-Themen 61
H Frage zu getter und setter Java Basics - Anfänger-Themen 5
S Unbenutzte/überflüssige Getter/Setter herausfinden? Java Basics - Anfänger-Themen 2
M getter/setter bei JTextField ? Java Basics - Anfänger-Themen 21
G warum Setter/Getter Java Basics - Anfänger-Themen 25
S In einer Liste auf getter und setter zugreifen Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
O Instanzattribut per Getter Methode zuweisbar, warum? Java Basics - Anfänger-Themen 8
P Klassenübergreifende Ausgabe mittels "getter" nicht möglich Java Basics - Anfänger-Themen 21
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
M Getter einer PriorityQueue Java Basics - Anfänger-Themen 1
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
V Getter Methode Java Basics - Anfänger-Themen 38
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
A getter Java Basics - Anfänger-Themen 3
T Getter für Array Java Basics - Anfänger-Themen 4
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
P getter Java Basics - Anfänger-Themen 1
M Getter Problematik mit ItemListener Java Basics - Anfänger-Themen 17
S Array und Getter-Methode Java Basics - Anfänger-Themen 2
Avarion Getter von Super-Klasse funktioniert nicht Java Basics - Anfänger-Themen 10
J Variable per Getter holen - wie ? Java Basics - Anfänger-Themen 2
D Getter Mehtode Unsicher Java Basics - Anfänger-Themen 6
M Problem mit getter, liefert nur alte Werte Java Basics - Anfänger-Themen 6
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
G Generics kein Zugriff auf getter eines Objekts Java Basics - Anfänger-Themen 4
M OOP Aufruf vieler Getter Methoden abkürzen? Java Basics - Anfänger-Themen 7
MU5T4NG Getter und Setten bei GUI-Erstellung Java Basics - Anfänger-Themen 13
B Variablen keine Arrayübergabe für getter im Interface Java Basics - Anfänger-Themen 8
J int Wert mit getter holen und in String parsen Java Basics - Anfänger-Themen 5
O Universeller GETTER Java Basics - Anfänger-Themen 5
J Die Getter Methode Java Basics - Anfänger-Themen 6
E [Erledigt] Schöner Code zur Reduktion von unzähligen Getter-Methoden Java Basics - Anfänger-Themen 2
F 2 dimensionales Array getter Methode Java Basics - Anfänger-Themen 3
K Getter Java Basics - Anfänger-Themen 6
S JTextField in anderer Classe mit getter Methode auslesen. Java Basics - Anfänger-Themen 2
M if oder verschiedene getter Java Basics - Anfänger-Themen 31
I If / Else in Setter? Java Basics - Anfänger-Themen 8
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
C Setter-Methode mit final-Attribut Java Basics - Anfänger-Themen 9
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
JavaTalksToMe Kapselung Setter Frage Java Basics - Anfänger-Themen 15
kilopack15 Ist diese setter-Methode richtig? Java Basics - Anfänger-Themen 2
T setter im Konstruktor einbauen? Java Basics - Anfänger-Themen 8
F Setter Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben