Klassenfremde Laufvariable benutzen?

Status
Nicht offen für weitere Antworten.

Paci

Mitglied
Hallo!
Hab folgendes Problem:

Ich möchte mehrere Objekte einer Klasse erstellen. Diese Objekte sollen allerdings eine Laufvariable aus einer Verwaltungsklasse zur Nummerierung bekommen. Ich hab jetzt das Problem, dass ich die Laufvariable nicht aus der Verwaltungsklasse rausbekomme...kann mir da jemand helfen?

Den Code hab ich hier gepostet:
http://www.java-forum.org/de/viewtopic.php?p=208417#208417

MfG,

-Paci
 

PyroPi

Aktives Mitglied
Hi,

wenn deine Lufnummer ohnehin schon statisch in der Verwaltungsklasse ist, kannst du sie auch in die Konto-Klasse ziehen und dort als statische Variable anlegen. Dann könntest du dir die Verwaltungsklasse nämlich ganz sparen (wenn sie nicht noch für was anderes gebraucht wird). setLaufnummer() würde ich dann als statische Methode in der Konto-Klasse anlegen, falls der Wert der Laufvariablen noch von außen gesetzt werden soll.

Viele Grüße,

PyroPi
 
Hi,
ich glaube dein eigentliches Problem liegt weniger in der OOP als viel mehr im Verständnis. Wie hier schon gesagt wurde, hat es was mit statischen Methoden/Variablen zu tun.
Ich gehe an dieser Stelle davon aus, dass du diese nicht komplett verstanden hast. Etwas statisches ist innerhalb der Klasse mit einer "festen" Stelle im Speicher verknüpft. Bei nicht statischen Variablen wird mit für jede Instanz der Klasse ein eigener Speicherbereich reserviert.
Eine (imho unschöne) Lösung ist es, dass du einfach deine Verwaltung statischer machst. Du kannst dir die statische Methode getLaufnummer anlegen :

Code:
class VVerwaltung 
{ 
   static int laufnummer = 0; 
   
   public static int getLaufnummer() 
   {       
      VVerwaltung.laufNummer++;

      System.out.println ("Die Laufnummer lautet " + VVerwaltung.laufNummer); 

      return VVerwaltung.laufNummer++; 
   } 

} 
   
class DKonto 
{ 
  ...
   
   public int nummergetter() 
   { 
      return  VVerwaltung.getLaufNummer(); 
   }
}

Ok, wie du hier siehst habe ich deine Methode nummerGetter stehen gelassen. Schließlich wollen wir ja abstrakt arbeiten und letztlich kann sich ja die Implementierung auch mal ändern. Statische Variablen und Methoden sind aber (völlig zurecht) immer so eine Sache!
Du hast gleich zwei Möglichkeiten, das ganze anders zu lösen. Die eine Möglichkeit besteht darin, dass du dir ein Singleton Pattern für die Verwaltung implementierst. Hierbei würdest du immer die gleiche Instanz zurück geben. Diese kann dann die Laufzahl hochzählen. Die Instanz, die zurückgegeben würde, wäre dabei natürlich immer statisch :wink:
Die andere Möglichkeit ist es, dass du dir einen Konstruktor schreibst, der eine Instanz von VVerwaltung entgegen nimmt.

Code:
class DKonto 
{    
   int saldo; 
   String inhaber; 
   int kontoNr; 
   int b; 
   int laufNummer;
    
   public DKonto (int saldo, String inhaber, final VVerwaltung verwaltung) //Kontenklasse 
   {
      if (verwaltung != null) {
        this.laufNummer = verwaltung.getLaufnummer();
      }

      ...
   }
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben