Académique Documents
Professionnel Documents
Culture Documents
Remarque
Si [ ] suit le type, toutes les variables déclarées seront des
tableaux;
3
Valeurs par défauts:
Cas de tableaux d’éléments de type primitif: chaque élément
est initialisé selon son type :
0 pour les numériques,
false pour les booléens,
null pour les chaînes de caractères, ….
4
1.3. Accès aux éléments:
5
1.4. Taille effective d'un tableau
La longueur d’un tab peut être connue grâce à l’attribut length:
nom_tableau.length
Exemple:
for (int i = 0; i < tab.length; i++)
{ int element = tab[i]; … }
7
1.6. Quelques compléments sur les tableaux :
8
La taille d'un tableau est indiquée lors de sa création par la
primitive new
Un tableau peut être construit sur la base d'un type primitif ou d'un
type construit (classe ou tableau)
9
1.7. Argument et résultat d'une méthode
Un tableau peut être passé comme argument à une méthode. Il
s'agit plutôt du passage de sa référence
10
1.8. Les opérateurs appliqués sur les
tableaux
On peut appliquer les opérateurs : =, ==, et !=. La manipulation
concerne plutôt les références des tableaux
11
1.9. Les tableaux à plusieurs dimensions
JAVA permet de gérer des tableaux à plusieurs dimensions
⇒ un tableau de tableaux (de tableaux …)
Un tableau à 2 indices
⇔
un tableau à un indice dont les éléments sont des [références sur
des] tableaux à un indice dont les éléments sont des int.
12
13
Exemple :
int [][] t=new int[5][];
for(int i=0; i<t.length;i++)
t[i]=new int[5 - i];
for(int i=0; i<t.length;i++)
for(int j=0; j<t[i].length;j++)
t[i][j] = i+j;
15
public class TestEtudiant
{
public static void main(String [] args)
{
Etudiant e;
Etudiant t[ ] = new Etudiant [2];
// déclaration d'un tableau de deux éléments
t[0] = new Etudiant (34,"ali",2, "kaki"); // nouvel objet
t[0].changerCouleur("grise");
boolean b= t[0] instanceof Etudiant;
t[1] =t[0]; // deux références pour un même objet
e=t[1]; // on dispose finalement d'un seul objet
}
} 16
2. Les chaînes de caractères
17
Exemple:
class TableauChar
{
public static void main(String[ ] arg)
{
char[ ] tableau;
tableau = new char[4];
tableau[0] = 'J';
tableau[1] = 'A';
tableau[2] = 'V';
tableau[3] = 'A';
System.out.println(tableau); //affiche : JAVA
}
}
18
2.2. La classe String
JAVA offre dans sa librairie (API) la classe String, très riche
en fonctionnalités
La classe String offre des objets constants de chaînes.
⇔ Sert à manipuler des chaînes de caractère non modifiables
Déclaration :
//Une 1ère Déclaration possible
String prenom = new String("Pierre");
Vu son utilisation intensive
//Une 2ère Déclaration très utilisée
String prenom = "Pierre";
19
Un objet String est constant:
une fois défini, sa valeur ne peut être modifiée.
En revanche, on peut lui attribuer une nouvelle chaîne de
caractères.
20
Concaténation de chaînes:
1er cas : utiliser la méthode concat
String s3 = s1.concat(s2);
21
class TestString {
public static void main(String [] args)
{ //création et initialisation
String ch1,ch2, ch3;
ch1="Programmation";
ch2=ch1;
System.out.println("ch1: " +ch1);//Programmation
System.out.println("ch2: " +ch2);//Programmation
//Concaténation
ch1+=" en JAVA"; //Création d'un nouvel objet
L’instruction :
if (str1 == str2) ... //pas d’erreur
23
Une comparaison de contenus de chaînes :
if (str1.equals(str2)) ...
ou encore: str1.compareTo(str2);
CompareTo retourne la valeur :
- 0 si les deux chaînes sont égales,
- < 0 si str1 < str2,
- >0 si str2 < str1.
24
Remarques :
La méthode equalsIgnoreCase a le même rôle que
equals
mais sans tenir compte de la différence de casse (maj.
et miniscule)
25
Longueur d’une chaîne: length()
26
Conversions diverses
Bien que le contenu d'une chaîne ne puisse pas être modifié, il est
possible d'effectuer des conversions en créant une nouvelle
chaîne.
27
Conversion de caractères, tableaux, entier, etc. vers
chaîne de caractères
valueOf : permet de convertir un caractère, un tableau de
caractères et des valeurs numériques en chaînes de
caractères.
Ces méthodes ont le même nom, mais se différencient
par le type de paramètre qui leur est fourni (char, char[],
double, long, int, float, etc.)
String valueOf(boolean b)
String valueOf(char c)
String valueOf(char[] data)
String valueOf(double d)
String valueOf(float f)
String valueOf(int i)
StringvalueOf(long l) 28
import java.io.*;
public class Test{
public static void main(String args[])
{ double d = 102939939.939;
boolean b = true;
long l = 1232874;
char[]arr ={'a', 'b', 'c', 'd', 'e‘,'f','g' };
System.out.println("Val:"+ String.valueOf(d) );
System.out.println("Val: " + String.valueOf(b) );
System.out.println("Val: " + String.valueOf(l) );
System.out.println("Val: " + String.valueOf(arr));
} }
29
Autres méthodes offertes
30
2.3. La classe StringBuffer
Les opérateur + (et +=) sont interdits avec les objets de cette
classe
Création : 3 constructeurs possibles:
public StringBuffer() : une chaîne vide de taille 16 car
public StringBuffer(int longueur) : une chaîne vide d'une
capacité indiquée par longueur.
public StringBuffer(String str) : une chaîne recevant le
paramètre str. La capacité de la chaîne est 16 plus la longueur
de str.
31
Autres fonctionnalités offertes par la classe StringBuffer :
int length() : retourne la longueur de la chaîne
Remarque :
La méthode append cache plusieurs méthodes du même nom
permettant d'ajouter des expressions de type char, char[ ],
double, float, int, long, et String.
33
Exemple:
35
Chapitre 4 :
L'héritage et le polymorphisme
1. Le concept de l’héritage
37
B est une généralisation de D (cas général)
D est appelée classe dérivée (fille)
B est appelée classe de base (mère ou super-classe)
Tout objet instancié de D est considéré, aussi, comme un objet
de type B
Un objet instancié de B n'est pas forcément un objet de type D
38
1.2. Intérêts
Facilité de conception
39
2. L’héritage en JAVA
L'héritage est représenté par la notion d'extension (extends)
Une classe D peut être définie comme étant une extension d'une
autre classe B
Remarque: - Une référence d'objet déclarée de type B peut
référencer un objet de type D
- l'inverse est faux
Pas d'héritage multiple : => possible avec les interfaces
Toutes les classes héritent de la classe Object (même sans
l'indiquer) définie dans le package java.lang de l'API de JAVA.
Remarque: Il s’agit, dans tous les cas d’une solution à éviter car
elle présente beaucoup d’ambiguïté, surtout avec plusieurs
niveaux d’héritage.
public X X X X X
protected X X X X
par défaut X X X
(friendly)
private X
Exemple :
A a = meth.creationObjet();
// meth renvoie un objet de type A ou d’un type dérivé de A
a.m();
//peut appeler la méthode m() de A ou de n’importe
//quelle sous-classe de A
Cours de Programmation Orientée Objet 63
8.2.1. Mécanisme du polymorphisme