[Problem] Events

Status
Nicht offen für weitere Antworten.

DerSchwarzeSchlumpf

Neues Mitglied
hi :)

ich progge gerade mein 1. java programm mit events und hab da scheinbar ein "kleines" verständnisproblem. also, das grundprinzip von observer/observable ist mir ja eigentlich klar... . ABER! wie ich ich im main die einzelnen objekte als observer regestriere... .

der sinn ist, dass ich eine "wörte-zähler"-funktion in ein programm implimentieren muss. wenn ich jetzt nach der reihe über die comand-line eingebe "star wars" "the return of star wars" soll er ausgeben:
star: 2
wars: 2
the: 1
of: 1

von der idee her:
ich hab ein objekt "wordindex" das das wort als string und die anzahl speichert. hab die nötigen methoden auch schon (set/get/word/count/decrease/proofIfExisting usw). es soll auch möglich sein, einzelne sätze wieder zu löschen (die gespeicherten löscht er mir schon nur jetzt muss er über einen event auch noch die einzelnn wörter runterzählen was ja eigentlich gleich wie das raufzählen funktioniern sollte). und ja es ist egal wenn jetzt bei einem wort 0 drinsteht und das noch in der liste ist :)

das problem ist aber, dass ich das wie erwähnt jetzt über events machen muss.

ich hab einen "WordIndexChangeEvent" gemacht. der schaut so aus:

Code:
class WordsIndexChangeEvent 
{
  //die 2 möglichkeiten die passiern können
  public static final int ADD = 0;
  public static final int DELETE = 1;

  //was passiert ist und das argument
  private int type_;
  private String arg_;

  //Constructor, Get/Set Methoden udgl.
};

Die Wörter speicher ich in diesem Objekt:

Code:
class WordsIndex
{
   private String word_;
   private int count_;

  //Methoden
};

dann hab ich noch den Wrapper angelegt der die einzelnen WordsIndex in einer ArrayList speichert und darauf zugreifen kann

Code:
class WordsIndexWrapper extends Observable
{
  private ArrayList words_;

  public WordsIndexWrapper()
  {
    words_ = new ArrayList();
  }

  public void output();
  public boolean isWordExisting(String word);
  public void addNewWord(String word);
  public void addCount(String word);  
  public int getCount(String word);
};

und dann das was er tun soll wenn es passiert

Code:
class WordsIndexModul implements Observer
{
  
  public void update(Observable observable, Object arg)
  {
     WordsIndexWrapper words_index = (WordsIndexWrapper) observable;
        
    WordsIndexChangeEvent event = (WordsIndexChangeEvent) arg;
  
    switch(event.getType())
    {
     case WordsIndexChangeEvent.ADD:
     {
       String word = (String) event.getArg();
       boolean still_existing = words_index.isWordExisting(word);
       
       if(still_existing == true)
       {
         words_index.addCount(word);
       }
       else
       {
         words_index.addNewWord(word);
       }
      break;
      }
     case WordsIndexChangeEvent.DELETE:
     { 
       String word = (String) event.getArg();
       
       words_index.removeCount(word);
       break;
     } 
      
    default:
      break;      
    }
  } 
}

vom Verständnis her: ich generiere das change-event.DELETE wenn ich etwas lösche und das .ADD wenn ich eine linie hinzufüge - klar. aber ich hab jetzt stundenlang rumprobiert und er stürzt mir jedesmal ab wenn ich bei update() den 1. Cast auf WordsIndexWrapper mache.

Ich glaub ich hab nicht wirklich verstanden, wer jetzt wen überwacht. Der Wrapper überwacht das Input-Modul, oder? Und wenn ich einen Input mache generier ich dort das Event, mach notify(event) und es springt ins update rein, oder? Aber wie binde ich dann das WordsIndexModul (wo die einzelnen WordIndex-Objekte gespeichert sind) da ein? Das müsste ich doch als Argument übergeben, aber wie?

Zusätzliche Module sind noch:
Input => Hier müsste dann das change-event.ADD-Event ausgelöst werden
Main => Hier müsste bei der entsprechenden Benutzereingabe das change-event.DELETE ausgelöst werden.

Hat jemand eine Hilfe? Wär echt super... :)

lg chris

EDIT: was mir gerade eingefallen ist: klar, als string-argument wird her die komplette eingabe übergeben, wo ich noch in einer for-schleife die einzelnen tokens rausfiltern muss, aber das ist nicht das problem :)
 
B

bygones

Gast
Das Observable ist derjenige, der, wenn was bei ihm was passiert alle Wächter (Observer) benachrichtigt, damit die sie Änderungen updaten.

In deinem Fall hieße das. dass die Liste etwas macht und das Modul es dann anzeigt.

Soviel ich übersehen kann - vermischt du das ganze aber. Das Modul reagiert auf Änderungen (woher kommen die ?) und sagt dann der Liste was zu tun ist... somit vermischt du wieder Oberserver und Observable...

Das Modul ist eigentlich das Ende der EventKette, d.h. es zeigt nur noch die Änderungen an (z.b.)...
 

DerSchwarzeSchlumpf

Neues Mitglied
hmmm ja da vermisch ich glaub ich wirklich etwas... . also so wie ich das jetzt verstanden hab:

Ich hab ein Objekt WordIndex. Diese speichere ich alle in einer ArrayList im Objekt WordIndexWrapper. Da hab ich dann alle Methoden die ich brauche und dieses Objekt müsste dann ja upgedated werden somit ist der ja der Observer, oder?

Im Input-Modul wird ein event.ADD generiert. Wo muss ich das Input-Modul einbinden damit das ganze funktioniert?

Mein Problem ist dass ich die updateFunktion im WordsIndexModul hab. Das benötigt als Parameter für das "update()" aber ja das WordIndexWrapper-Objekt und natürlich den Event?

Das Problem ist jetzt wie ich das in Source fasse *verwirrt bin* hmm *g*
 
B

bygones

Gast
ich bin der meinung, dass du diese Wrapper Klasse eigentlich in dieser Form gar nicht brauchst, da die ArrayListe die sie speichert schon alle Methoden bietet, die du in dieser Klasse definierst...

Im allgemeinen ist die Model Klasse (also bei dir WordIndex) das Observable... Sobald jemand (eine Klasse oder sich selbst) etwas am Zustand des Models ändert, werden alle Observer benachrichtigt, um auf diese Änderung zu reagieren...

Ich muss ehrlich sagen, wenn dein programm die Command line ausliest, die Wörter zählt und dann fertig ist, halte ich das verwenden von Observern overkill....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Luk10 Problem mit vielen Timer(-Events) Java Basics - Anfänger-Themen 17
H Problem mit Events bzw. Referenzen Java Basics - Anfänger-Themen 4
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
F Problem mit Listen Java Basics - Anfänger-Themen 5
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben