Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    [JAVA] far comunicare le classi

    C'è un metodo standar per far comunicare le classi?
    Mi spiego meglio, se ho una classe con tot variabili e oggetti, e devo fare un ascoltatore che modifichi questi oggetti e il valore delle variabili, mi conviene passare tutti gli oggetti & co, o direttamente la classe?
    di solito cosa si fa?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Di solito si passa la classe.
    Poi si predispongono dei metodi nella classe per l'accesso ai vari oggetti.


    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
    Tipo così:

    codice:
    classe1{
      variabile a;
      variavile b;
    
      metodo modificaA(){
        ....
      }
    
      metodo modificaB(){
        ....
      }
    }
    
    
    classe2{
      classe1 oggetto = new classe1();
      
      oggetto.modificaB(); per modificare b;  
      oggetto.modificaA(); per modificare a;
      ...
    }
    Diciamo che in generale questo è più o meno lo scheletro di quello che devi fare... :rollo:

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    O anche così:
    codice:
    public class Classe1 {
       private Classe2 cl2;
    
       private Ogg1 og1;
       private Ogg2 og2;
       ...
    
       public Classe1() {
          cl2 = new Classe2(this);
       }
    
       public Ogg1 getOg1() { return og1; }
       public Ogg2 getOg2() { return og2; }
    }
    
    public class Class22 {
       private Classe1 cl1;
    
       public Classe2(Classe1 cl1) { this.cl1 = cl1; }
       ...
    }
    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

  5. #5
    Io gliela buttavo sul semplice visto che non era pratico della cosa...

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  6. #6
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    di solito facevo una cosa così..
    codice:
    ClasseA{
    my_B=null;
    ClasseA(ClasseB b){
    my_B=b;
    }
    my_B.f1();
    ....
    }
    
    ClasseB{
    ClasseA a = new ClasseA(this);
    }

  7. #7
    Mi sembra un po' contorto come metodo...se magari hai un esempio concreto su cui lo devi fare è più facile capirsi...

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  8. #8
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    codice:
    Classe Ascoltatore 
    public class Ascoltatore implements MouseListener 
    {
      Bersaglio target=null;
      JPanel pannello=null;
      JLabel label=null;
      int D1=0;D2=0;D3=0;
      
      public Ascoltatore(Bersaglio b,JPanel p,JLabel t)
      {
      target=b;
      pannello=p;
      label=t;
      
      }
      public void setD1(int d1){
      
      D1=d1;
      System.out.println("d1: "+D1);
      }
      public void setD2(int d2){
      D2=d2;
      System.out.println("d2: "+D2);
      }
      public void setD3(int d3){
      D3=d3;
      System.out.println("d3: "+D3);
      }
      public void mouseClicked(MouseEvent e)
      {
      }
    
      public void mousePressed(MouseEvent e)
      {
      int x=e.getX();
      int y=e.getY();
      
      int dist =(int)Math.sqrt(Math.pow((target.getX()-x),2)+Math.pow((target.getY()-y),2));
      
      Graphics g = pannello.getGraphics();
      label.setText(""+dist);
       if (dist > D1)    g.setColor(Color.BLACK);
         else if (dist < D1 && dist > D2)    g.setColor(Color.GREEN);
              else  if (dist < D2 && dist > D3)    g.setColor(Color.BLUE);    
                    else  {
                    label.setText("hai vinto");
                    g.setColor(Color.RED);
                                  
                    }
       g.drawRect(x-2,y-2,4,4);
      
      }
    }
    
    Classe Principale 
    public class FinestraEsame extends JFrame 
    {
      private JPanel pannelloOggetti = new JPanel();
      private GridLayout layoutOggetti = new GridLayout();
      private JButton bInizia = new JButton();
      private JPanel pannello = new JPanel();
      private Bersaglio bersaglio = new Bersaglio();
      private JTextField textD1 = new JTextField();
      private JTextField textD2 = new JTextField();
      private JButton bArresa = new JButton();
      private JLabel lblRisultato = new JLabel();
      int D1=100;
      int D2=50;
      int D3=-1;
      private Ascoltatore controllore=new Ascoltatore(bersaglio,pannello,lblRisultato);
     ... junk...
    }

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Originariamente inviato da bako
    di solito facevo una cosa così..
    codice:
    ClasseA{
    my_B=null;
    ClasseA(ClasseB b){
    my_B=b;
    }
    my_B.f1();
    ....
    }
    
    ClasseB{
    ClasseA a = new ClasseA(this);
    }
    Che è quello che ti ho suggerito anch'io
    E dov'è il problema? :master:


    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

  10. #10
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    Originariamente inviato da LeleFT
    Che è quello che ti ho suggerito anch'io
    E dov'è il problema? :master:


    Ciao.
    che mi sembra brutto.. cioè facendo così si passa tutta la classe, oggetti e variabili che nn servono..

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 © 2024 vBulletin Solutions, Inc. All rights reserved.