Dostęp do obiektu innej klasy

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ć?

Pieter24
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 7 lat
  • Postów:90
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.

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
1

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

Kopiuj
new DrugaKlasa(this);

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
0

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

Mam to zrobić w konstruktorze klasy Main?

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Konstruktor klasy Main to dobre miejsce.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
0

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

Kopiuj
public JTextField pole = new JTextField(20);

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

obliczenia(JTextField pole)
{

}
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
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:

Kopiuj
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

Kopiuj
//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();

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
0

Dzięki

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.