# auf Attribute aus anderen Klassen zugreifen*help*



## killababe (13. Mai 2006)

Absoluter Newbiee braucht hilfe *bittenichhauen*

ok, die Frage kommt euch wahrscheinlich so unglaublich dämlich vor, aber bitte habt nachsicht....!

Ich muss eine Kontoverwaltung machen, habe dazu eine Klasse Konto angelegt mit Attributen wie nummer, inhaber, saldo.
in derselben Klasse habe ich die Methoden (mit Parametern)die auf die Attribute zurückgreifen (einzahlen:hinzuaddieren,abheben:subtrahieren etc)

so, meine Hauptverwaltung enthält ein Menü für den benutzer der zuerst angeben kann was er machen will und dementsprechend werden methoden aufgerufen die eine Benutzereingabe verlangen (wieviel Geld möchten sie einzahlen zB) und diese Eingaben als Parameter an die Methoden der Klasse Konto weitergibt.

So, funktioniert alles wunderbar....nun ist aber Aufgabenstellung: wir sollen die Attribute der Klasse Konto private deklarieren und zum einlesen und ändern getter und setter setzen....nur (verstehe ich das richtig?) ich greife NUR innerhalb der Klasse Konto auf diese Attribute zu, deswegen kratzt da kein private....

ich bekomme es nicht so hin, von der Klasse der Verwaltung auf die Attribute eines Kontos zuzugreifen
zb.

```
class Konto{
String name;
int nummer;
int saldo;
}

class Verwaltung{
Konto konto1=null;
Konto konto2=null;
Konto konto3=null;

//benutzereingabe von eingabename, eingabesaldo usw.

kann ich jetzt einfach hingehen und sagen

if (konto1==null)
konto1.name=eingabename;
konto1.saldo=eingabesaldo;
```

etc.
????

Ich will nicht den ganzen Quelltext hier reinkopieren...ich habe es mit dem Setzen der Konten versucht (ohne die anderen Methoden) und er kompiliert auch aber ich bekomm sonen Exception class not found fehler :?:  :?:  :?:  :?:


----------



## kama (13. Mai 2006)

Hallo,


```
class Konto{
 private String name;
 private int nummer;
 private int saldo;

 public void setName (String name) {
   this.name = name;
 }
 public void setNummer (int nummer) {
   this.nummer = nummer;
 }
 public void setSaldo (int saldo) {
   this.saldo = saldo;
 }

 public String getName () {
   return name;
 }
 ... // Usw. für nummer und saldo dito.
}

...

if (konto1==null) { // geschweifte Klammer nicht vergessen..
  konto1 = new Konto (); // Wichtig: eine Instanz erzeugen!
  konto1.setName (eingabename);
  konto1.setSaldo (eingabesaldo);
}
```

MfG
Karl Heinz


----------



## byte (13. Mai 2006)

Du machst die Felder von Konto private. Danach schreibst Du für jedes Feld eine Get und eine Set Methode. Von aussen kannst Du dann nur noch über diese Zugriffsmethoden auf die Felder zugreifen.


```
class Konto{
  private String name;
  private int nummer;
  private int saldo;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getNummer() {
    return nummer;
  }

  public void setNummer(int nummer) {
    this.nummer = nummer;
  }

  public int getSaldo() {
    return saldo;
  }

  public void setSaldo(int saldo) {
    this.saldo = saldo;
  }
}

class Verwaltung{
  Konto konto1=null;
  Konto konto2=null;
  Konto konto3=null;

  ...

  if(konto1 == null) {
    konto1 = new Konto();
    konto1.setName(eingabename);
    konto1.setSaldo(eingabesaldo);
  }
}
```


----------



## killababe (14. Mai 2006)

Oh Mann, vielen Dank, ihr seid echt nett!!! mir wird schon einiges klarer....

Ich muss es noch eine Stufe zurückschrauben und es zuerst ohne private Felder machen....

es kommt mir selbst schon total dämlich vor, das ist hammerviel schreibarbeit und total unübersichtlich....ich hatte es zuerst so gemacht


```
class Konto{
 String inhaber;
  int nummer;
int saldoeur;
int saldocent;

Konto (String name, int euro, int cent, int nr)

    this.inhaber=name;
    this.nummer=nr

//usw....
}

class Verwaltung{

//Menü

//Benutzereingabe
if (konto1==null){
konto1=new Konto(benutzereingabename,benutzereingabeEuro etc.)
}
```

und so quasi auch für alle anderen Anweisungen...ich habe die Benutzereingaben über Parameter in die Klasse Konto übergeben und NUR DORT überhaupt Operationen mit den Feldern/Attributen dieser Klasse durchgeführt...
und es stimmt doch, dass wenn ich innerhalb voin einer Klasse auf diese Felder zugreife, ich gar keine getter brauche um die auszulesen oder????

Tut mir voll leid, aber ich glaube irgendwo hats bei mir noch nicht *klick*gemacht....ich verstehe die einzelen Bauteile eines solchen Programms aber beim Zusammenfügern haperts noch ganz gewaltig...


----------

