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

POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationMouna Torjmen
 
POO Java Chapitre 1 Classe & Objet
POO Java Chapitre 1 Classe & ObjetPOO Java Chapitre 1 Classe & Objet
POO Java Chapitre 1 Classe & ObjetMouna Torjmen
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptionsAmir Souissi
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en cbenouini rachid
 
Cours langage c
Cours langage cCours langage c
Cours langage ccoursuniv
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siNarûtö Bàl'Sèm
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismeMouna Torjmen
 
UML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriUML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriMansouri Khalifa
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
 

Tendances (20)

POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 Encapsulation
 
POO Java Chapitre 1 Classe & Objet
POO Java Chapitre 1 Classe & ObjetPOO Java Chapitre 1 Classe & Objet
POO Java Chapitre 1 Classe & Objet
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Cours java
Cours javaCours java
Cours java
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
Langage C#
Langage C#Langage C#
Langage C#
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptions
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en c
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
Python avancé : Tuple et objet
Python avancé : Tuple et objetPython avancé : Tuple et objet
Python avancé : Tuple et objet
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 si
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
 
UML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriUML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouri
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Tp n 6 linux
Tp n 6 linuxTp n 6 linux
Tp n 6 linux
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 

Similaire à Chapitre 2 classe et objet

Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objetsAbdoulaye Dieng
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
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.pptxTarikElMahtouchi1
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Chap 03 poo en java partie1
Chap 03 poo en java partie1Chap 03 poo en java partie1
Chap 03 poo en java partie1Yassine Badri
 
Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objetsAbdoulaye Dieng
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdfAabidiHafid
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2Yassine Badri
 
Diagramme de Classe
Diagramme de ClasseDiagramme de Classe
Diagramme de ClasseabdoMarocco
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)Mahfoud EL HOUDAIGUI
 

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
 
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
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 

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 5 linux
Tp n 5 linuxTp n 5 linux
Tp n 5 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

SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxmmatar2
 
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEBONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEgharebikram98
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 

Dernier (20)

SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptx
 
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEBONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 

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 ?