Télécharger la présentation
Publié parHamelin Jeanne Modifié depuis plus de 9 années
1
Programmation en Java Tableaux NGUYEN Thi Minh Tuyen
Dans ce cours, nous allons parler d’Interface graphique en Java. NGUYEN Thi Minh Tuyen
2
Définition Un tableau est une collection de données ordonnées par rang
Le nombre n de données est fixé Les données sont repérées par un rang entier entre 1 et n ou entre 0 et n-1 Méthodes utiles connaître le nombre de données dans le tableau stocker une donnée en lui associant un rang connaître la donnée stockée au rang i NGUYEN Thi Minh Tuyen rang: Suite (de personnes, de choses) sur une même ligne.
3
Survol des tableaux en Java
Les tableaux sont gérés dans le langage Java, selon une syntaxe particulière: Déclaration d’un objet tableau TypeElement[] nomTableau; Construction d’un objet tableau nomTableau = new TypeElement[n]; Accès à un élément du tableau nomTableau[i] Taille du tableau nomTableau.length NGUYEN Thi Minh Tuyen les crochets []
4
Déclaration d’un tableau[1]
Les éléments d’un tableau sont tous déclarés de même type Ce type peut être un type simple ou une classe Exemple: int[] t, registre; double[] vecteur; Color[] palette; Un tableau est un objet NGUYEN Thi Minh Tuyen
5
Déclaration d’un tableau[2]
int tableau[] = new int[50]; // déclaration et allocation OU int[] tableau = new int[50]; OU int tab[]; // déclaration tab = new int[50]; //allocation L'utilisation d'un tableau pour lequel l'espace n'a pas été alloué provoque la levée d'une exception NullPointerException L’accès à un élément du tableau en dehors des bornes provoque la levée d’une exception ArrayIndexOutOfBoundsException NGUYEN Thi Minh Tuyen On declare et allour l’espace necessaire au tableau pareil 1. declaration d’un tableau 2. allouer l’espace de memoire au tableau
6
Tableau à plusieurs dimensions[1]
Java ne supporte pas directement les tableaux à plusieurs dimensions : il faut déclarer un tableau de tableau. float tableau[][] = new float[10][10]; Un tableau à plusieurs dimensions peut être initialisé : int t21[][] = {{1, 2, 3}, {4, 5, 6}}; NGUYEN Thi Minh Tuyen définit un tableau à 2 dimensions 10 lignes sur 10 colonnes. définit un tableau dont la première dimension va de l'indice 0 à l'indice 1 et la deuxième dimension de l'indice 0 à l'indice 2.
7
Tableau à plusieurs dimensions[2]
Toutes les lignes d’un tableau à 2 dimensions n’ont pas forcément le même nombre d’éléments : int dim1[][] = new int[3][]; dim1[0] = new int[4]; dim1[1] = new int[9]; dim1[2] = new int[2]; Chaque élément du tableau est initialisé selon son type par l'instruction new : 0 pour les numériques, '\0' pour les caractères, false pour les booléens et null pour les chaines de caractères et les autres objets. NGUYEN Thi Minh Tuyen
8
Initialisation explicite d'un tableau[1]
int tableau[5] = {10,20,30,40,50}; int tableau[3][2] = { {5,1}, {6,2}, {7,3}}; NGUYEN Thi Minh Tuyen
9
Initialisation explicite d'un tableau[2]
La taille du tableau n'est pas obligatoire si le tableau est initialisé à sa création. int tableau[] = {10,20,30,40,50}; Le nombre d'éléments de chaque ligne peut ne pas être identique int[][] tabEntiers = { {1,2,3,4,5,6}, {1,2,3,4}, {1,2,3,4,5,6,7,8,9}}; NGUYEN Thi Minh Tuyen
10
Parcours d'un tableau for (int i = 0; i < tableau.length ; i ++) { ... } La variable length retourne le nombre d'éléments du tableau. NGUYEN Thi Minh Tuyen
11
Exemple int tableau[][] ; tableau = new int[5][]; for( int i = 0; i< tableau.length; ++i){ tableau[i]= new int [i+1]; } for( int j = 0; j<tableau[i].length; ++j){ //accès à tableau[i][j] NGUYEN Thi Minh Tuyen
12
Tableaux en paramètre Pour passer un tableau à une méthode: déclarer les paramètres dans l'en-tête de la méthode. public void printArray(String texte[]){ ... } Les tableaux sont toujours transmis par référence puisque ce sont des objets. NGUYEN Thi Minh Tuyen La spécification d’un paramètre tableau se fait en écrivant autant de couples de [] que de dimensions du tableau, mais sans donner la taille de chaque dimension. Cette taille peut être obtenue dans la méthode à l’aide de l’attribut length. Le contenu des éléments peut être modifié, mais pas le tableau lui-même.
13
Utilitaires pour les tableaux[1]
System.arraycopy : la classe System a une méthode de copie rapide de tableaux : public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int l) Copie un tableau depuis src, et partir de la position srcPos, dans la destination dest à partir de destPos et sur une longueur l. La copie n’est pas une copie profonde : seules les références sont copiées. NGUYEN Thi Minh Tuyen Si src et dest sont le même tableau, tout se passe comme si les éléments à copier étaient d’abord copiés dans un tableau auxiliaire. Si src ou dest vaut null, une NullPointerException est levée Une ArrayStoreException est levée si : src ou dest n’est pas un tableau src et dest sont des tableaux dont les éléments ne sont pas de même type. Une IndexOutOfBoundsException est levée si : srcPos ou destPos ne sont pas « corrects » destPos+l ou srcPos+l sortent du tableau
14
Utilitaires pour les tableaux[2]
La classe java.lang.reflect.Array contient des méthodes statiques permettant : de récupérer un élément d’un tableau, en le convertissant dans un autre type d’affecter un tableau avec un élément de créer, à l’exécution, un tableau NGUYEN Thi Minh Tuyen
15
Utilitaires pour les tableaux[3]
static Object get(Object t, int index) retourne l’objet d’indice index dans le tableau t. static xxx getXxx(Object t, int index) retourne l’objet d’indice index dans le tableau t. Cet élément est convertit en le type primitif xxx si c’est possible static void set(Object t, int index, Object valeur) affecte une nouvelle valeur à l’élément d’indice index du tableau t. La valeur est convertie en le bon type avant l’affectation static void setXxx(Object t, int index, xxx z) affecte une nouvelle valeur à l’élément d’indice index du tableau t. NGUYEN Thi Minh Tuyen Ces méthodes peuvent lever les exceptions suivantes : NullPointerException si l’objet au rang index vaut null. IllegalArgumentException si le premier argument n’est pas un tableau. ArrayIndexOutOfBoundsException si index est en dehors des bornes du tableau
16
static Object newInstance(Class componentType, int l)
Crée un nouveau tableau dont les éléments sont de type componentType et la longueur est l. Cette méthode peut lever les exceptions : NullPointerException si le componentType vaut null. nullNegativeArraySizeException si l est négative. static Object newInstance(Class componentType, int[] dimensions) Crée un nouveau tableau dont les éléments sont de type componentType : Si componentType est une class ou une interface (pas tableau) le nouveau tableau a dimensions.length dimensions. Le nombre d’éléments dans la ième dimension est égal à dimensions[i]. Si componentType représente une classe tableau, le nombre de dimensions du nouveau tableau est égal à la somme du nombre de dimensions de componentType plus dimensions.length . NGUYEN Thi Minh Tuyen
17
Exemple int dims[]={2, 3}; Integer ii = new Integer(1); Object t = java.lang.reflect.Array.newInstance(ii.getClass(), dims); NGUYEN Thi Minh Tuyen Permet de créer un tableau d’Integer à 2 dimensions : 2 lignes et 3 colonnes.
18
Question? NGUYEN Thi Minh Tuyen
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.