SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
7
CHAPITRE 2
CLASSE ET OBJET
8
1. La Classe
Dans une classe sont définis des attributs et des méthodes qui seront présents dans chaque
objet créé à partir de cette classe.
Déclarer les attributs de la classe permet de décrire l’état du futur objet
Déclarer les méthodes de la classe permet au futur objet d’effectuer des opérations et
éventuellement changer d’état.
1.1. Définition d’une classe
La syntaxe la plus simple de définition d’une classe en Java est la suivante :
[private/public] class <NomClasse>
{
//déclaration des attributs
…………………………
//déclaration des méthodes
…………………………
}
Par convention, le nom de la classe commence par une majuscule suivie de minuscules
avec une majuscule pour chaque nouveau mot.
Dans un fichier Java, il ne peut y avoir qu’une seule classe publique.
Les modificateur private et public : sont deux modificateur d’accès précisant la possibilité
d’utilisation de la classe :
o private indique que l’utilisation de la classe est réservée aux classes du même
package (regroupement logique des classes).
o public donne la possibilité d’utiliser la classe à toutes les autres classes.
o Par défaut, le modificateur est private.
Exemple :
public class Rectangle {
int longueur ;
int largeur ;
int surface () {
return longueur * largeur ;
}
}
9
1.2. Déclaration des attributs
En Java, la syntaxe de déclaration d’un attribut est la suivante :
[<modificateur de visibilité>] <type> <nom_attribut> [=<expression>] ;
Les attributs sont caractérisés par un nom, un type et une valeur
Le modificateur de visibilité indique l’accessibilité de l’attribut à l’extérieur de sa classe
et peut être :
o private : indique que l’accès est réservé aux méthodes de la classe elle-même,
o public : donne la possibilité d’accès à toutes les méthodes des autres classes,
o protected : limite l’accès aux méthodes de la même classe, des classes dérivés (voir
chapitre héritage) et des classes du même package.
Le type peut être élémentaire ou spécial (classe, tableau, …)
L’expression permet d’affecter une valeur lors de la création d’un objet
Les attributs sont considérés comme des variables globales à l’intérieur d’une classe : ils
sont visibles par toutes les méthodes de la classe.
Par convention, le nom d’un attribut commence par une minuscule suivie de minuscules
avec une majuscule pour chaque nouveau mot.
Exemple :
public class Rectangle {
//déclaration de deux attributs entiers d’accès public
public int longueur ;
public int largeur ;
………….
}
1.3. Déclaration des méthodes
En Java, la syntaxe de déclaration d’une méthode est la suivante :
[<modificateur de visibilité>] <type_retour> <nom_méthode> (<arguments>) {
// Déclaration des variables locales
// Instructions de la méthode
}
10
Le modificateur de visibilité indique l’accessibilité autorisant ou pas l’appel aux
méthodes de la classe (voir déclaration des attributs).
Le type de retour est le type de la valeur renvoyée par la fonction, si pas de renvoi le type
est « void »
Les arguments de la méthode est une liste de paramètres formels, nommés et typés
séparés par des virgules, (cette liste peut être vide)
Les variables à l’intérieur d’une méthode sont locales à cette méthode et doivent être
initialisées avant toute utilisation.
Par convention, le nom d’une méthode commence par une minuscule suivie de minuscules
avec une majuscule pour chaque nouveau mot.
Exemple :
public class Rectangle {
public int longueur ; //attribut de la classe Rectangle
public int largeur ;
//méthode qui calcule la surface à partir de deux paramètres entiers
private int surface (int long, int larg) {
int surf ; //variable locale à la méthode
surf = long * larg ;
return surf ; //valeur de retour de la méthode
}
//méthode qui affiche les attributs de la classe sans paramètres et sans retour
public void afficher ( ) {
System.out.println ("longueur : " + longueur + "largeur : " + largeur) ;
}
}
1.4. Encapsulation
Le regroupement des données et des méthodes dans un objet ainsi que le masquage des
données est appelé encapsulation.
L’encapsulation permet d’offrir aux utilisateurs la liste des services exportables appelé
interface composée d’attributs et de méthodes « publics »
11
L’encapsulation de données dans un objet permet de cacher ou non leur existence aux
autres objets du programme. Une donnée peut être déclarée en accès :
o public : les autres objets peuvent accéder à la valeur de cette donnée ainsi que la
modifier ;
o private : les autres objets n’ont pas le droit d’accéder directement à la valeur de cette
donnée (ni de la modifier). En revanche, ils peuvent le faire indirectement par des
méthodes de l’objet concerné (si celles-ci existent en accès public).
Exercice :
Ecrire une classe Rectangle qui encapsule 4 entiers : la longueur, la largeur, la position en
abscisse et en ordonnée de l’origine du rectangle. La classe Rectangle implémente une
méthode permettant de déplacer le rectangle qui nécessite en entrée deux entiers indiquant la
distance de déplacement en abscisse et en ordonnée.
1.5. Constructeur de la classe
Un constructeur est une méthode particulière appelée au moment de la création pour
initialiser l’objet en fonction des paramètres fournis par l’utilisateur.
Règles à respecter :
o Le nom du constructeur doit correspondre exactement au nom de la classe
o Aucun type de retour déclaré par le constructeur
Une classe peut avoir plusieurs constructeurs avec des listes d’arguments qui déterminent
quel constructeur doit être utilisé lors de l’appel de l’un des constructeurs.
Toute classe doit avoir au moins un constructeur.
Si aucun constructeur n’a été écrit dans la classe, un constructeur par défaut est fourni
sans arguments et son corps est vide.
Si une classe comporte au moins un constructeur, elle perd son constructeur par défaut.
Exemple :
public class Rectangle {
public int longueur ;
public int largeur ;
//Constructeur par défaut explicite
Rectangle () {
12
longueur = 0;
largeur = 0 ;
}
//Constructeur avec arguments
Rectangle (int a, int b) {
longueur = a;
largeur = b ;
}
}
1.6. Notion de Destructeur
Le destructeur est une méthode qui exécute certaines tâches avant la destruction de
l’objet.
La destruction d’un objet (libération mémoire) se fait d’une manière automatique à l’aide
du mécanisme de « garbage collector » qui est un processus en exécution permanente.
En Java, le destructeur est optionnel et s’il est décrit, alors il est unique.
En Java, le destructeur s’appelle finalize. Son prototype est protected void finalize ().
Exemple :
public class Rectangle {
private static int nbRectangle = 0 ;
public int longueur ;
public int largeur ;
Rectangle (int a, int b) {
longueur = a;
largeur = b ;
nbRectangle ++ ;
}
//le destructeur est optionnel et il est utilisé que pour des tâches qui précèdent la destruction
protected void finalize () {
nbRectangle -- ; }
}
13
2. L’Objet
Un objet est caractérisé par :
o Un ensemble d’attributs nommés et typés représentants ses propriétés statiques.
o Un ensemble de méthodes définissant son comportement et ses réactions face aux
stimulations externes
o Une identité qui permet de le distinguer.
2.1. Instanciation
Pour instancier (ou créer ) un objet, il faut :
1. Déclarer une variable de la classe à instancier (la variable n’est pas l’objet mais une
référence sur l’objet, elle contiendra son adresse)
2. Allouer l’espace mémoire nécessaire à l’objet en utilisant l’opérateur new et affecter
l’adresse de l’objet dans la variable référence.
A l’exécution de new, les données d’un objet sont initialisées automatiquement par des
valeurs nulles (null).
L’initialisation d’un objet peut être explicite si on met des valeurs lors de la déclaration
des attributs.
Exemple :
//Objet rectangle1 instancié à partir du constructeur par défaut
Rectangle rectangle1 = new Rectangle () ;
//Objet rectangle2 instancié partir du constructeur Rectangle (int, int)
Rectangle rectangle2 = new Rectangle (10, 5) ;
2.2. Utiliser un objet
Accès à un attribut
L’accès à un attribut d’une classe se fait toujours à l’intérieur d’une méthode.
Si la méthode (sauf pour main) appartient à la même classe que l’attribut, alors l’accès se
fait en indiquant le nom de l’attribut directement.
Si la méthode n’appartient pas à la même classe que l’attribut ou qu’il s’agit de la
méthode main, alors il faut créer d’abord un objet à partir de la classe de l’attribut et y
accéder en séparant le nom de l’objet et le nom de l’attribut par un point, comme suit :
<nom_objet>.<nom_attribut> ;
14
Exemple :
public class TestRectangle {
public static void main (String [] args) {
Rectangle r1;
r1 = new Rectangle (10, 5);
//affichage des attributs de l’objet r1
System.out.println ("longueur : " + r1.longueur + "largeur : " + r1.largeur) ;
}
}
Accès à une méthode
Si’ l’appel d’une méthode est effectué à l’intérieur de la classe (dasn une autre méthode
sauf pour main), alors on écrit directement :
<nom_méthode> (<liste_paramètres>) ;
Si l’appel d’une méthode est effectué à l’extérieur de la classe (dans une méthode) ou dans
la méthode main de cette même classe, alors il faut créer un objet de cette classe et appeler
la méthode comme suit :
<nom_objet>.<nom_méthode> (<liste_paramètres>) ;
Exemple :
public class TestRectangle {
public static void main (String [] args) {
Rectangle r1 = new Rectangle (10, 5);
//affichage des attributs de l’objet r1 à travers la méthode afficher() de Rectangle
r1.afficher() ;
}
}
Exercice :
Ecrire une classe principale (contenant main) qui permet de créer deux objets de type
Rectangle et qui permute les attributs (longueur et largeur) de ces deux objets.
15
2.3.Référence d’un objet
Les références sont des variables qui permettent de désigner et de manipuler les objets.
o Le mot clé « this » :
this représente une référence sur l’objet courant, c.à.d. celui qui possède la méthode
qui est en train de s’exécuter.
La référence this peut être utile :
Pour distinguer une variable locale portant le même nom qu’un attribut de la
classe.
Pour déclencher un constructeur depuis un autre constructeur.
Exemple :
public class Rectangle {
private int longueur, largeur ;
public Rectangle (int longueur, int largeur) {
this.longueur = longueur ;
this.largeur = largeur ;
}
public Rectangle () {
this (0,0) ; //appel de Rectangle (int, int)
System.out.println ("constructeur sans arguments ") ;
}
}
o Le mot clé « null » :
Le mot clé null, permet de représenter la référence qui ne désigne rien.
On peut assigner la valeur null à n’importe quelle variable ou attribut contenant une
référence.
null est la valeur par défaut d’initialisation des attributs représentant des références.
Exemple :
public static void main (String [] args) {
Rectangle r1 ; //r1 est local à main
r1.aficher() ; //erreur de compilation , r1 n’a pas encore reçu de valeur
16
Rectangle r2 = null ; //r2 est local à main et initialisée à null
r2.afficher() ; //erreur d’exécution cette fois
}
o Les opérateurs sur les références :
== : pour tester si deux références désignent le même objet
!= : pour tester si deux références ne désignent pas le même objet
= : affecte une référence dans une autre
instanceOf : pour tester si l’objet référencé est une instance d’une classe donnée (ou
d’une de ses sous-classes) retourne true ou false.
Exemple :
Rectangle r1 = new Rectangle (5,3) ;
Rectangle r2 = new Rectangle (10,5) ;
r1 = r2 ;
if (r1 != r2) {
System.out.println ("r1 et r2 ne désignent pas le même objet") ;
}
if (r1 instanceOf Rectangle ) {
System.out.println ("r1 est un objet de type Rectangle") ;
}
2.4. Les objets membres
Les champs d’une classe peuvent être des références à des objets. On parle d’objets
membres.
Si l’objet jouant le rôle d’attribut est déjà créé (utilisé ailleurs), il suffit d’effectuer une
affectation entre références à travers un passage de paramètres au niveau du constructeur
ou d’une autre méthode. (1er
cas)
Si l’utilisation de l’objet membre est réservée à l’objet qui l’intègre, alors l’objet membre
doit être créé par new au niveau du constructeur de la classe qui l’utilise ou une autre
méthode. (2ème
cas)
Exemple :
public class Point { …… }
public class Rectangle{
17
private Point centre ;
private int longueur, largeur ;
public Rectangle (int L, int l, Point p) {
longueur = L ; largeur = l ; centre = p ; // 1er
cas
}
public Rectangle () {
longueur = 10 ; largeur = 5 ; centre = new Point (0,0) ; // 2ème
cas
}
}
3. Exercices
Exercice N°1 :
1. Ecrire une classe Point caractérisée par :
- Deux attributs privés : son abscisse et son ordonnée,
- un constructeur avec arguments,
- un constructeur sans arguments, qui initialise les coordonnées d’un point par des
valeurs par défauts de votre choix,
- Une méthode pour afficher les coordonnées d’un point sous la forme p=(x, y).
- Une méthode pour déplacer le point en ajoutant les valeurs en arguments de cette
méthode aux valeurs des coordonnées du point.
2. Ecrire une méthode main qui permet d’initialiser et d’afficher un point, puis de le déplacer
et de le réafficher.
Exercice N°2 :
On se propose de décrire deux figures centrées : le cercle et le rectangle. Chacune est
caractérisée par un centre décrit par ses coordonnées. De plus, un cercle est caractérisé par son
rayon alors qu’un rectangle par sa longueur et sa largeur.
1. Donner la spécification des classes de chaque objet (point, cercle et rectangle) avec
des attributs publics.
2. Ajouter pour chacune des classes Cercle et Rectangle une méthode afficher () qui
permet d’afficher leurs attributs.
3. Ecrire une classe principale qui permet de tester le programme
4. Modifier les attributs de la classe Point en privés. Que se passe-t-il à l’exécution ?
5. Ajouter une méthode publique afficher() à la classe Point.
6. Modifier les méthodes d’affichage de Cercle et Rectangle pour pouvoir les afficher
tout en maintenant les coordonnées des points privés.
Exercice N°3 :
Une personne est caractérisée par un CIN, un nom, un prénom et une adresse. L’adresse peut
être composée des éléments suivants : numéro, nom de la rue, ville et code postal.
1. Définir la classe Adresse
2. Définir la classe Personne en utilisant un objet Adresse.
18
3. La classe TestProgramme permet de créer deux objets de type personne. Ali habite 36
rue des oliviers, 3002 Sfax et Mohamed habite 20 rue de la liberté, 1002 Tunis.
4. Ecrire une méthode Afficher qui permet d’afficher une personne et une méthode
Permuter qui permet de permuter les adresses de deux personnes selon les cas
suivants :
4.1. Afficher et Permuter sont deux méthodes de la classe Personne
4.2.Afficher et Permuter sont deux méthodes de la classe TestProgramme
Exercice N°4 :
1. Ecrire la classe Nombre qui permet de définir un nombre par sa valeur numérique de
type entier. La classe contient les méthodes suivantes :
- Le constructeur de Nombre permet de l’initialiser par une certaine valeur,
- Méthode d’incrémentation de sa valeur par 1,
- Méthode de décrémentation de sa valeur par 1,
- Méthode d’affichage de sa valeur.
2. Ecrire la classe TestNombre qui dans sa méthode main doit créer un nombre,
l’incrémenter de 2 puis de le décrémenter de 1. Utiliser la méthode d’affichage pour
vérifier la valeur du nombre à chaque fois.
3. Que se passera-t-il si on procède à déclarer l’attribut de la classe Nombre comme étant
final.
4. On veut ajouter l’instruction suivante Nombre n = new Nombre() ; dans main.
4.1.Qu’appelle-t-on ce constructeur utilisé ?
4.2.Cette instruction provoquerait-elle une erreur et pourquoi ?
4.3.Comment pourrait-on alors l’utiliser sans générer une erreur ?
Exercice N°5 :
1. Créer une classe Temps qui contient 3 attributs entiers privés : heure, minute, seconde
Définir les constructeurs suivants en utilisant chaque fois que c’est possible la
référence this.
- Temps (int heure)
- Temps (int heure, int minute)
- Temps (int heure, int minute, int seconde)
2. Ecrire une méthode affiche() qui affiche le temps sous la forme suivante :
"Il est ……..heures ……..minutes……..secondes"
3. Ecrire la méthode main qui permet d’utiliser les trois types de constructeur suivis de la
méthode affiche() et qu’obtient-on à l’exécution ?

