Chapitre 3:
Classe et Objet
Année Universitaire: 2023 - 2024 68
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.
69
Identification de l’Objet
Employe
L’OBJET
nom
prenom LES ATTRIBUTS
agre
dateEntree
ajouterEmploye();
LES METHODES
calculerSalaire();
70
Les attributs
Caractéristique d’un attribut
Variable globale de la classe
Accessible dans toutes les méthodes de la classe
Syntaxe:
type nom_attribut[=value];
Exemple :
int i = 0;
• Le nom de l’attribut doit commencer par une lettre minuscule
• Exemple: nom, age, dateEntree
71
Les méthodes
Syntaxe:
Type_retour nom_methode([arguments]){}
Exemple :
void ajouterEmploye(){}
• Le nom de la méthode doit commencer par un verbe.
72
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
73
Classe VS Objet
La création d’un objet à partir d’une classe est appelée une
instanciation
L’objet créé est une instance de la classe
Déclaration
Définit le nom et le type de l’objet
Un objet seulement déclaré vaut « null »
Création et allocation de la mémoire
Appel de méthodes particulières: constructeurs
La création réserve la mémoire et initialise les attributs
Renvoi d’une référence sur l’objet maintenant créé
monObjet != null
74
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.
75
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
Création d’une variable E1 de type Employe
E1 est une référence à la classe Employe
Mémoire
Instanciation de la classe Employe = création
0x034009 de l’objet
E1 nom Ali Cet objet possède une adresse de son
0x034009
prenom XXXXXX emplacement dans la mémoire (0x034009)
age XXXXXX
dateEntree XXXXXX En utilisant la référence E1 on peut
accéder aux attributs de l’objet 76
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
} prenom XXXXXX
age XXXXXX
dateEntree XXXXXX
Stack Heap
77
Les constructeurs
Une instance d’une classe est créée par un des constructeurs de la
classe
new Constructeur (paramètres)
Une fois qu’elle est créée, l’instance
a son propre état interne (les valeurs des variables)
78
Les constructeurs
Méthode particulière, sans type de retour
Possède le même nom que celui de la classe
Permet d’initialiser les attributs de l’objet nouvellement créé
On peut définir plusieurs constructeurs différents
Différence au niveau des paramètres
Constructeur par défaut
Utilisé si aucun autre constructeur est spécifié
Initialise à « null » tous les attributs de l’objet
79
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() {}
}
}
}
80
Les constructeurs
Constructeur par défaut
Employe(){}
Employe(){
nom=‘’Rim’’; Le constructeur par défaut initialise
prenom =‘’Nejah’ ’; les attributs de la classe aux valeurs
age= 29; par défaut
dateEntree = ’’03/06/2016’’;
}
Constructeur surchargé
Employe(String nom, String prenom, int age, String dateEntree){
[Link]=nom;
[Link] = prenom;
[Link]= age;
[Link] = dateEntree;
}
81
Les constructeurs
Un autre exemple:
Les constructeurs
Un autre exemple:
Les constructeurs
Un autre exemple:
Les constructeurs
• Une classe qui déclare aucun constructeur
explicitement en possède toujours un: le
constructeur vide par défaut.
• Si l’on crée un constructeur explicite -> le
constructeur vide implicite ne sera plus créé par le
compilateur.
• Pour l’utiliser, il doit être créer explicitement
85
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.
86
Les constructeurs
• si le constructeur a comme argument un nom de variable
identique à un attribut de la classe et qu’on souhaite
l'initialiser avec la variable passée en paramètre, alors on écrit
:
constructeur(int maVar)
{
[Link]=maVar;
}
87
Accès aux membres
88
Accès aux membres
Destruction d'un objet
Destruction d'un objet
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.
il est interdit d'avoir ces deux méthodes dans une classe
int calculerSalaire(int echelon)
double calculerSalaire(int echelon)
92
Attribut local
• Déclaré dans une méthode ou un constructeur
• 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.
93
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.
• Appelé avec le nom de l’instance.
94
Attribut de classe 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.
• Il n’appartient pas à une instance particulière
mais à toute la classe.
95
Attribut de classe static
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.
97
La méthode toString()
La méthode toString() est définie dans la classe Object ; en
conséquence toutes les classes Java en hérite.
La méthode toString() définie dans la classe Object renvoie le
nom de la classe de l'objet concerné suivi de l'adresse de cet
objet.
Redéfinir la méthode toString() afin de donner plus de
description à l’objet.
La méthode toString()
Le prototype de la méthode toString() défini dans la
classe Object est:
public String toString();
Lors de la redéfinition, on fait en sorte que la méthode
retourne une chaine de caractère :
public String toString() {
return "l’employé " + [Link] + " : age " + [Link] +
", date_entrée " + [Link];
}
La méthode toString()
public String toString() {
return "l’employé " + [Link] + " : age " + [Link] +
", date_entrée " + [Link];
}
[Link](E1);
conduit à écrire à l'écran:
l’employé Ahmad : age 30, date_entrée 10/07/2021
Exercice d'application
Un robot est défini par un identifiant (chaîne), une position dans le plan
cartésien et une orientation ("Est", "Ouest", "Nord" et "Sud"). Le Robot ne
peut se déplacer que selon ces 4 directions.
Définir une classe Robot avec différents constructeurs.
Ajouter une méthode avancerRobot. Le nombre de pas est spécifié dans
les paramètres de la méthode.
Ajouter une méthode tournerDroite.
Ajouter une méthode qui affiche l’état d’un robot.
Ecrire une classe TestRobot pour mettre en œuvre la classe Robot.