Dostęp do obiektu innej klasy

0

Siema,mam pytanie.
W ramach ćwiczeń piszę sobie okienkowy kalkulator.Chcę podzielić program na 2 pliki.W pierwszym pliku Main znajduje się klasa odpowiedzialna za tworzenie buttonów z cyframi,znakami działań i polem do wyświetlania wprowadzanych liczb oraz wyników.
W drugiej klasie chciałem stworzyć cały mechanizm wykonywania działań,tylko że nie wiem jak uzyskać dostęp do pola tekstowego z klasy Main aby pobrać z niego dane do wykonywania operacji matematycznych.
Wiecie może jak to zrobić?

0

Jeżeli robisz to dla nauki to zobacz sobie przy okazji wzorzec projektowy MVC, może Ci się przydać. Najprościej będzie jak będziesz w drugiej klasie miał referencję do tej pierwszej.

1

Wiemy, konstruując (w klasie Main) obiekt tej drugiej klasy przekaż referencję do klasy Main.

new DrugaKlasa(this);
0

Dzięki za odpowiedzi.
Nie bardzo tylko wiem jak przekazać tę referencję.

Mam to zrobić w konstruktorze klasy Main?

0

Konstruktor klasy Main to dobre miejsce.

0

Czyli to będzie coś takiego? (Moja druga klasa nazywa się obliczenia,a pole z tekstem po prostu pole).

public JTextField pole = new JTextField(20);

Main()
{
  obliczenia obliczenia = new obliczenia(pole);
}

obliczenia(JTextField pole)
{

}
0

Jeśli klasie Obliczenia (przestrzegaj konwencji, nazwy klas zaczynają się dużą literą) wystarczy dostęp do jednego pola tekstowego z klasy Main można prościej:

class Obliczenia
{
     void policz(JTextField pole)
     {
        ...
     }
}
//w konstruktorze klasy Main
    liczydło = new Obliczenia();
//w obsłudze przycisku
   liczydlo.policz(pole);
}

Gdybyś potrzebował dostępu do kilku pól (komponentów), to musiałoby by być trochę inaczej

//w konstruktorze klasy Main
   liczydlo =  new Obliczenia(this);
//w definicji i konstruktorze klasy Obliczenia
class Obliczenia
{
     private Main owner = null;
     public Obliczenia(Main owner)
     {
         this.owner = owner;
         ...
    void policz()
    {
        //korzystając z referencji owner, odczytujemy i zapisujemy w komponentach klasy Main
    } 
...
//w obsłudze zdarzenia w klasie Main
   liczydlo.policz();
0

Dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1