Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: piccolo aiuto Observer

  1. #1
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62

    piccolo aiuto Observer

    Ciao a tutti, ho sviluppato un progetto didattico, per un esame, adesso volevo collegare la parte grafica alla parte logica con un observer, che purtroppo non ho mai usato...
    Spiegandomi meglio: praticamente diciamo che ho un oggetto logico che chiamando dei metodi risolve un problema, un esempio di un interfaccia simile potrebbe essere:
    codice:
    public interface Risolutore{
       public Map risolvi();
       public void aggiungiRegola(regola r);
       public void aggiungiPunto(punto p, valore v);
    }
    ovviamente questo è solo un esempio, ora volendo collegarlo con un observer alla GUI per interagire con l'interfaccia, sorge il problema.
    Io riuscirei a risolvere il problema facendo in modo che l'osservatore sia il un thred che implementa questa interfaccia e guarda la parte grafica, ma la teoria il modello observer dovrebbe essere il contrario quindi mi trovo di fronte ad una grande indecisone spero che qualcuno mi possa aiutare.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Non avendo specificato alcun linguaggio, come espressamente richiesto dal regolamento interno, ho tirato ad indovinare e ho spostato la discussione nel forum dedicato al linguaggio Java.

    In futuro, poni attenzione all'area in cui posti e specifica sempre il linguaggio di programmazione usato.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    Ciao, grazie anche se non sapevo dove postarlo, perchè l'utilizzo del pattern dovrebbe essere a prescindere del linguaggio, ma visto che è richiesto dal regolamento va benissimo java che il linguaggio che conosco meglio.... purtroppo ancora nessuno mi ha risposto ero contento di aver visto 1 risposta

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Questo oggetto dovrebbe essere creato dalla gui no?

  5. #5
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    Prima di tutto grazie della risposta,comunque credo (non ne sono molto sicuro) che se incorporo l'oggetto della GUI il pattern Model View Controller non ha più modo di esistere, nelle action chiamo i metodi dell'oggetto e ho finito, probabilmente la domanda la ho posta male oppure sono io che non riesco proprio a capirlo sto pattern... praticamente il principio dell'observer da applicare sarebbe che la grafica sta a guardare i cambiamenti della logica e stampa i risultati, solo che io non capisco in che modo i 2 comunicano insomma chi chiama i metodi?

    Patrick Jane aiutami tu

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Un momento... se devi per forza applicarlo è un conto, altrimenti è un altro paio di maniche.

    La logica in che modo cambia? Ad esempio dopo aver premuto un pulsante ed aver inserito del testo?

  7. #7
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    ti stimo allora la logica e la gui per il momento sono staccate completamete ho fatto sia l'una che l'altra anche se per ora non comunicano,si tratta di un progetto per l'università e devo mettere per forza il l'observer o MVC insomma, praticamente è realizzato un giochino matematico tipo il sudoku che viene risolto con il becktraking, ora nella logica ci sono vari metodi tutti però riconducibili ad un solo oggetto... invece nella GUI c'è una griglia con delle JTextFild per mettere i numeri se vuoi e dei label per mettere le regole di maggiore minore tra 2 punti, il bottone risolvi il mio dubbio è proprio quello di mantenere staccati completamente le due cose, per ogni tipo di oggetto grafico praticamente c'è un metodo da chiamare o + di uno da chiamare o viceversa ogni ogetto grafico dovrebbe chiamare 1 o + metodi

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Un osservatore non so se è proprio la soluzione migliore... comunque devi avere una classe che osserva, ed una che viene osservata (scommetto che non l'avresti mai pensato).

    La classe che osserva deve implementare l'interfaccia Observer; qui il suo metodo public void update(Observable o, Object obj);.
    Questo sarà il metodo che viene chiamato in automatico quando viene svolta l'operazione da te desiderata.

    La classe invece osservata deve estendere Observable, e quando avviene il cambiamento di stato desiderato, richiami setChanged() e notifyObservers(). Chiaramente puoi avere più osservatori (se guardi l'API di Observable noterai che ci saranno altri metodi come notifyAll()).


    Tu quindi avresti la GUI, ed al suo interno istanzi la classe che incapsula la logica del programma, giusto? Fai eseguire delle operazioni quando viene premuto un pulsante, ma non sai come mostrarli sulla GUI visto che sono in un altra classe...ed ecco quindi l'Observer.

    Chiaramente, se la tua classe che implementa la logica ed esegue le operazioni ha un metodo che torna un determinato valore, di problemi non ne avresti. 2 righe in quasi pseudo codice:
    codice:
    class GUI {
      Logica logica = new ....
    
      void pulsantePremuto() { // sarebbe il tuo actionPerformed di ActionListener
        int n = logica.eseguiOperazione([eventuali dati]); // Supponendo torni un intero...
        componenteGuiDaAggiornare(n);
      }
    }
    Credo di essermi spiegato non ostante l'orario... e spero di non aver detto stupidaggini anche...

  9. #9
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    Si la spiegazione calza e alla fine era proprio quello che pensavo di fare io, solo che io non volevo mettere del tutto una classe logica all'interno della GUI per quello che dicevo sopra se la logica diventa l'osservatore è possibile farlo, anche se credo che sia sbagliato a livello di idea di observer.
    Quindi la domanda effettiva sarebbe è possibile applicare l'observer senza mettere del tutto la classe logica all'interno della GUI?

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Istanziare la classe Logica all'interno della GUI non è errato, concettualmente! Hai una GUI che fa "qualcosa" ed ha bisogno di tale funzionalità, contenuta nella classe logica.

    Non ci dovrebbero essere problemi, però secondo me ti complichi troppo le cose.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.