Vous êtes sur la page 1sur 9

POO Java Par M.

Youssfi

Programmation
Orientée Objet
java :

Objet et Classe

36
POO Java Par M.Youssfi

L’aspect objet du langage Java

Introduction
La programmation orientée objet permet de concevoir une application sous la forme d'un
ensemble d'objets reliés entre eux par des relations : Lorsque l'on programme avec cette méthode, on se
pose plus souvent la question « qu'est-ce que je manipule ? », que « qu'est-ce que je fait ? ».

Le programme orienté objet est pensé en terme d'objets abstraits inter opérant entre eux alors que
la programmation traditionnelle pense une application en termes de fonctionnalités.

L'une des caractéristiques de cette méthode permet de concevoir de nouveaux objets à partir
d'objets existants. Ainsi, il est possible de spécialiser un objet pour des besoins spécifiques. On peut donc
réutiliser les objets dans plusieurs applications. La réutilisation du code fut un argument déterminant pour
venter les avantages des langages à objets.

Les interfaces graphiques se prêtent bien à une conception orientée objets car les objets ne sont
pas seulement abstraits mais possèdent une représentation graphique sous la forme d'une fenêtre ou d'un
élément graphique.

Dans ce cours de programmation orientée objet, nous allons découvrir les concepts de l’orienté
objet implémentés par java à savoir :

- Objet et classe
- Héritage
- Encapsulation (Accessibilité)
- Polymorphisme

L’objectif de ce chapitre est de maîtriser les concepts relatifs aux objets et aux classes.

Objet, Classes
1-Objet
Un objet est une structure informatique caractérisée par un état et un ensemble d'opérations
exécutables par cet objet qui caractérise son comportement.
Objet = état + comportement (opérations)

Exemples:

Une Fenêtre :
• Etat : position, taille, bordure, titre, couleur,...
• Opérations: dessiner, déplacer, agrandir...

37
POO Java Par M.Youssfi

Un Fichier
• Etat : nom, directory, id, protections, propriétaire, contenu,.
• Opérations : ouvrir, fermer, détruire,
On regroupe un ensemble de caractéristiques communes aux objets sous la forme de structures formelles,
appelées classes:

Exemple de représentation graphique d’un objet (Notation UML) :

c5:Voiture
couleur=bleu
puissance=130 Etat
curburant=30

démarrer()
accélérer()
freiner() Comportement

2- Classe :
Une classe est un modèle de la structure statique (les champs ou attributs) et du comportement
dynamique (les opérations ou méthodes) des objets associés à cette classe, que l'on appelle ses instances.
La classe décrit le domaine de définition d’objets. Chaque objet appartient à une classe. Les
généralités sont contenues dans la classe alors que les particularités dans les objets. Les objets
informatiques sont construits à partir de la classe par un processus appelé instanciation. De ce fait tout
objet est une instance de classe.
Une classe est définie par les attributs et les opérations (méthodes).
• Attributs : Appelés également champs correspondent aux propriétés de la classe. Ils sont définis
par un nom, un type de données et éventuellement une valeur initiale. Un attribut est une variable
qui stocke des données.
Exemple : considérons la classe Employé caractérisée par les attributs code, nom et nbEmployés (nombre
d’employés)

Employé
code : int
nom : String
nbEmployés : static int

Trois attributs de la classe Employé

Les attributs code et nom sont des caractéristiques de chaque objet Employé contrairement au
champ nbEmployés qui est une caractéristique commune à tous les objets. On dira que nbEmployés est
attribut statique.

Chaque objet, instance d’une classe, donne des valeurs particulières à tous les attributs définis
dans sa classe sauf les attributs statiques ce qui détermine son état.

38
POO Java Par M.Youssfi

Exemples :

: Employé : Employé
code =1 code =2
nom ="jamil" nom ="alami "

Deux objets de la classe Employé

Définition :

Un attribut statique d’une classe est un attribut qui appartient à la classe et qui est partagé par tous les
objets de cette classe. Un attribut statique est considéré comme étant une variable globale à tous les objets.
Les attributs statiques ne sont pas instanciés dans les objets.

