Erste Schritte Auf Attribut einer anderen Klasse zugreifen.

Beste Antwort
Du müsstest in der Roller Klasse Getter und Setter anlegen
In etwa so:

Java:
public class Roller {
    
    private int kilometerstand;
    private double tankinhalt;
    private double verbrauchProKm = 0.01;

    public Roller(int kilometerstand, double tankinhalt,
                  double verbrauchProKm) {
        this.kilometerstand = kilometerstand;
        this.tankinhalt = tankinhalt;
        this.verbrauchProKm = verbrauchProKm;
    }

    public int getKilometerstand() {
        return kilometerstand;
    }

    public void setKilometerstand(int kilometerstand) {
        this.kilometerstand = kilometerstand;
    }

    public double getTankinhalt() {
        return tankinhalt;
    }

    public void setTankinhalt(double...
Java:
public class EineKlasse {
  public void methode() {
    AndereKlasse instanz = new AndereKlasse();
    instanz.attribut = 4;
    // ...
  }
}

public class AndereKlasse {
  public int attribut;
}
Bitte stelle die Frage konkreter. Es ist nicht ganz klar, was du genau machen möchtest, bzw. wie dein Anwendungsfall genau aussieht.
 
Java:
public class EineKlasse {
  public void methode() {
    AndereKlasse instanz = new AndereKlasse();
    instanz.attribut = 4;
    // ...
  }
}

public class AndereKlasse {
  public int attribut;
}
Bitte stelle die Frage konkreter. Es ist nicht ganz klar, was du genau machen möchtest, bzw. wie dein Anwendungsfall genau aussieht.
public class Besitzer
{
private Roller meinRoller;

public void fahreDeinenRoller(int pStrecke)
{
if(tankinhalt >= pStrecke * verbrauchProKm)
{
kilometerstand = kilometerstand + pStrecke;
tankinhalt = tankinhalt - pStrecke * verbrauchProKm;
}
else
{
System.out.println("Der Tankinhalt ist zu niedrig. Du musst erst tanken.");
}
}
}

public class Roller
{
private int kilometerstand;
private double tankinhalt;
private double verbrauchProKm = 0.01;

public Roller(double pTankgroesse, int pKmStand, double pTankinhalt)
{
tankgroesse = pTankgroesse;
kilometerstand = pKmStand;
tankinhalt = pTankinhalt;
}
}
 
Wenn du auf Attribute eines Objekts zugreifen willst brauchst du immer eine Instanz, also entweder über Instanz Methoden in der eigene Klasse oder du übergibst eine Referenz in der Methode einer anderen Klasse.
Da du die Attribute normalerweise als private deklarierst brauchst du normalerweise auch getter und setter
 
Wie würde das dann aussehen?
Java:
class A {
    
    private int number;

    public void setNumber(int number) {
        this.number = number;
    }
    public int getNumber() {
        return number;
    }
}

class B {

    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.getNumber());//0
        a.setNumber(3);
        System.out.println(a.getNumber());//3
    }

}
 
Wenn du sagst was du mit deinem Roller vor hast und den Code in Code Tags packst, kann dir das vielleicht jemand beantworten
Java:
public class Besitzer
{
private Roller meinRoller;

public void fahreDeinenRoller(int pStrecke)
{
if(tankinhalt >= pStrecke * verbrauchProKm)
{
kilometerstand = kilometerstand + pStrecke;
tankinhalt = tankinhalt - pStrecke * verbrauchProKm;
}
else
{
System.out.println("Der Tankinhalt ist zu niedrig. Du musst erst tanken.");
}
}
}

public class Roller
{
private int kilometerstand;
private double tankinhalt;
private double verbrauchProKm = 0.01;

public Roller(double pTankgroesse, int pKmStand, double pTankinhalt)
{
tankgroesse = pTankgroesse;
kilometerstand = pKmStand;
tankinhalt = pTankinhalt;
}
}

Der Besitzer soll halt den Kilometerstand des Rollers auslesen und ggf. überschreiben und den Tankinhalt und den Verbrauch pro Km des Rollers auslesen können. Was muss ich dafür an meinem Code verändern? (Das ist nur ein Teil des Codes. Beim Rest habe ich kein oder das gleiche Problem.)
 
Zuletzt bearbeitet:
Du müsstest in der Roller Klasse Getter und Setter anlegen
In etwa so:

Java:
public class Roller {
    
    private int kilometerstand;
    private double tankinhalt;
    private double verbrauchProKm = 0.01;

    public Roller(int kilometerstand, double tankinhalt,
                  double verbrauchProKm) {
        this.kilometerstand = kilometerstand;
        this.tankinhalt = tankinhalt;
        this.verbrauchProKm = verbrauchProKm;
    }

    public int getKilometerstand() {
        return kilometerstand;
    }

