Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Java]Modificare visibilità oggetto, da altri oggetti

    Salve, cercherò di spiegarvi il mio problema senza postare codici anche perchè sarebbe abbastanza lunga la procedura, ho un oggetto A che se cliccato un Jbutton l'oggetto A scompare(ma non si chiude, setvisible(false))poi viene attivato un oggetto B, e successivamente altri oggetti C e D..dopo che l'oggetto D svolge il suo compito si chiude e deve attivare la visibilità dell'oggetto A....adesso mi chiedo...per fare questa procedura potrei chiudere all'inizio l'oggetto A e poi a fine del D creo nuovamente un oggetto A...ma se volessi non distruggerlo dovrei passare per argomento l'oggetto A negli oggetti B-C-D?

  2. #2
    non puoi semplicemente passarlo come parametro nel costruttore dei "successivi" compomenti??
    codice:
    B b=new B(A);
    ...
    C c= new C(A);
    ...
    D d=new D(A);
    ///nella classe D
    //finisco le operazioni
    A.setVisible(true);

  3. #3
    si certo...mi chiedevo se c'era un metodo piu' immediato, cioè passare da A a D senza passarlo agli oggetti intermedi che non se ne fanno nulla di A...è una domanda stupida di per se però se per progetti futuri ho molti oggetti per esempio l'oggetto che necessiterà A sarà Z..dovrei passare A a tutto alfabeto-oggetti per arrivare a Z...impiegherei 10 minuti in piu' quindi niente di che'....pero' siccome sono un po' impaurito dalle regole della buona programmazione mi chiedevo se c'era un modo piu' "elegante" per farlo senza creare costruttori col parametro per tutti gli oggetti da B a V...

  4. #4
    variabili statich (non che la cosa mi piaccia come idea);

  5. #5
    quindi con la creazione di un oggetto static lo posso riprendere da file .java diversi? non ci avevo pensato...grazie!

  6. #6
    ho provato a dichiarare l'oggetto swing in static ma l'espressione è illegale
    update:
    prima del costruttore scrivo:
    static{
    A a=new A();
    }

    e non mi da errore però non posso usare l'oggetto creato (a) in altri oggetti...cosa sbaglio?

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    5
    Originariamente inviato da jonnykaraoke
    ho provato a dichiarare l'oggetto swing in static ma l'espressione è illegale
    update:
    prima del costruttore scrivo:
    static{
    A a=new A();
    }

    e non mi da errore però non posso usare l'oggetto creato (a) in altri oggetti...cosa sbaglio?
    Quello che hai definito è un blocco static, serve per fare cose particolari come l'assicurarsi l'inizializzazione di un oggetto.
    Una variabile static (altamente sconsigliata) si definisce come:

    public static <final*> <tipo> <nome_identificativo> = <inizializzazione>

    * final serve per creare delle costanti.

    codice:
    public class MiaClasse{
      public static Integer MAX_ELEMENTS = 5;  
    }
    Perché altamente sconsigliata? perchè a questo punto non sono più attributi dell'oggetto ma sono "di classe" cioè appartengono alla classe (rif al mio esempio MiaClasse.MAX_ELEMENTS)

    Se le usi come l'ho indicata io, vanno bene perché appunto sono solo delle costanti, ma se le usi per violare l'incapsulamento potresti incorrere in diverse rogne, soprattutto se un giorno svilupperai con applicazioni web.

    Piuttosto prova una cosa più sofisticata ma decisamente più flessibile e potente.
    Dal tuo esempio sembra quasi tu stia facendo un Wizard.

    Separa i moduli dal loro controller.
    I moduli implementeranno un'interfaccia che gli permette di comunicare con il controller attraverso delle callback.
    E' il controller che decide quale modulo (A,B,C,D) mostrare e che si occuperà di mostrare o nascondere determinati bottoni. I moduli A,B,C,D attraverso una cosa tipo:

    codice:
    public interface Modulo{
      void initModulo(... qui passi i riferimenti ai dati che ti servono);
      void moduloStart();
      void moduloEnd();
    }
    Capisco che è una soluzione più complessa inizialmente ma dopo che hai capito il gioco vedrai come il codice presenterà molti meno problemi, sarà più facile da espandere e modificare.

  8. #8
    questa è la risposta che volevo!!!! grazie mille oggi ci provo!

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    5
    Originariamente inviato da jonnykaraoke
    questa è la risposta che volevo!!!! grazie mille oggi ci provo!
    Di nulla! Se opti per la soluzione più sofisticata fammi sapere se trovi difficoltà.
    Ci sono dei costrutti assai noti ed efficaci (pattern MVC su tutti), ma provare prima a fare le cose con la nostra testa per poi confrontarle soluzioni più avanzate è sicuramente buona cosa.

    Il cuore della programmazione ad oggetti è l'astrazione e la separazione dei ruoli, altrimenti questa si trasforma in semplice programmazione procedurale con qualche costrutto tedioso ereditato dalla OOP.

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.