Von einer Methode eines Objektes auf Attribut eines Objektes anderer Klasse zugreifen

ITrun90

Mitglied
Hey,

Ich habe 2 verschiedene Klassen. Muellmann und Tonne
mit den Objekten Hans:Muellmann, Papier:Tonne
die beiden Klassen sind über eine Assoziation miteinander verbunden.

in der Methode von Papier:Tonne kann ich wie folgt auf eine Methode von Hans:Muellmann zugreifen:

Java:
this.getMuellmann().methode();

Wenn ich aber auf ein ATTRIBUT zugreifen will klappt das so nicht:

Java:
this.getMuellmann().getAttribut();

Wie kann ich denn nun auf das Attribut zugreifen?
 
Die Fehlermeldung ist folgende:


cannot find symbol
symbol : variable getName
location: class Muellmann

Er denkt getName sei eine Variable, dabei ist es ein Attribut.

Um es leichter zu verstehen habe ich mein Problem leichter dar gestellt, wenn ich nun die Klassen poste muss ich weiter ausholen.

Habe eine Methode in der Klasse MuellKunde, die Methode heisst fuellen():void
das ist der Qeullcode:



Java:
public class MuellKunde extends Mensch
{

    public void fuellen ()
   {

      int zahl = (int)(Math.random()*30+1);
      int muellvorher = this.getTonne().count(zahl);
      int muellnachher = muellvorher + zahl;
      System.out.println(this.getName() + ": Ich habe Mülltonne mit " + zahl + " MüllEinheiten gefüllt");

      System.out.println("--> Die "+this.getTonne().getName+"mülltonne ist nun mit " + muellnachher + " Mülleinheiten gefüllt");
      System.out.println("");
      if (muellnachher>50)
      {
         System.out.println("Tonne ist voll");
         System.out.println("Müllmann kommt");
         this.getMuellmann().TonneLeeren();


      }
      else
      {
         fuellen();

      }return ;

   } // end CodeGen2 generated method 
   /**
    * <pre>
    *           1     Kunde     1 
    * Muellabfur ------------------------- MuellKunde
    *           muellabfur      muellKunde
    * </pre>
    */
   public static final String PROPERTY_MUELLABFUR = "muellabfur";
    
   @Property( name = PROPERTY_MUELLABFUR, partner = Muellabfur.PROPERTY_MUELL_KUNDE, kind = ReferenceHandler.ReferenceKind.TO_ONE,
         adornment = ReferenceHandler.Adornment.NONE)
   private Muellabfur muellabfur;

   @Property( name = PROPERTY_MUELLABFUR )
   public boolean setMuellabfur (Muellabfur value)
   {
      boolean changed = false;

      if (this.muellabfur != value)
      {
         
         Muellabfur oldValue = this.muellabfur;
         MuellKunde source = this;
         if (this.muellabfur != null)
         {
            this.muellabfur = null;
            oldValue.setMuellKunde (null);
         }
         this.muellabfur = value;

         if (value != null)
         {
            value.setMuellKunde (this);
         }
         changed = true;
         
      }
      return changed;
   }

   @Property( name = PROPERTY_MUELLABFUR )
   public Muellabfur getMuellabfur ()
   {
      return this.muellabfur;
   }
   /**
    * <pre>
    *           1     Ruft     1 
    * Muellmann ------------------------- MuellKunde
    *           muellmann      muellKunde
    * </pre>
    */
   public static final String PROPERTY_MUELLMANN = "muellmann";
    
   @Property( name = PROPERTY_MUELLMANN, partner = Muellmann.PROPERTY_MUELL_KUNDE, kind = ReferenceHandler.ReferenceKind.TO_ONE,
         adornment = ReferenceHandler.Adornment.NONE)
   private Muellmann muellmann;

   @Property( name = PROPERTY_MUELLMANN )
   public boolean setMuellmann (Muellmann value)
   {
      boolean changed = false;

      if (this.muellmann != value)
      {
         
         Muellmann oldValue = this.muellmann;
         MuellKunde source = this;
         if (this.muellmann != null)
         {
            this.muellmann = null;
            oldValue.setMuellKunde (null);
         }
         this.muellmann = value;

         if (value != null)
         {
            value.setMuellKunde (this);
         }
         changed = true;
         
      }
      return changed;
   }

   @Property( name = PROPERTY_MUELLMANN )
   public Muellmann getMuellmann ()
   {
      return this.muellmann;
   }
   /**
    * <pre>
    *           1     Hat     1 
    * Tonne ------------------------- MuellKunde
    *           tonne      muellKunde
    * </pre>
    */
   public static final String PROPERTY_TONNE = "tonne";
    
   @Property( name = PROPERTY_TONNE, partner = Tonne.PROPERTY_MUELL_KUNDE, kind = ReferenceHandler.ReferenceKind.TO_ONE,
         adornment = ReferenceHandler.Adornment.NONE)
   private Tonne tonne;

