Ciao, mi piacerebbe capire com'è strutturato il programma che trovo come esempio nella guida Java.

da quello che capisco io ..

abbiamo un main dentro al quale viene:
- istanziato l'oggetto 'e' della classe 'Eratostene'
- chiamato l'evento 'calcolaPrimi'
- chiamato l'evento 'scriviPrimi'

dentro all'evento 'calcolaPrimi' (ciclo 'while'):
- si chiama l'evento 'elMul', che non ha ritorno (void), e a cui viene passato il campo 'num'
- si chiama l'evento 'prossimo', che ha come ritorno il campo 'num', che gli viene anche passato come input

a stò punto mi chiedo (sempre che quello che descritto finora sia corretto) ..
l'evento 'Eratostene' dell'omonima classe, dove in sostanza si dichiarano e valorizzano i 2 array, parte con l'istanza dell'oggetto 'e' ? (visto che dal main non viene chiamato ..)
e quale differenza ci sarebbe con tutti gli altri eventi che trovo dentro la classe, che devono essere invece 'chiamati' ?

Grazie mille



Codice PHP:
class Eratostene
{
  static 
int MAX=1000
  
int [] numeri = new int[MAX]; 
  
boolean [] primi = new boolean[MAX]; 
  
// ---> 1
  
public Eratostene()
  { 
int i
      for (
i=0;i<MAX;i++)
      {
       
numeri[i]=i+1
       
primi[i]=true
      }; 
  } 
  
// ---> 2  
  
void elMul(int a)
  { 
      for (
int j=2;j*a<=MAX;j++)
      
primi[(j*a)-1]=false
  } 
  
// ---> 3  
  
int prossimo(int n)
  {
    
int tmp=n
    while (!
primi[tmp]) 
      {
       
tmp++;
       if (
tmp>=MAX
          break;
      } 
     return 
tmp+1
   } 

  
// ---> call 1
  
void calcolaPrimi()
  {
     
int num=2
     while (
num<=MAX)
       {
        
elMul(num);
        
num=prossimo(num);
       }; 
  } 
 
// ---> call 2
  
void scriviPrimi() 
  { 
    
System.out.println("I numeri primi fino a "+MAX+" sono:"); 
     for (
int i=0MAX i++)
       if (
primi[i]) 
         
System.out.print(numeri[i]+" "); 
  } 
         
  public static 
void main(String[] args)
  { 
Eratostene e = new Eratostene(); 
    
e.calcolaPrimi(); 
    
e.scriviPrimi(); 
  }