• Méthodes : Les méthodes permettent de décrire les comportements des objets. Elles représentent
des procédures ou des fonctions qui permettent d’exécuter un certain nombre d’instructions.
Parmi les méthodes d’une classe existe une méthode particulière, qui porte le même nom que la
classe, qui s’appelle le constructeur. Le rôle du constructeur étant créer les objets de la classe en
les initialisant.
Dans l’exemple précédent, nous pourrons définir les méthodes afficheCode() et afficheNom() qui
affichent respectivement le code et le nom d’un employé.

Employé
Attributs :
code : int
nom : String
nbEmployés : static int

Constructeur :
Employé()
Méthodes :
afficheCode()
afficheNom()

Trois attributs deux méthodes de la classe Employé

39
POO Java Par M.Youssfi

Exemple d’implémentation la classe Employé avec java :

class Employe{
// Les attributs
int code ;
String nom ;
static int nbEmployes = 0 ;
//Constructeur
Employe(){
++nbEmployes ;
code=nbEmployes ;
}
// Les méthodes
void afficheCode(){
System.out.println("Le code est : " + code) ;
}
void afficheNom(){
System.out.println("Le nom est : " + nom) ;
}
}

3- Création d’un objet à partir d’une classe :


L’opération de création d’un objet à partir d’une classe s’appelle instanciation. Pour créer un objet
en Java, il faut utiliser le mot clé new, suivi du nom du constructeur de la classe, avec les parenthèses et
les arguments éventuels. Par exemple, pour créer une instance de la classe Employé (ou, en d'autres
termes un objet de type Employé), nous utiliserons la syntaxe suivante:

new Employe();

L’objet ainsi créé n’est identifié par un nom. C’est un objet qui ne peut pas être exploité une fois
qu’il est créé. C’est donc un objet perdu en mémoire.

Comment retenir les objets : les handles :

Nous avons donc vu que nous pouvions créer un objet facilement à l'aide de l'opérateur new et du
constructeur de l'objet. Nous pouvons utiliser immédiatement l'objet ainsi créé en utilisant par exemple la
syntaxe suivante :
(new Employe()).afficheCode();
cette instruction permet de créer un objet de la classe Employe et en même moment appelle la méthode
afficheCode() pour afficher le code de cet employé.
Si nous voulons pouvoir l'utiliser plus tard, il faut, avant de confier cet objet à Java, s'assurer que
nous pourrons le récupérer. Pour cela, il suffit de pouvoir l'identifier.

En Java, tous les objets sont logés à la même enseigne : ils sont identifiés à l'aide d'un handle. Le
mot handle signifie poignée, en français. Les objets peuvent avoir plusieurs handles. Autant que vous le
souhaitez. En revanche, un handle ne peut correspondre qu'à un seul objet simultanément.

40
POO Java Par M.Youssfi

Création des handles

Rien n'est plus simple que de créer un handle d'objet. Il suffit pour cela de le déclarer en indiquant vers
quelle classe d'objets il est susceptible de pointer. Par exemple, pour créer le handle alpha pouvant pointer
vers une instance d'Employe, nous écrirons :

Employe alpha;

Vers quoi pointe ce handle ? Pour l'instant, vers rien. En effet, nous avons déclaré le handle, ce
qui suffit à le faire exister. En revanche, nous ne l'avons pas initialisé, c'est-à-dire que nous ne lui avons
pas attribué sa valeur initiale. Pour l'instant, il ne pointe donc vers rien.

Modifier l'affectation d'un handle

Nous avons vu qu'un objet pouvait être créé à l'aide de son constructeur et de l'opérateur new.
Nous ne pouvons affecter un premier handle à un objet nouvellement créé qu'au moment de sa création.
En effet, si nous écrivons les lignes :

Employe alpha;
new Employe();

Il n'y a ensuite aucun moyen d'établir un lien entre le handle créé à la première ligne et l'objet créé à la
seconde. Il faut donc effectuer l'affectation en même temps que la création, de la façon suivante :

Employe alpha;
alpha = new Employe();

Ce qui ne signifie en aucun cas que le handle alpha soit égal à l'objet créé, mais simplement qu'il
pointe vers cet objet. Il pourra donc servir à manipuler cet objet. Java nous permet même de condenser ces
deux lignes en une seule sous la forme :

Employe alpha = new Employe();

Handle : Objet :
alpha
Addresse de l’objet :Employe
code=1
nom= "jamil "

afficheCode()
afficheNom()

Utilisation des membres de l’objet créé :


Pour accéder aux membres d’un objet créé, on utilise son handle suivi d’un point, puis du
nom de l’attribut ou de la méthode.

41
POO Java Par M.Youssfi

Exemple :
appha.nom= "jamil " ;
alpha.afficheNom() ;
System.out.println(alpha.code) ;
System.out.println(alpha.nbEmployes) ;
System.out.println(Employe.nbEmployes) ;

Les membre statiques sont accessibles en utilisant soit le handle d’un objet quelconque de la classe, soit
directement le nom de la classe.

La destruction des objets : le garbage collector

Avec certains langages, le programmeur doit s'occuper lui-même de libérer la mémoire en


supprimant les objets devenus inutiles. C'est une des principales sources de mauvais fonctionnement des
programmes.

Avec Java, le problème est résolu de façon très simple : un programme, appelé garbage collector, ce qui
signifie littéralement "ramasseur d'ordures", est exécuté automatiquement dès que la mémoire disponible
devient inférieure à un certain seuil. De cette façon, vous pouvez être assuré qu'aucun objet inutilisé
n'encombrera la mémoire au point d'être une cause de problèmes.

Exemple Test

• Classe Employe :

1- Ecrire le code java de la classe Employe


2- Enregistrer le fichier sous le nom Employe.java
3- Compiler le fichier Employe.java
class Employe{
// Les attributs
int code ;
String nom ;
static int nbEmployes = 0 ;
//Constructeur
Employe(){
++nbEmployes ;
code=nbEmployes ;
}
// Les méthodes
void afficheCode(){
System.out.println("Le code est : " + code) ;
}
void afficheNom(){
System.out.println("Le nom est : " + nom) ;
}
}

42
POO Java Par M.Youssfi

• Classe TestEmploye :

1- Ecrire le code java de la classe TestEmploye


2- Enregistrer le fichier sous le nom TestEmploye.java
3- Compiler ce fichier ( javac TestEmploye.java)
4- Exécuter ce programme (java TestEmploye)

class TestEmploye{
public static void main(String[] args){

new Employe(); // Crée un objet anonyme

Employe e2 ; // Crée un handle,pour le moment, in pointe vers null


e2=new Employe(); // Crée un objet Employe puis affecte son adresse au handle e2

Employe e3=new Employe(); // Crée le handle e3, crée un objet et affecter l'objet au handle e3

e2.nom="Jamil"; // définit la valeur l'attribut nom de l'objet e2


e2.afficheCode(); // On fait appel à la méthode afficheCode() de l'objet e2
e2.afficheNom(); // On fait appel à la méthode afficheNom() de l'objet e2
e3.afficheCode(); // On fait appel à la méthode afficheCode() de l'objet e3

System.out.println("Nombre d'employés en utilisant l'objet e2="+e2.nbEmployes);


System.out.println("Nombre d'employés en utilisant l'objet e3="+e3.nbEmployes);
System.out.println("Nombre d'employés en utilisant la classe Employe="+e2.nbEmployes);
}
}

43
POO Java Par M.Youssfi

Représentation graphique simplifiée des objets de l’application :

class Employé
Attributs :
code : int
nom : String
nbEmployés : static int =3

Constructeur :
Employé()
Méthodes :
afficheCode()
afficheNom()

Employe e2 ;
new Employe() ; Employe e3=new Employe() ;
e2=new Employe() ;
:Employe e2:Employe e3:Employe

Attributs : Attributs : Attributs :


code =1 code =2 code =3
nom =null nom =Jamil nom =null

afficheCode() afficheCode() afficheCode()


afficheNom() afficheNom() afficheNom()

Premier Objet Deuxième Objet Troisième Objet

44

Vous aimerez peut-être aussi