Contenu connexe

Tendances

Cours python avancé
Cours python avancéCours python avancé
Cours python avancépierrepo
 
POO Java Chapitre 3 Collections
POO Java Chapitre 3 CollectionsPOO Java Chapitre 3 Collections
POO Java Chapitre 3 CollectionsMouna Torjmen
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java IntroductionMouna Torjmen
 
TP sous linux
TP sous linuxTP sous linux
TP sous linuxImnaTech
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java HéritageNadaBenLatifa
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptionsAmir Souissi
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Faycel Chaoua
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIJihenHedhli1
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz Darouichi
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationECAM Brussels Engineering School
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseLilia Sfaxi
 
Chapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En JavaChapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En JavaAziz Darouichi
 

Tendances (20)

Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
POO Java Chapitre 3 Collections
POO Java Chapitre 3 CollectionsPOO Java Chapitre 3 Collections
POO Java Chapitre 3 Collections
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 
Polymorphisme (cours, résumé)
Polymorphisme (cours, résumé)Polymorphisme (cours, résumé)
Polymorphisme (cours, résumé)
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java Introduction
 
TP sous linux
TP sous linuxTP sous linux
TP sous linux
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java Héritage
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptions
 
JAVA
JAVAJAVA
JAVA
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLI
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Tp n 5 linux
Tp n 5 linuxTp n 5 linux
Tp n 5 linux
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-Eclipse
 
Chapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En JavaChapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En Java
 
UML
UMLUML
UML
 

Similaire à Chapitre 2 classe et objet

Similaire à Chapitre 2 classe et objet (20)

Chapitre3 2013 POO
Chapitre3 2013 POOChapitre3 2013 POO
Chapitre3 2013 POO
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
 
Cours de JAVA de base
Cours de JAVA  de baseCours de JAVA  de base
Cours de JAVA de base
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Les Classe en Java
Les Classe en JavaLes Classe en Java
Les Classe en Java
 
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxfdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1
 
Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objets
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdf
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Java
JavaJava
Java
 
Diagramme de Classe
Diagramme de ClasseDiagramme de Classe
Diagramme de Classe
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
XB-Java.ppt
XB-Java.pptXB-Java.ppt
XB-Java.ppt
 
22-reflection.pdf
22-reflection.pdf22-reflection.pdf
22-reflection.pdf
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
 
Memo java
Memo javaMemo java
Memo java
 

Plus de Amir Souissi

Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsAmir Souissi
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de javaAmir Souissi
 
Chapitre 4 persistance des donnees
Chapitre 4  persistance des donneesChapitre 4  persistance des donnees
Chapitre 4 persistance des donneesAmir Souissi
 
Chapitre 3 activites et intents
Chapitre 3   activites et  intentsChapitre 3   activites et  intents
Chapitre 3 activites et intentsAmir Souissi
 
