OOP Von mehreren Klassen aus auf das selbe Objekt zugreifen

crasher787

Mitglied
Mein Frage ist die folgenden, ich habe ein Objekt würfel in einer Klasse x erstellt, jetzt bin ich nun auf das Problem gestoßen, dass ich auf das Objekt gerne noch von einer anderen Klasse y zugreifen will, leider habe ich keine Ahnung wie das gehen soll und auch Google hat keine für mich hilfreiche Antwort geliefert.
Schon mal im voraus vielen Dank für die hoffentlich hilfreichen Antworten.
MFG Crasher787

Hier falls es hilft die Klasse des Objekts

Java:
public class würfel {
    private int breite;
    private int höhe;
    private int länge;
   
    private int xPosition;
    private int yPosition;

   
    public würfel(int breite, int länge, int höhe, int xPosition, int yPosition){
        breite = this.breite;
        höhe = this.höhe;
        länge = this.länge;
       
        xPosition = this.xPosition;
        yPosition = this.yPosition;
    }


    public würfel(){
       
    };
   
   
    //Getter und Setter
   
    public int getbreite(){
        return breite;
    }
    public void setbreite(int breite){
        this.breite = breite;
    }
   
    public int getlänge(){
        return länge;
    }
    public void setlänge(int länge){
        this.länge = länge;
    }

    public int gethöhe(){
        return höhe;
    }
    public void sethöhe(int höhe){
        this.höhe = höhe;
    }
   
    public int getxPosition(){
        return xPosition;
    }
    public void setxPosition(int xPosition){
        this.xPosition = xPosition;
    }
   
    public int getyPosition(){
        return yPosition;
    }
    public void setyPosition(int yPosition){
        this.yPosition = yPosition;
    }
}
 
Da gibt es mehrere Mittel und Wege. Das ganze hängt u.a. davon ab was du am Ende erreichen willst bzw. wie deine Struktur momentan ist.
Um das Ganze mal an einem Beispiel zu erklären:

Wir haben folgende Klassen Würfel, A und B.
Wenn du jetzt in A ein Objekt von Würfel und von Klasse B erstellst, kannst du Würfel deinem B-Objekt einfach mitgeben.

Im Coden gesprochen würde das dann so aussehen:
Java:
public class Wuerfel {
     ......
}

public class A {
      public A() {
            Wuerfel wuerfel = new Wuerfel();
            B  b = new B(wuerfel);
      }
}

public class B {
       public B(Wuerfel wuerfel) {
             // mach was mit wuerfel
       }
}

Wenn du weißt, dass es in deinem gesamten Projekt nur ein Würfel-Objekt geben soll und jede Klasse mit dem selben Objekt arbeiten soll könntest du dir mal das Singleton Pattern anschauen.
 
Um das Ganze mal an einem Beispiel zu erklären
Hallo, ich bin durch Zufall auf diesen Thread gestoßen und mich interessiert brennend wie Ihr Beispiel funktionieren soll, also was genau passiert, wenn man einem Objekt ein anderes übergibt. Ich habe auch das Problem, dass ich auf Variablen, die in einer anderen Klasse liegen nicht zugreifen und miteinander verrechnen kann. Da dieser Thread schon alt ist möchte ich erst einmal anfragen. Auf Wunsch liefere ich gerne meinen Code.
 
Hallo, ich bin durch Zufall auf diesen Thread gestoßen und mich interessiert brennend wie Ihr Beispiel funktionieren soll, also was genau passiert, wenn man einem Objekt ein anderes übergibt. Ich habe auch das Problem, dass ich auf Variablen, die in einer anderen Klasse liegen nicht zugreifen und miteinander verrechnen kann. Da dieser Thread schon alt ist möchte ich erst einmal anfragen. Auf Wunsch liefere ich gerne meinen Code.
Es ist eigentlich ganz einfach. Wenn ein Objekt ein anderes Objekt benötigt, dann sollte dies in der Regel als Parameter einer Methode oder des Konstruktors übergeben werden.
Java:
class Foo {
   
    private int value;
   
    public Foo(int value) {
        this.value = value;
    }
   
    public int getValue() {
        return value;
    }
}

class Bar {
   
    private Foo foo;
    
    // Variante 1: Übergabe im Konstruktor   
    public Bar(Foo foo) {
        this.foo = foo;
    }
   
    public void doSomething() {
        int value = foo.getValue();
        // mehr Code
    }

    // Variante 2: Übergabe als Parameter einer Methode
    public void doSomethingElse(Foo foo) {
        int value = foo.getValue();
        // mehr Code
    }
}

// z. B. in der main()

Foo foo = new Foo(42);

Bar bar = new Bar(foo); // Objekt wird übergeben und kann von bar verwendet werden
bar.doSomething();

Foo foo2 = new Foo(14);
bar.doSomethingElse(foo2);
 
Zuletzt bearbeitet:
Moment mal! Class Foo ist also die Startklasse, Class Bar bekommt Foo. Private Foo foo; ... Ist das nicht wie String string? Jetzt kommts wieder. String ist doch auch eine Klasse? Also gleiches Prinzip?
Bei der Variante2: int value kopiert den Wert von foo.getValue() erst dann kann etwas gemacht werden.
Habe ich das so richtig verstanden?
Bar bar = new Bar(foo); // Objekt wird übergeben und kann von bar verwendet werden bar.doSomething();
Ist diese Variante ausschließlich für die main-Methode oder auch für andere Klassen gültig?
 
Ist das nicht wie String string?
Ja. Stell dir eine Klasse ganz einfach wie einen Datentypen vor. Ob das String, Auto oder MyDocument ist, ist egal. Es gilt nur einen Unterschied zwischen den primitiven Datentypen und den Referenz-Datentypen (Klassen) zu machen, weil die sich anders verhalten und zusätzlich neben Daten auch Verhalten (durch Methoden) bereitstellen.

Bei der Variante2: int value kopiert den Wert von foo.getValue() erst dann kann etwas gemacht werden.
Habe ich das so richtig verstanden?
Eine Instanz von Foo wird als Parameter an die Methode übergeben. In der Methode wird das foo dann verwendet, indem darauf eine Methode von Foo aufgerufen wird. Mit dem erhaltenen Rückgabewert kann die Methode von Bar dann weiter arbeiten. Ein eingängigeres Beispiel wäre, wenn eine Adresse als Parameter übergeben würde und daraus Informationen (Plz, Ort) abgerufen werden, um z. B. eine Ausgabe zu machen.
 
Zuletzt bearbeitet:

Zurück
Oben