Zapisywanie wyniku w metodzie

0

Witam,
Tworzę swoją pierwszą prostą aplikację mobilną i chciałbym aby przy otwieraniu nowej aktywności wynik powiększał się o 100.
Posiadam trzy proste klasy. W jednej zamieściłem prostą metodę która zwiększa jedną zmienną o wartość 100.
W drugiej i trzeciej klasie po prostu je wywołuje.
I tu zaczyna się problem:
Gdy wywołuję metodę w drugiej klasie wynik=200, czyli OK.
Natomiast przy wywoływaniu metody w trzeciej klasie wynik nadal jest 200, a chcę aby wynosił już 300.
Czy jest jakiś sposób który nadpisałby wartość w metodzie zwiększania po wywołaniu jej z innych klas ? Próbowałem bawić się referencjami, tablicami, dawałem metodę typu void, lecz dalej ciągle wynik wynosi 100.

Pozdrawiam

 
public class Punktacja {

   static int zmien(int wynik)
   {
       
       wynik=wynik+100;
       return wynik;
        }

}




public class KlasaDruga extends AppCompatActivity {

int wynik;

    protected void onCreate(Bundle savedInstanceState) 
    {
                Punktacja punkt = new Punktacja();
                wynik=punkt.zmien(100);
                t1.setText("Punktacja wynosi :"+wynik) ;
     }
}




public class KlasaTrzecia extends AppCompatActivity {

int wynik;

    protected void onCreate(Bundle savedInstanceState) 
    {
	
                Punktacja punkt = new Punktacja();
                wynik=punkt.zmien(100);
                t1.setText("Punktacja wynosi :"+wynik) ;
     }
}

1

Wywołujesz metodę zmien(100) dla dwóch różnych obiektów Punktacja, dlatego wydaje Ci się, że wynik się nie zmienia. Zmienia się, ale dla dwóch różnych obiektów. Dla każdego raz o 100.

Stwórz czwartą klasę, w której będziesz miał prywatną instancję obiektu Punktacja i modyfikuj jej wartość przy pomocy settera z poziomu KlasaDruga i KlasaTrzecia za pośrednictwem referencji do obiektu typu klasy czwartej, np.:

public class DataModel {

    private Punktacja punktacja;

    public DataModel(Punktacja punktacja) {
        this.punktacja = punktacja;
    }

    public void setPunktacja(Punktacja punktacja) {
        this.punktacja = punktacja;
    }

    public Punktacja getPunktacja() {
        return this.punktacja;
    }
}

...możesz też odpowiednio zmodyfikować konstruktory dla KlasaDruga i KlasaTrzecia, aby miały dostęp do referencji wskazującej na obiekt DataModel.

public class Main {

    public static void main(String[] args) {

        DataModel dataModel = new DataModel(new Punktacja());

        KlasaDruga klasaDruga = new KlasaDruga(dataModel);
        KlasaTrzecia klasaTrzecia = new KlasaTrzecia(dataModel);
    }
}
...
public class KlasaDruga /* i KlasaTrzecia */ extends AppCompatActivity {

    int wynik;
    DataModel dataModel;

    public KlasaDruga(DataModel dataModel) {
        this.dataModel = dataModel;
    }

    protected void onCreate(Bundle savedInstanceState) {
 
        dataModel.setPunktacja(new Punktacja(100))
        t1.setText("Punktacja wynosi : " + dataModel.getPunktacja().getValue()) ;
     }
}

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