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...
public class EineKlasse {
public void methode() {
AndereKlasse instanz = new AndereKlasse();
instanz.attribut = 4;
// ...
}
}
public class AndereKlasse {
public int attribut;
}
public class BesitzerBitte 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; }
Wie würde das dann aussehen?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?
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
}
}
Was muss ich in dieser Zeile in meinem Beispiel mit dem Roller schreiben? (z.B.: beim kilometerstand)A a = new A();
Wenn du sagst was du mit deinem Roller vor hast und den Code in Code Tags packst, kann dir das vielleicht jemand beantwortenWas muss ich in dieser Zeile in meinem Beispiel mit dem Roller schreiben? (z.B.: beim kilometerstand)
Wenn du sagst was du mit deinem Roller vor hast und den Code in Code Tags packst, kann dir das vielleicht jemand beantworten
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;
}
}
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;
}
}
meinRoller
Instanz Variable auf die Attribute zugreifen bzw diese ändern: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.");
}
}
}
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 deinermeinRoller
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.
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?