Newsgroup: it.comp.java
Titolo: Help Programmino

Salve a tutti, mi sono avvicinato a questo linguaggio un paio di settimane 
fa, e dopo aver letto un po' di teoria avevo deciso di provare un 
programmino che sommasse due numeri(non da inserire). Il programma è il 
seguente:
---------------------------------------------------
//File Mio.java
import java.utils.*;
public class Mio
{
    int x;
    int y;
    public static void main(String[] args)
    {
        System.out.println("X+Y= ");
    }
}
class Operazioni
{
    public int Somma(int x, int y)
    {
        return(x+y);
    }
}
class Principale
{
    Operazioni O=new Operazioni();
    Mio M=new Mio();
    M.x=34;
    M.y=36;
    public static void main(String [] args)
    {
        System.out.println(O.Somma(M.x,M.y));
    }
}
------------------------------------------------------
In fase di compilazioni mi da un sacco di errori(molto probabilmente ho 
scritto delle gran stronzate) e in particolare due di questi errori si 
riferiscono a M.x ed M.y. Come posso fare per accedere agli attributi x ed y 
della classe M? Dove ho sbagliato?
Grazie in anticipo per le eventuali risposte
Stefano

 della classe M?
Devi dichiararli "public":
   public int x;
   public int y;
Altro piccolo appunto: Solitamente i nomi di variabile sono scritte 
minuscole. Quindi "Mio M=new Mio();" dovrebbe essere qualcosa stile "Mio 
m = new Mio();". Lo stesso vale per "O" e per il suo metodo "Somma".
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

Steve ha scritto:

Sicuramente sono delle prove e sicuramente avrai auto le tue buone 
ragioni ma una domanda: perchè per far sommare due numeri che tu dai 
crei così tante classi? Ripeto è solo una curiosità. Non facevi prima a 
mettere tutti dati in un unico main?
A.

 A.
Volevo provare ad utilizzare più di una classe, così giusto per provare.
Provare a chiamare i metodi di una classe dentro un'altra classe...
Ero perfettamente conscio che si poteva fare tutto in una classe... Ma
essendo un linguaggio O.O  volevo provare a farlo con + classi(^__^)

     Mio M=new Mio();
Questo va messo nel metodo costruttore della classe ( oppure definirlo
static ma cui nn serve ).
 Ti consiglio ogni classe in un file separato.
Sono anch'io dell'idea che una sola classe era più che suficiente.

 In fase di compilazioni mi da un sacco di errori
Non è l'accesso che è sbagliato ma il fatto che le istruzioni non
vanno mai inserite nel "vuoto" bensì all'interno di un metodo (che nel
tuo caso può benissimo essere il costruttore di Principale.
Insomma, il modo corretto sarebbe dovuto essere
 class Principale
 {
     public Principale(){
            Mio M=new Mio();
            M.x=34;
            M.y=36;
     }
     public static void main(String [] args)
     {
         Operazioni O=new Operazioni();
         System.out.println(O.Somma(M.x,M.y));
     }
 }
Non c'era bisogno, invece, di mettere public x e y (tanto è tutto
nello stesso package). Altri consigli di best practice. L'accesso agli
attributi in lettura e scrittura è sempre buona norma farlo attraverso
a metodi getter e setter.
Ossia, invece di M.x è sempre meglio usare M.getX() dove
public int getX(){
   // qui puoi eventualmente mettere controlli
   return x;
}