Chapitre 1 introduction generale
Chapitre 1   introduction generaleChapitre 1   introduction generale
Chapitre 1 introduction generaleAmir Souissi
 
Chapitre 2 elements graphiques android
Chapitre 2   elements graphiques androidChapitre 2   elements graphiques android
Chapitre 2 elements graphiques androidAmir Souissi
 
Chapitre 1 decouverte du developpement android
Chapitre 1  decouverte du developpement androidChapitre 1  decouverte du developpement android
Chapitre 1 decouverte du developpement androidAmir Souissi
 
Atelier symfony n 3
Atelier symfony n 3Atelier symfony n 3
Atelier symfony n 3Amir Souissi
 
Atelier symfony n 2
Atelier symfony n 2Atelier symfony n 2
Atelier symfony n 2Amir Souissi
 
Atelier symfony n 1
Atelier symfony n 1Atelier symfony n 1
Atelier symfony n 1Amir Souissi
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classeAmir Souissi
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objetAmir Souissi
 

Plus de Amir Souissi (18)

Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitions
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 
Chapitre 4 persistance des donnees
Chapitre 4  persistance des donneesChapitre 4  persistance des donnees
Chapitre 4 persistance des donnees
 
Chapitre 3 activites et intents
Chapitre 3   activites et  intentsChapitre 3   activites et  intents
Chapitre 3 activites et intents
 
Chapitre 1 introduction generale
Chapitre 1   introduction generaleChapitre 1   introduction generale
Chapitre 1 introduction generale
 
Chapitre 2 elements graphiques android
Chapitre 2   elements graphiques androidChapitre 2   elements graphiques android
Chapitre 2 elements graphiques android
 
Chapitre 1 decouverte du developpement android
Chapitre 1  decouverte du developpement androidChapitre 1  decouverte du developpement android
Chapitre 1 decouverte du developpement android
 
Atelier symfony n 3
Atelier symfony n 3Atelier symfony n 3
Atelier symfony n 3
 
Atelier symfony n 2
Atelier symfony n 2Atelier symfony n 2
Atelier symfony n 2
 
Atelier symfony n 1
Atelier symfony n 1Atelier symfony n 1
Atelier symfony n 1
 
Tp n 6 linux
Tp n 6 linuxTp n 6 linux
Tp n 6 linux
 
Tp n 4 linux
Tp n 4 linuxTp n 4 linux
Tp n 4 linux
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
 
Tp n 1 linux
Tp n 1 linuxTp n 1 linux
Tp n 1 linux
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classe
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
 

Dernier

GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxrajaakiass01
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsJaouadMhirach
 
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfSTRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfGamal Mansour
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesMohammedAmineHatoch
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfssuserc72852
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKNassimaMdh
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfAmgdoulHatim
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxShinyaHilalYamanaka
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...Universidad Complutense de Madrid
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Technologia Formation
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxhamzagame
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxabdououanighd
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetJeanYvesMoine
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLElebaobabbleu
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 
658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdfMariaClaraAlves46
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxikospam0
 

Dernier (20)

GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfSTRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 

