1
Université de Sherbrooke Chapitre 1 : Langage JAVA
Partie 2 : Références
Département de génie électrique et de génie informatique
GEI 442 : Structures de données et algorithmes Ahmed KHOUMSI 1
Hiver 2001
Notes de cours
GEI 442 : STRUCTURES DE DONNÉES ET ALGORITHMES
Chapitre 1
Ahmed KHOUMSI
Chapitre 1 : Langage JAVA
Partie 2 : Références
Ahmed KHOUMSI
Université de Sherbrooke Chapitre 1 : Langage JAVA
Partie 2 : Références
Département de génie électrique et de génie informatique
GEI 442 : Structures de données et algorithmes Ahmed KHOUMSI 2
Hiver 2001
Type de référence = tout type JAVA qui n ’est pas type de base
Variable de type de référence (plus simplement : référence)
Stocke : - adresse mémoire où se trouve un objet (au lieu de valeur d ’objet), ou
- null
Exemple : 100 (3 , 7) adresse 100 contient (3, 7)
150 (0 , 6) adresse 150 contient (0, 6)
1000 point1 = 150 adresse 1000 contient point1
1500 point2 = 100 adresse 1500 contient point2
2300 point3 = 150 adresse 2300 contient point3
point1 et point3 sont des variables qui référencent l ’objet qui se trouve à
l ’adresse 150
point2 est une variable qui référence l ’objet qui trouve à l ’adresse 100
Dorénavant : Objet type de base
la différence est la suivante :
- variable de type de base stocke la valeur référencée
- variable de référence stocke l ’adresse de l ’objet référencé
Références
2
Université de Sherbrooke Chapitre 1 : Langage JAVA
Partie 2 : Références
Département de génie électrique et de génie informatique
GEI 442 : Structures de données et algorithmes Ahmed KHOUMSI 3
Hiver 2001
Opérations sur références
Modification : à l ’aide de =
Exemple : point1 = point2;
Le contenu de l ’adresse 1500 est copiée dans l adresse 1000
Après exécution de l ’instruction, l adresse 1000 contient 100
Attention : le contenu de l ’adresse 150 n ’est pas modifié
Comparaison : à l ’aide de == ou !=
Exemple : après modification point1 = point2;
on a : (point1 == point2) qui est true
Différence entre références et pointeurs :
Toute opération autre que celles données ci-dessus est interdite sur des références
Exemple : les deux expressions ci-dessous sont invalides :
point1 * point2
point1 ++
Université de Sherbrooke Chapitre 1 : Langage JAVA
Partie 2 : Références
Département de génie électrique et de génie informatique
GEI 442 : Structures de données et algorithmes Ahmed KHOUMSI 4
Hiver 2001
Opérations sur objets référencés
Il y a trois actions de base qui peuvent être effectuées sur un objet référencé :
Conversion de type (déjà vu)
Exemple : type1 x;
type2 y;
y = (type) x;
Accès à un champ interne ou Appel d ’une méthode à l ’aide de l ’opérateur “ .
Vérifier si un objet est d ’un type donné : à l ’aide de l ’opérateur instanceof
3
Université de Sherbrooke Chapitre 1 : Langage JAVA
Partie 2 : Références
Département de génie électrique et de génie informatique
GEI 442 : Structures de données et algorithmes Ahmed KHOUMSI 5
Hiver 2001
Opérateur .
- Permet de choisir une méthode à appliquer à un objet, en spécifiant :
Référence de l ’objet . Nom de la méthode
Exemple : Soit un type Rectangle contenant une méthode surface (sans arguments)
Soit rect une variable qui référence un objet de type Rectangle
On peut calculer la surface de cet objet, comme suit :
double surf;
surf = rect.surface();
Si la référence de l ’objet est égale à null, alors l ’utilisation de l ’opérateur “ .
génère un NullPointerException lors de l ’exécution du programme
- Permet d ’accéder directement à un champ interne d ’un objet (si accès autorisé)
Exemple : Le type Rectangle contient deux champs largeur et longueur
Soit rect1 et rect2 deux variables qui référencent deux objets de type Rectangle
On peut copier les champs de rect1 dans les champs de rect2, comme suit :
rect2.largeur = rect1.largeur;
rect2.longueur = rect1.longueur;
Université de Sherbrooke Chapitre 1 : Langage JAVA
Partie 2 : Références
Département de génie électrique et de génie informatique
GEI 442 : Structures de données et algorithmes Ahmed KHOUMSI 6
Hiver 2001
Déclaration d ’objets
Lorsque variable de type de base déclarée : mémoire allouée pour variable
Lorsque objet déclaré : - mémoire allouée pour référence à l ’objet
- nom fourni pour se référer à l ’objet
Attention : pas de mémoire allouée pour stocker l ’objet
Mémoire allouée pour stocker l ’objet : à l ’aide de l ’opérateur new
Exemple : Soit un type Point qui contient :
- des champs absc et ord
- une méthode positionne
Point p; /* Alloue mémoire pour stocker référence p initialisée à null */
p = new Point(); /* Alloue mémoire pour stocker objet de type Point
Crée objet de type Point dans la mémoire allouée
p devient référence de l ’objet créé */
p.positionne(x,y); /* Champs absc et ord de l ’objet créé reçoivent x et y */
Remarque : les deux premières instructions peuvent être remplacées par
Point p = new Point();
Si on omet l ’instruction new, alors il y a erreur
4
Université de Sherbrooke Chapitre 1 : Langage JAVA
Partie 2 : Références
Département de génie électrique et de génie informatique
GEI 442 : Structures de données et algorithmes Ahmed KHOUMSI 7
Hiver 2001
Affectation et garbage collection
Si x et y sont 2 variables de type de base, alors après l ’instruction x = y;
la valeur stockée dans y est copiée dans x
Si x et y sont 2 variables qui référencent 2 objets, alors après l ’instruction x = y;
- les deux variables vont référencer l ’objet qui était référencé par y
- l ’objet qui était référencé par x ne sera plus référencé par x
Attention : il n ’y a pas de copie d ’un objet sur un autre
Exemple 1 :
Point p = new Point();
Point q = p; // p et q référencent le même objet
q.positionne(x,y); // équivalent à p.positionne(x,y)
Exemple 2 : Si on veut avoir deux objets identiques
Point p = new Point();
Point q = new Point();
p.positionne(x,y);
q.positionne(x,y);
Garbage collection : lorsqu ’un objet n ’est plus référencé, alors il est supprimé
Université de Sherbrooke Chapitre 1 : Langage JAVA
Partie 2 : Références
Département de génie électrique et de génie informatique
GEI 442 : Structures de données et algorithmes Ahmed KHOUMSI 8
Hiver 2001
Égalité et inégalité
É
galité :
Si x et y sont 2 variables de type de base, alors l ’expression x == y est true
si les valeurs stockées dans x et y sont égales
Si x et y sont 2 variables qui référencent 2 objets, alors l ’expression x == y est true
si x et y référencent le même objet
Attention : x == y est false lorsque x et y référencent deux objets identiques
Les même règles s ’appliquent à !=
Comparaison d ’objets : Comme l ’expression x == y ne permet pas de vérifier si
les deux objets référencés par x et y sont identiques, on peut construire une
méthode equals pour effectuer cette vérification
Exemple : Soient p et q deux objets
p.equals(q) retourne la valeur true ou false
5
Université de Sherbrooke Chapitre 1 : Langage JAVA
Partie 2 : Références
Département de génie électrique et de génie informatique
GEI 442 : Structures de données et algorithmes Ahmed KHOUMSI 9
Hiver 2001
Passage d ’arguments
Le passage est effectué par valeur
Si argument de type de base : valeur stockée dans argument est passée
Si argument référence un objet : référence à l ’objet est passée
Attention : objet n ’est pas passé
Université de Sherbrooke Chapitre 1 : Langage JAVA
Partie 2 : Références
Département de génie électrique et de génie informatique
GEI 442 : Structures de données et algorithmes Ahmed KHOUMSI 10
Hiver 2001
Strings
JAVA fournit une classe String
Les chaînes de caractères sont manipulées à l ’aide d ’objets de type String
Deux règles fondamentales : qui différencient les String des autres objets
Règle 1 : Un objet String est immuable, càd on ne peut pas le modifier une fois
qu ’on l ’a initialisé
Exemple :
String vide = “”; /* création de la référence vide et création d’un objet “”
référencé par vide */
String bienvenue = “bonjour”; /* création de la référence bienvenue et
création d’un objet bonjour” référencé par bienvenue */
String message = bienvenue; /* création de la référence message qui va référencer
l’ objet “bonjour” */
Après ces déclarations, il y a donc deux objets String
1er est référencé par vide; 2ème référencé par bienvenue et message
Les deux objets ne peuvent plus être modifiés. Si on veut que message pointe
sur une nouvelle chaîne “ bonsoir ”, alors il faut d ’abord créer un nouvel objet
String nouveau = “bonsoir”; // création d’un objet “bonsoir” et d’une férence nouveau
message = nouveau; // ici, il n’y a aucune création, ni de référence ni d’objet
1 / 17 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !