Jak zrobić ciągłe pobieranie wartości zmiennej?

0

Witam,
mam problem... już od dłuższego czasu... mam PRAWIE gotowy program, ale brakuje mi jednego tyci elementu... mianowicie:
Jest tablica zmiennych, której zawartość się często zmienia (co sekundę na przykład)... w każdym momencie działania programu (powiedzmy co sekundę) muszę mieć możliwość wyciągnięcia wartości danej komórki (po czym będę mógł tę wartość przerobić na to co mi potrzebne).
Kolejnym krokiem jest zrobienie tego dla większej ilości komórek (dokładnie 64) więc potrzebna jest mi metoda która nie wymaga klepania linia-po-linii.
Czego muszę do tego użyć?
Czy istnieje jakiś listener, który by to rozwiązał?
Czy muszę robić to za pomocą wątków? [jeżeli tak to jak?... dotychczasowe kombinacje mi nie pomogły]

0

Oj... zła praktyka... choć pomysł prawie dobry :)

  1. tablica może być polem statycznym. Wtedy będzie można się do niej odwołać
NazwaKlasy.tablica[pozycja]

ale wszytkie obiekty będą współdzieliły tą tablicę.

Poczytaj o wzorcu obserwator.

Generalnie robisz tak.

Definiujesz sobie klasę, która zawiera tablicę i ma metodę do pobierania i usuwania danych:

class A{
   int[] tablica = new int[64];

   public void set(int pos, int val){
      tablica[pos]=val;
   }

   public int get(int pos){
       return tablica[pos];
   }
}

teraz masz już dobry początek ponieważ zmieniając metody nie musisz już nic zmieniać w reszcie kodu.
Niech każdy obiekt, którry chciałby wiedzieć o zmianie stanu naszej tablicy implementuje interfejs:

interface Obserwator{
    public void zmiana();
}

class Zainteresowany implements Obserwator{
   public void zmiana(){
     // kod wykonywany jezeli następuje zmiana 
   }
}

a nasza klasa będzie miała dodatkowe pole obserwatorzy i metody dodajObserwatora() i usunObserwatora() oraz zmienioną metodę set:

class A{
   //...

   private List<Obserwator> obserwatorzy = new LinkedList<Obserwator>();

   public void dodajObserwatora( Obserwator o){
      obserwatorzy.add(o);
   }
   public void usunObserwatora( Obserwator o){
      obserwatorzy.remove(o);
   }

   public void set(int pos, int val){
      tablica[pos]=val;
      for(Object o : l)
         o.zmiana();
   }
}

i tle w skrócie :)

0

Ahh,
dokładnie czegoś takiego potrzebowałem, ALE... moja "wybitna" umiejętność programowania obiektowego (i nie tylko...) uniemożliwia mi wprowadzenie tego... używanie 2 klas dla całego programu jest złe...
Jeżeli będę ten projekt kontynuował to na pewno zrobię z obserwatorów użytek ^^
Póki co poszedłem na łatwiznę i zrobiłem przycisk "Update", którym ręcznie sie aktualizuje toto...
Dziękuję za pomoc i pozdrawiam
SSD

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