   @Property( name = PROPERTY_TONNE )
   public boolean setTonne (Tonne value)
   {
      boolean changed = false;

      if (this.tonne != value)
      {
         
         Tonne oldValue = this.tonne;
         MuellKunde source = this;
         if (this.tonne != null)
         {
            this.tonne = null;
            oldValue.setMuellKunde (null);
         }
         this.tonne = value;

         if (value != null)
         {
            value.setMuellKunde (this);
         }
         changed = true;
         
      }
      return changed;
   }

   @Property( name = PROPERTY_TONNE )
   public Tonne getTonne ()
   {
      return this.tonne;
   }

   public void removeYou()
   {
      this.setMuellabfur (null);
      this.setMuellmann (null);
      this.setTonne (null);
      super.removeYou();
   }
}

Und eine KLasse Tonne, welche ein Attribut Name besitzt, den Wert dieses Attributes brauche ich in der Methode der Klasse Muellmann, hier der code von Tonne:


Java:
public class Tonne
{
    
   public static final String PROPERTY_MENGE = "Menge";

   @Property( name = PROPERTY_MENGE, kind = ReferenceHandler.ReferenceKind.ATTRIBUTE )
   private int Menge;

   @Property( name = PROPERTY_MENGE )
   public void setMenge (int value)
   {
      this.Menge = value;
   }

   @Property( name = PROPERTY_MENGE )
   public int getMenge ()
   {
      return this.Menge;
   }
    
   public static final String PROPERTY_NAME = "Name";

   @Property( name = PROPERTY_NAME, kind = ReferenceHandler.ReferenceKind.ATTRIBUTE )
   private String Name;

   @Property( name = PROPERTY_NAME )
   public void setName (String value)
   {
      this.Name = value;
   }

   @Property( name = PROPERTY_NAME )
   public String getName ()
   {
      return this.Name;
   }

    public int count ( int menge)
   {

      int ret = getMenge();
      if (menge==100){
      setMenge(this.getMenge() - 50);
      }else
      {
      setMenge( getMenge() + menge);
      }
      return ret;

   } // end CodeGen2 generated method 
   /**
    * <pre>
    *           1     Leert     1 
    * Muellmann ------------------------- Tonne
    *           muellmann      tonne
    * </pre>
    */
   public static final String PROPERTY_MUELLMANN = "muellmann";
    
   @Property( name = PROPERTY_MUELLMANN, partner = Muellmann.PROPERTY_TONNE, kind = ReferenceHandler.ReferenceKind.TO_ONE,
         adornment = ReferenceHandler.Adornment.NONE)
   private Muellmann muellmann;

   @Property( name = PROPERTY_MUELLMANN )
   public boolean setMuellmann (Muellmann value)
   {
      boolean changed = false;

      if (this.muellmann != value)
      {
         
         Muellmann oldValue = this.muellmann;
         Tonne source = this;
         if (this.muellmann != null)
         {
            this.muellmann = null;
            oldValue.setTonne (null);
         }
         this.muellmann = value;

         if (value != null)
         {
            value.setTonne (this);
         }
         changed = true;
         
      }
      return changed;
   }

   @Property( name = PROPERTY_MUELLMANN )
   public Muellmann getMuellmann ()
   {
      return this.muellmann;
   }
   /**
    * <pre>
    *           1     Hat     1 
    * MuellKunde ------------------------- Tonne
    *           muellKunde      tonne
    * </pre>
    */
   public static final String PROPERTY_MUELL_KUNDE = "muellKunde";
    
   @Property( name = PROPERTY_MUELL_KUNDE, partner = MuellKunde.PROPERTY_TONNE, kind = ReferenceHandler.ReferenceKind.TO_ONE,
         adornment = ReferenceHandler.Adornment.NONE)
   private MuellKunde muellKunde;

   @Property( name = PROPERTY_MUELL_KUNDE )
   public boolean setMuellKunde (MuellKunde value)
   {
      boolean changed = false;

      if (this.muellKunde != value)
      {
         
         MuellKunde oldValue = this.muellKunde;
         Tonne source = this;
         if (this.muellKunde != null)
         {
            this.muellKunde = null;
            oldValue.setTonne (null);
         }
         this.muellKunde = value;

         if (value != null)
         {
            value.setTonne (this);
         }
         changed = true;
         
      }
      return changed;
   }

   @Property( name = PROPERTY_MUELL_KUNDE )
   public MuellKunde getMuellKunde ()
   {
      return this.muellKunde;
   }

   public void removeYou()
   {
      this.setMuellmann (null);
      this.setMuellKunde (null);
   }
}
 
Vergess bei Methoden nicht die ().

Du hast in deiner Klasse Tonne die Methode "String getName()" deklariert. Du versuchst sie auch aufzurufen, aber this.getTonne().getName + "Dummy"; funktioniert nicht, wenn schon this.getTonne().getName().
 

Zurück
Oben