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