Chapitre 3:
Classe et Objet
1
Raisonnement Orienté Objet
Le directeur d'une entreprise souhaite gérer les salaires de ses employés au
moyen d'un programme java.
Un employé est caractérisé par son nom, son prénom, son âge et sa date
d'entrée en service dans l'entreprise.
Cette application permet d’ajouter un nouveau employé et calculer son salaire.
2
Identification de l’Objet
Employe
L’OBJET
nom
prenom LES ATTRIBUTS
agre
dateEntree
ajouterEmploye();
LES METHODES
calculerSalaire();
3
Classe VS Objet
• Une classe n'est pas un objet. Une classe est un patron d'objet. C’est le
modèle à suivre lors de la création des instances.
Classe «Employe»
Objet 1 Objet 2 Objet 3
nom: Ahmed nom: Ali nom: Rim
prenom: Mahmoud prenom: Salah prenom: Nejah
age: 27 age: 32 age: 29
dateEntree: 28/10/2012 dateEntree: 12/12/2014 dateEntree: 03/06/2016
4
Classe VS Objet
• Classe: structure d'un objet, la déclaration de l'ensemble
des entités qui composeront un objet.
• Un objet est une instanciation d'une classe objet=instance
• Une classe est composée de deux parties:
1. Les attributs : il s'agit des données représentant l'état
de l'objet
2. Les méthodes : il s'agit des opérations applicables aux
objets
5
Déclaration
Déclaration d’uned’une
classe classe
public class Employe {
/*Déclaration des attributs*/
/*Déclaration des méthodes*/
//commentaire sur une seule ligne
/*commentaires sur
plusieurs lignes*/
}
• Le nom de la classe doit commencer par une majuscule
• Exemple: CompteBancaire, AgenceVoyage
6
Déclaration des attributs
Syntaxe:
type nom_attribut[=value];
Exemple :
int i = 0;
• Le nom de l’attribut doit commencer par une
lettre minuscule
• Exemple: nom, age, dateEntree
7
Déclaration des méthodes
Syntaxe:
Type_retour nom_methode([arguments]){}
Exemple :
void ajouterEmploye(){}
• Le nom de la méthode doit commencer par un
verbe.
8
Notion de référence
• Une référence nous permet de trouver l’objet.
• En utilisant la référence, on peut accéder aux
attributs et méthodes de l’objet.
9
Notion de référence
Mémoire
public class Test{ 0x034009
public static void main(String[] args){ E1 nom XXXXXX
Employe E1; 0x034009
prenom XXXXXX
E1=new Employe(); age XXXXXX
[Link]=‘Ali’; dateEntree XXXXXX
}
} Stack Heap
Cet objet possède une adresse de son
emplacement dans la mémoire (0x034009)
Mémoire
0x034009
E1 nom Ali
0x034009
XXXXXX En utilisant la référence E1 on peut
prenom
age XXXXXX accéder aux attributs de l’objet
dateEntree XXXXXX
10
Stack Heap
Notion de référence
Mémoire
0x034009
E1 nom XXXXXX
0x034009
prenom XXXXXX
public class Test{ age XXXXXX
public static void main(String[] args){ dateEntree XXXXXX
Employe E1=new Employe();
Employe E2=new Employe(); 0x99f311
} E2 nom XXXXXX
0x99f311 XXXXXX
} prenom
age XXXXXX
dateEntree XXXXXX
Stack Heap
11
Les constructeurs
• Pour créer un objet à partir d'une classe, on
utilise l'opérateur new.
• Un constructeur porte le même nom que la
classe dans laquelle il est défini.
• Un constructeur n'a pas de type de retour.
12
Les constructeurs
L’opérateur new fait appel au
public class Test{ constructeur de la classe
public static void main(String[] args){
Employe E1;
class Employe{
E1=new Employe();
Employe() {}
}
}
}
13
Les constructeurs
Constructeur par défaut
Employe(){}
Employe(){
nom=‘Rim’;
prenom =‘ Nejah’;
age= 29;
dateEntree = ‘03/06/2016’;
}
Constructeur surchargé
Employe(String nom, String prenom, int age, String dateEntree){
[Link]=nom;
[Link] = prenom;
[Link]= age;
[Link] = dateEntree;
}
14
Les constructeurs
• En cas d’absence de constructeur dans la
classe, le compilateur crée automatiquement
un constructeur par défaut implicite.
• Si le constructeur surchargé est créé, le
constructeur par défaut implicite ne sera plus
créé par le compilateur.
15
Les constructeurs
• La plateforme java différencie entre les différents
constructeurs déclarés au sein d’une même classe
en se basant sur le nombre des paramètres et
leurs types. On ne peut pas créer deux
constructeurs ayant le même nombre et types
des paramètres.
• Le mot-clé this permet de désigner l’objet
courant, this permet d'accéder aux attributs et
méthodes de l’objet courant. Il permet aussi
d’appeler le constructeur de l’objet courant:
this().
16
Méthodes
Deux types de méthodes servent à donner accès
aux variables depuis l’extérieur de la classe :
• les accesseurs en lecture pour lire les valeurs
des variables (accesseur)
• les modificateurs ou accesseurs en écriture,
pour modifier leur valeur
17
Méthodes
18
Méthodes
Les méthodes sont définies par
• le nom
• les paramètres avec leur types (optionnel)
• le type de retour
• un qualificateur (public, protected, private)
• le corps de la méthode (instructions)
Utilisation : référence. méthode(arguments)
[Link](68);
19
Surcharge d’une méthode
Ajouter une méthode qui a le même nom mais
pas la même signature qu’une autre méthode :
• calculerSalaire(int echelon)
• calculerSalaire(int echelon, double prime)
Il est interdit de surcharger une méthode en
changeant le type de retour.
20
Attribut local
• Déclaré dans une méthode, un constructeur
ou un bloc.
• N’existe que localement, n’est pas visible de
l’extérieur.
• Sorti de son espace, il n’existe plus, la
mémoire correspondante est libérée.
21
Attribut de classe ou static
• Déclaré avec le mot clé static dans une classe,
en dehors d’une méthode
• Défini pour l’ensemble du programme et
visible depuis toutes les méthodes
22
Attribut d’instance
• Utilisé pour caractériser l’instance d’un objet
créée par un constructeur.
• Déclaré dans une classe, en dehors des
méthodes.
• Créé quand un objet est créé et détruit quand
l’objet est détruit.
23
Déclaration des attributs
Tout attribut doit être déclaré avant d’être
utilisé.
Déclaration d’un attribut : On indique au
compilateur que le programme va utiliser une
variable de ce nom et de ce type.
Exemple :
• double prime;
• Employe e1;
24
Déclaration des attributs
• Le nom d'un attribut : est appelé un identificateur
obéissant à certaines règles syntaxiques.
• Le type : correspond au type de données qu'elle
devra contenir, en l'occurrence soit un type
primitif (int, float, char, boolean, etc.), soit un
type composite (String, File, Vector, Array, etc.).
• La valeur : doit être conforme à son type de
données.
25
Méthode de classe
• Pour désigner une méthode static depuis une
autre classe, on la préfixe par le nom de la
classe :
int n = [Link]();
• Comme une méthode de classe exécute une
action indépendante d’une instance
particulière de la classe, elle ne peut utiliser
de référence à une instance courante (this).
26
La méthode static main
La méthode main() est nécessairement static,
car :
• La méthode main() est exécutée au début du
programme.
• Aucune instance n’est donc déjà créée lorsque
la méthode main() commence son exécution.
Ça ne peut donc pas être une méthode
d’instance.
27