Les structures complexes

Java ne possede pas de notion de structures et d'unions.

Le langage considere les tableaux comme des objets a part entiere, c'est a dire qu'en tableau doit etre dynamiquement cree comme un objet. Le nombre d'elements d'un tableau est donne par la methode length (declaree public final) naturellement liee a cet objet.

Programme : 

public class tab

{

    int[] tab_int ;

    ma_classe[][] tab_ma_classe ;

    // constructeur

    tab()

    {

      tab_int = new int[10] ;

      System.out.println("Longeur de tab_int : " + tab_int.length()) ;

      tab_ma_classe = new ma_classe[5][5] ; // reste a faire un new sur chaque objet

    }

}

class ma_classe

{

    final int CONSTANTE=0 ;

    char variable ;

}


Question : Java ne disposant ni des pointeurs, ni des structures, comment implanter par exemple une liste chainee ?

En fait, la notion de pointeur n'est pas totalement absente du langage. On n'y a simplement pas acces directement, mais on peut l'utiliser de facon transparente comme l'exemple suivant le montre :

public class liste

{

    static cellule tete, nouvelle ;

    static void ajout(cellule cell)

    { cell.suiv = tete ; tete = cell ; }

    static void parcourir(cellule debut)

    {

      while (debut != null)

      { System.out.println("Cellule numero " + debut.valeur) ; debut = debut.suiv ; }

    }

    public static void main(String[] args)

    {

      int i ;

      tete=null ;

      for (i=0 ; i<10 ; i++)

      { nouvelle = new cellule() ; nouvelle.valeur = i ; nouvelle.suiv = null ; ajout(nouvelle) ; }

      parcourir (tete) ;

    }

}

class cellule

{ int valeur ; cellule suiv ; }

Ce programme ressemble beaucoup a ce que nous aurions pu ecrire en C a ceci pres qu'en C nous aurions du definir explicitement des structures et des pointeurs.

Resultat de l'execution :

Cellule numero 9

Cellule numero 8

Cellule numero 7

Cellule numero 6

Cellule numero 5

Cellule numero 4

Cellule numero 3

Cellule numero 2

Cellule numero 1

Cellule numero 0


Ph. RIS 1997