Chapitre 2 classe et objet

  • 2. 8 1. La Classe Dans une classe sont définis des attributs et des méthodes qui seront présents dans chaque objet créé à partir de cette classe. Déclarer les attributs de la classe permet de décrire l’état du futur objet Déclarer les méthodes de la classe permet au futur objet d’effectuer des opérations et éventuellement changer d’état. 1.1. Définition d’une classe La syntaxe la plus simple de définition d’une classe en Java est la suivante : [private/public] class <NomClasse> { //déclaration des attributs ………………………… //déclaration des méthodes ………………………… } Par convention, le nom de la classe commence par une majuscule suivie de minuscules avec une majuscule pour chaque nouveau mot. Dans un fichier Java, il ne peut y avoir qu’une seule classe publique. Les modificateur private et public : sont deux modificateur d’accès précisant la possibilité d’utilisation de la classe : o private indique que l’utilisation de la classe est réservée aux classes du même package (regroupement logique des classes). o public donne la possibilité d’utiliser la classe à toutes les autres classes. o Par défaut, le modificateur est private. Exemple : public class Rectangle { int longueur ; int largeur ; int surface () { return longueur * largeur ; } }
  • 3. 9 1.2. Déclaration des attributs En Java, la syntaxe de déclaration d’un attribut est la suivante : [<modificateur de visibilité>] <type> <nom_attribut> [=<expression>] ; Les attributs sont caractérisés par un nom, un type et une valeur Le modificateur de visibilité indique l’accessibilité de l’attribut à l’extérieur de sa classe et peut être : o private : indique que l’accès est réservé aux méthodes de la classe elle-même, o public : donne la possibilité d’accès à toutes les méthodes des autres classes, o protected : limite l’accès aux méthodes de la même classe, des classes dérivés (voir chapitre héritage) et des classes du même package. Le type peut être élémentaire ou spécial (classe, tableau, …) L’expression permet d’affecter une valeur lors de la création d’un objet Les attributs sont considérés comme des variables globales à l’intérieur d’une classe : ils sont visibles par toutes les méthodes de la classe. Par convention, le nom d’un attribut commence par une minuscule suivie de minuscules avec une majuscule pour chaque nouveau mot. Exemple : public class Rectangle { //déclaration de deux attributs entiers d’accès public public int longueur ; public int largeur ; …………. } 1.3. Déclaration des méthodes En Java, la syntaxe de déclaration d’une méthode est la suivante : [<modificateur de visibilité>] <type_retour> <nom_méthode> (<arguments>) { // Déclaration des variables locales // Instructions de la méthode }
  • 4. 10 Le modificateur de visibilité indique l’accessibilité autorisant ou pas l’appel aux méthodes de la classe (voir déclaration des attributs). Le type de retour est le type de la valeur renvoyée par la fonction, si pas de renvoi le type est « void » Les arguments de la méthode est une liste de paramètres formels, nommés et typés séparés par des virgules, (cette liste peut être vide) Les variables à l’intérieur d’une méthode sont locales à cette méthode et doivent être initialisées avant toute utilisation. Par convention, le nom d’une méthode commence par une minuscule suivie de minuscules avec une majuscule pour chaque nouveau mot. Exemple : public class Rectangle { public int longueur ; //attribut de la classe Rectangle public int largeur ; //méthode qui calcule la surface à partir de deux paramètres entiers private int surface (int long, int larg) { int surf ; //variable locale à la méthode surf = long * larg ; return surf ; //valeur de retour de la méthode } //méthode qui affiche les attributs de la classe sans paramètres et sans retour public void afficher ( ) { System.out.println ("longueur : " + longueur + "largeur : " + largeur) ; } } 1.4. Encapsulation Le regroupement des données et des méthodes dans un objet ainsi que le masquage des données est appelé encapsulation. L’encapsulation permet d’offrir aux utilisateurs la liste des services exportables appelé interface composée d’attributs et de méthodes « publics »
  • 5. 11 L’encapsulation de données dans un objet permet de cacher ou non leur existence aux autres objets du programme. Une donnée peut être déclarée en accès : o public : les autres objets peuvent accéder à la valeur de cette donnée ainsi que la modifier ; o private : les autres objets n’ont pas le droit d’accéder directement à la valeur de cette donnée (ni de la modifier). En revanche, ils peuvent le faire indirectement par des méthodes de l’objet concerné (si celles-ci existent en accès public). Exercice : Ecrire une classe Rectangle qui encapsule 4 entiers : la longueur, la largeur, la position en abscisse et en ordonnée de l’origine du rectangle. La classe Rectangle implémente une méthode permettant de déplacer le rectangle qui nécessite en entrée deux entiers indiquant la distance de déplacement en abscisse et en ordonnée. 1.5. Constructeur de la classe Un constructeur est une méthode particulière appelée au moment de la création pour initialiser l’objet en fonction des paramètres fournis par l’utilisateur. Règles à respecter : o Le nom du constructeur doit correspondre exactement au nom de la classe o Aucun type de retour déclaré par le constructeur Une classe peut avoir plusieurs constructeurs avec des listes d’arguments qui déterminent quel constructeur doit être utilisé lors de l’appel de l’un des constructeurs. Toute classe doit avoir au moins un constructeur. Si aucun constructeur n’a été écrit dans la classe, un constructeur par défaut est fourni sans arguments et son corps est vide. Si une classe comporte au moins un constructeur, elle perd son constructeur par défaut. Exemple : public class Rectangle { public int longueur ; public int largeur ; //Constructeur par défaut explicite Rectangle () {
  • 6. 12 longueur = 0; largeur = 0 ; } //Constructeur avec arguments Rectangle (int a, int b) { longueur = a; largeur = b ; } } 1.6. Notion de Destructeur Le destructeur est une méthode qui exécute certaines tâches avant la destruction de l’objet. La destruction d’un objet (libération mémoire) se fait d’une manière automatique à l’aide du mécanisme de « garbage collector » qui est un processus en exécution permanente. En Java, le destructeur est optionnel et s’il est décrit, alors il est unique. En Java, le destructeur s’appelle finalize. Son prototype est protected void finalize (). Exemple : public class Rectangle { private static int nbRectangle = 0 ; public int longueur ; public int largeur ; Rectangle (int a, int b) { longueur = a; largeur = b ; nbRectangle ++ ; } //le destructeur est optionnel et il est utilisé que pour des tâches qui précèdent la destruction protected void finalize () { nbRectangle -- ; } }
  • 7. 13 2. L’Objet Un objet est caractérisé par : o Un ensemble d’attributs nommés et typés représentants ses propriétés statiques. o Un ensemble de méthodes définissant son comportement et ses réactions face aux stimulations externes o Une identité qui permet de le distinguer. 2.1. Instanciation Pour instancier (ou créer ) un objet, il faut : 1. Déclarer une variable de la classe à instancier (la variable n’est pas l’objet mais une référence sur l’objet, elle contiendra son adresse) 2. Allouer l’espace mémoire nécessaire à l’objet en utilisant l’opérateur new et affecter l’adresse de l’objet dans la variable référence. A l’exécution de new, les données d’un objet sont initialisées automatiquement par des valeurs nulles (null). L’initialisation d’un objet peut être explicite si on met des valeurs lors de la déclaration des attributs. Exemple : //Objet rectangle1 instancié à partir du constructeur par défaut Rectangle rectangle1 = new Rectangle () ; //Objet rectangle2 instancié partir du constructeur Rectangle (int, int) Rectangle rectangle2 = new Rectangle (10, 5) ; 2.2. Utiliser un objet Accès à un attribut L’accès à un attribut d’une classe se fait toujours à l’intérieur d’une méthode. Si la méthode (sauf pour main) appartient à la même classe que l’attribut, alors l’accès se fait en indiquant le nom de l’attribut directement. Si la méthode n’appartient pas à la même classe que l’attribut ou qu’il s’agit de la méthode main, alors il faut créer d’abord un objet à partir de la classe de l’attribut et y accéder en séparant le nom de l’objet et le nom de l’attribut par un point, comme suit : <nom_objet>.<nom_attribut> ;
  • 8. 14 Exemple : public class TestRectangle { public static void main (String [] args) { Rectangle r1; r1 = new Rectangle (10, 5); //affichage des attributs de l’objet r1 System.out.println ("longueur : " + r1.longueur + "largeur : " + r1.largeur) ; } } Accès à une méthode Si’ l’appel d’une méthode est effectué à l’intérieur de la classe (dasn une autre méthode sauf pour main), alors on écrit directement : <nom_méthode> (<liste_paramètres>) ; Si l’appel d’une méthode est effectué à l’extérieur de la classe (dans une méthode) ou dans la méthode main de cette même classe, alors il faut créer un objet de cette classe et appeler la méthode comme suit : <nom_objet>.<nom_méthode> (<liste_paramètres>) ; Exemple : public class TestRectangle { public static void main (String [] args) { Rectangle r1 = new Rectangle (10, 5); //affichage des attributs de l’objet r1 à travers la méthode afficher() de Rectangle r1.afficher() ; } } Exercice : Ecrire une classe principale (contenant main) qui permet de créer deux objets de type Rectangle et qui permute les attributs (longueur et largeur) de ces deux objets.
  • 9. 15 2.3.Référence d’un objet Les références sont des variables qui permettent de désigner et de manipuler les objets. o Le mot clé « this » : this représente une référence sur l’objet courant, c.à.d. celui qui possède la méthode qui est en train de s’exécuter. La référence this peut être utile : Pour distinguer une variable locale portant le même nom qu’un attribut de la classe. Pour déclencher un constructeur depuis un autre constructeur. Exemple : public class Rectangle { private int longueur, largeur ; public Rectangle (int longueur, int largeur) { this.longueur = longueur ; this.largeur = largeur ; } public Rectangle () { this (0,0) ; //appel de Rectangle (int, int) System.out.println ("constructeur sans arguments ") ; } } o Le mot clé « null » : Le mot clé null, permet de représenter la référence qui ne désigne rien. On peut assigner la valeur null à n’importe quelle variable ou attribut contenant une référence. null est la valeur par défaut d’initialisation des attributs représentant des références. Exemple : public static void main (String [] args) { Rectangle r1 ; //r1 est local à main r1.aficher() ; //erreur de compilation , r1 n’a pas encore reçu de valeur
  • 10. 16 Rectangle r2 = null ; //r2 est local à main et initialisée à null r2.afficher() ; //erreur d’exécution cette fois } o Les opérateurs sur les références : == : pour tester si deux références désignent le même objet != : pour tester si deux références ne désignent pas le même objet = : affecte une référence dans une autre instanceOf : pour tester si l’objet référencé est une instance d’une classe donnée (ou d’une de ses sous-classes) retourne true ou false. Exemple : Rectangle r1 = new Rectangle (5,3) ; Rectangle r2 = new Rectangle (10,5) ; r1 = r2 ; if (r1 != r2) { System.out.println ("r1 et r2 ne désignent pas le même objet") ; } if (r1 instanceOf Rectangle ) { System.out.println ("r1 est un objet de type Rectangle") ; } 2.4. Les objets membres Les champs d’une classe peuvent être des références à des objets. On parle d’objets membres. Si l’objet jouant le rôle d’attribut est déjà créé (utilisé ailleurs), il suffit d’effectuer une affectation entre références à travers un passage de paramètres au niveau du constructeur ou d’une autre méthode. (1er cas) Si l’utilisation de l’objet membre est réservée à l’objet qui l’intègre, alors l’objet membre doit être créé par new au niveau du constructeur de la classe qui l’utilise ou une autre méthode. (2ème cas) Exemple : public class Point { …… } public class Rectangle{
  • 11. 17 private Point centre ; private int longueur, largeur ; public Rectangle (int L, int l, Point p) { longueur = L ; largeur = l ; centre = p ; // 1er cas } public Rectangle () { longueur = 10 ; largeur = 5 ; centre = new Point (0,0) ; // 2ème cas } } 3. Exercices Exercice N°1 : 1. Ecrire une classe Point caractérisée par : - Deux attributs privés : son abscisse et son ordonnée, - un constructeur avec arguments, - un constructeur sans arguments, qui initialise les coordonnées d’un point par des valeurs par défauts de votre choix, - Une méthode pour afficher les coordonnées d’un point sous la forme p=(x, y). - Une méthode pour déplacer le point en ajoutant les valeurs en arguments de cette méthode aux valeurs des coordonnées du point. 2. Ecrire une méthode main qui permet d’initialiser et d’afficher un point, puis de le déplacer et de le réafficher. Exercice N°2 : On se propose de décrire deux figures centrées : le cercle et le rectangle. Chacune est caractérisée par un centre décrit par ses coordonnées. De plus, un cercle est caractérisé par son rayon alors qu’un rectangle par sa longueur et sa largeur. 1. Donner la spécification des classes de chaque objet (point, cercle et rectangle) avec des attributs publics. 2. Ajouter pour chacune des classes Cercle et Rectangle une méthode afficher () qui permet d’afficher leurs attributs. 3. Ecrire une classe principale qui permet de tester le programme 4. Modifier les attributs de la classe Point en privés. Que se passe-t-il à l’exécution ? 5. Ajouter une méthode publique afficher() à la classe Point. 6. Modifier les méthodes d’affichage de Cercle et Rectangle pour pouvoir les afficher tout en maintenant les coordonnées des points privés. Exercice N°3 : Une personne est caractérisée par un CIN, un nom, un prénom et une adresse. L’adresse peut être composée des éléments suivants : numéro, nom de la rue, ville et code postal. 1. Définir la classe Adresse 2. Définir la classe Personne en utilisant un objet Adresse.
  • 12. 18 3. La classe TestProgramme permet de créer deux objets de type personne. Ali habite 36 rue des oliviers, 3002 Sfax et Mohamed habite 20 rue de la liberté, 1002 Tunis. 4. Ecrire une méthode Afficher qui permet d’afficher une personne et une méthode Permuter qui permet de permuter les adresses de deux personnes selon les cas suivants : 4.1. Afficher et Permuter sont deux méthodes de la classe Personne 4.2.Afficher et Permuter sont deux méthodes de la classe TestProgramme Exercice N°4 : 1. Ecrire la classe Nombre qui permet de définir un nombre par sa valeur numérique de type entier. La classe contient les méthodes suivantes : - Le constructeur de Nombre permet de l’initialiser par une certaine valeur, - Méthode d’incrémentation de sa valeur par 1, - Méthode de décrémentation de sa valeur par 1, - Méthode d’affichage de sa valeur. 2. Ecrire la classe TestNombre qui dans sa méthode main doit créer un nombre, l’incrémenter de 2 puis de le décrémenter de 1. Utiliser la méthode d’affichage pour vérifier la valeur du nombre à chaque fois. 3. Que se passera-t-il si on procède à déclarer l’attribut de la classe Nombre comme étant final. 4. On veut ajouter l’instruction suivante Nombre n = new Nombre() ; dans main. 4.1.Qu’appelle-t-on ce constructeur utilisé ? 4.2.Cette instruction provoquerait-elle une erreur et pourquoi ? 4.3.Comment pourrait-on alors l’utiliser sans générer une erreur ? Exercice N°5 : 1. Créer une classe Temps qui contient 3 attributs entiers privés : heure, minute, seconde Définir les constructeurs suivants en utilisant chaque fois que c’est possible la référence this. - Temps (int heure) - Temps (int heure, int minute) - Temps (int heure, int minute, int seconde) 2. Ecrire une méthode affiche() qui affiche le temps sous la forme suivante : "Il est ……..heures ……..minutes……..secondes" 3. Ecrire la méthode main qui permet d’utiliser les trois types de constructeur suivis de la méthode affiche() et qu’obtient-on à l’exécution ?