    public void setKilometerstand(int kilometerstand) {
        this.kilometerstand = kilometerstand;
    }

    public double getTankinhalt() {
        return tankinhalt;
    }

    public void setTankinhalt(double tankinhalt) {
        this.tankinhalt = tankinhalt;
    }

    public double getVerbrauchProKm() {
        return verbrauchProKm;
    }
}

Mit diesen kannst du jetzt in deiner Besitzer Klasse mittels deiner meinRoller Instanz Variable auf die Attribute zugreifen bzw diese ändern:

Java:
public class Besitzer {
    private Roller meinRoller;

    public void fahreDeinenRoller(int pStrecke) {
        if (meinRoller.getKilometerstand() >= pStrecke *
                meinRoller.getVerbrauchProKm()) {
            int kilometerstand = meinRoller.getKilometerstand() + pStrecke;
            meinRoller.setKilometerstand(kilometerstand);
            double tankinhalt =
                    meinRoller.getTankinhalt() -
                            pStrecke * meinRoller.getVerbrauchProKm();
            meinRoller.setTankinhalt(tankinhalt);
        } else {
            System.out.println(
                    "Der Tankinhalt ist zu niedrig. Du musst erst tanken.");
        }
    }
}

Ob das jetzt alles sinn macht weiß ich nicht, ich habe deinen Code einfach umgesetzt. Versuch den Code mal in ruhe nachzuvollziehen.
 
Beste Antwort
BTW: Besser als einfach stumpfe Getter/Setter sind meinst sinnvolle Methoden.
Zum Beispiel könnte man auch dem Roller eine fahre(Kilometer)-Methode spendieren. Der „Fahrer“ muss dann nicht mehr wissen, das ganze berechnet wird, und die Methode im Roller sieht deutlich schöner aus als die bisherige Methode 🙂

Edit: Oder um das mal anders zu motivieren: wenn du Roller fährst, guckst du dann in den Tank, planst wie viele Kilometer Du fährst, und rechnest das zusammen und zapfst das dann aus dem Tank ab?
Oder fährst du halt einfach und der Tank ist danach einfach leerer?
 
Du müsstest in der Roller Klasse Getter und Setter anlegen
In etwa so:

Java:
public class Roller {
   
    private int kilometerstand;
    private double tankinhalt;
    private double verbrauchProKm = 0.01;

    public Roller(int kilometerstand, double tankinhalt,
                  double verbrauchProKm) {
        this.kilometerstand = kilometerstand;
        this.tankinhalt = tankinhalt;
        this.verbrauchProKm = verbrauchProKm;
    }

    public int getKilometerstand() {
        return kilometerstand;
    }

    public void setKilometerstand(int kilometerstand) {
        this.kilometerstand = kilometerstand;
    }

    public double getTankinhalt() {
        return tankinhalt;
    }

    public void setTankinhalt(double tankinhalt) {
        this.tankinhalt = tankinhalt;
    }

    public double getVerbrauchProKm() {
        return verbrauchProKm;
    }
}

Mit diesen kannst du jetzt in deiner Besitzer Klasse mittels deiner meinRoller Instanz Variable auf die Attribute zugreifen bzw diese ändern:

Java:
public class Besitzer {
    private Roller meinRoller;

    public void fahreDeinenRoller(int pStrecke) {
        if (meinRoller.getKilometerstand() >= pStrecke *
                meinRoller.getVerbrauchProKm()) {
            int kilometerstand = meinRoller.getKilometerstand() + pStrecke;
            meinRoller.setKilometerstand(kilometerstand);
            double tankinhalt =
                    meinRoller.getTankinhalt() -
                            pStrecke * meinRoller.getVerbrauchProKm();
            meinRoller.setTankinhalt(tankinhalt);
        } else {
            System.out.println(
                    "Der Tankinhalt ist zu niedrig. Du musst erst tanken.");
        }
    }
}

Ob das jetzt alles sinn macht weiß ich nicht, ich habe deinen Code einfach umgesetzt. Versuch den Code mal in ruhe nachzuvollziehen.

Vielen Dank!!!
 
Danke für den Tipp!
BTW: Besser als einfach stumpfe Getter/Setter sind meinst sinnvolle Methoden.
Zum Beispiel könnte man auch dem Roller eine fahre(Kilometer)-Methode spendieren. Der „Fahrer“ muss dann nicht mehr wissen, das ganze berechnet wird, und die Methode im Roller sieht deutlich schöner aus als die bisherige Methode 🙂

Edit: Oder um das mal anders zu motivieren: wenn du Roller fährst, guckst du dann in den Tank, planst wie viele Kilometer Du fährst, und rechnest das zusammen und zapfst das dann aus dem Tank ab?
Oder fährst du halt einfach und der Tank ist danach einfach leerer?
 

Neue Themen


Zurück
Oben