You are on page 1of 82

Rpublique Algrienne Dmocratique et Populaire

Ministre de lEnseignement Suprieur et de la


Recherche Scientifique
Universit de Ghardaia

Programmation Oriente
Oriente Objet
Objet
Programmation

Prsente par :
Mr. CHABBI Samir

Anne universitaire 2016/2017


2

PLAN DU COUR

INTRODUCTION
INTRODUCTION A
A LA
LA POO
POO

LES
LES CLASSES
CLASSES

HERITAGE
HERITAGE ET
ET POLYMORPHISME
POLYMORPHISME

INTERFACE
INTERFACE ET
ET IMPLEMENTATION
IMPLEMENTATION

INTERFACE
INTERFACE GRAPHIQUE
GRAPHIQUE ET
ET APPLET
APPLET

INTRODUCTION

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions
Il existe diffrents styles de programmation
Style applicatif
Fond sur l'valuation d'expressions qui ne dpendent que de la
valeur des arguments, et non de l'tat de la mmoire
On parle aussi de programmation fonctionnelle
Proche des notations mathmatiques, utilise beaucoup la rcursivit
Accepte des arguments, produit un rsultat (pas d' effet de bord )
Ex: Lisp, Caml, ML, Haskel
Style impratif
Fond sur l'excution d'instructions qui modifient l'tat de la mmoire
Utilise beaucoup les itrations et autres structures de contrle
Les structures de donnes sont fondamentales
Ex: Fortran, C, Pascal
5

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions
Le style objet
C'est un style de programmation o l'on considre que des
composants autonomes (les objets) disposent de ressources et
de moyens d'interactions entre eux.
Ces objets reprsentent des donnes qui sont modlises par
des classes qui dfinissent des types
En plus de la manire dont sont structurs leurs objets, les
classes dfinissent les actions qu'ils peuvent prendre en charge
et la manire dont ces actions affectent leur tat. ce sont des
messages ou des mthodes .

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions
Programmation structure: Dans ce type de programmation, les
programmes sont dcoups en fonctions indpendantes qui sont ellesmmes constitues de blocs d'instructions structures.
PROGRAMME = STRUCTURE DE DONNEES + INSTRUCTIONS
Les structures de donnes et les fonctions qui les utilisent sont
spares. Les donnes sont gnralement en dbut de programme et
donc visibles de toutes les fonctions qui suivent.
Les problmes lis cette catgorie:
- effets de bords (tat inattendu des donnes dans une fonction suite
leurs modifications par une autre fonction).
- ncessit de reconstruire le programme lorsque les structures de
donnes sont modifies.
7

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions

La solution est la programmation oriente objet qui repose sur


plusieurs principes :
-l'objet
-l' encapsulation des donnes
-la classe
-l'hritage
-le polymorphisme

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions
Notions essentielles
Type, Classe/Objet, instanciation
Variable, Rfrence
Champ/attribut, mthode

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions
Les objectifs de la POO:
Faciliter le dveloppement et lvolution des applications ;
Permettre le travail en quipe ;
Augmenter la qualit des logiciels (moins de bugs).
Solutions proposes :
Dcoupler (sparer) les parties des projets ;
Limiter (et localiser) les modifications lors des volutions ;
Rutiliser facilement du code.

10

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions
1. Les variables systme

11

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions
2. Les boucles
But : effectuer plusieurs fois le mme type doprations
Exemple: Sommer les 10 premiers entiers.

en C++ il faut initialiser les variables, sinon une valeur alatoire est attribue

12

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions
3. Les fonctions
But: Accomplir une tche.

13

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions

Transmission de variables
Transmission par valeur
Les valeurs sont dupliques. On change les valeurs des copies
Transmission par adresse
Les valeurs ne sont pas dupliques. On change les valeurs des
originaux.

14

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions

15

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions
Le langage Java :

est un langage de programmation oriente objet


cre par James Gosling et Patrick Naughton (Sun)
prsent officiellement le 23 mai 1995.
dernire version stable : JDK 1.7 (ou Java 7)

Les objectifs de Java :

simple, oriente objet ;


robuste et sr ;
indpendant de la machine employe pour lexcution ;
trs performant ;
multitches.
16

INTRODUCTION
INTRODUCTION
Notions de
de base
base
Notions
Plusieurs langages orients objet:
C++ : trs utilis
C# : langage de Microsoft
Objective C : langage utilis par Apple
PHP : langage trs utilis sur le Web
Python
Ruby
Eifel
Ada
Smalltalk
...
La syntaxe change mais le concept objet est le mme !

17

INTRODUCTION
INTRODUCTION
Historique
Historique
61-67 : Simula
72 : Smalltalk
81-86 : C++
85 : Eiffel
94-95 : Java
95 : Ruby
2000
: C#
2001
: Turing Award
2002
: Version 1.4:disponible sur http:/ /java.sun.com
Plusieurs kits de dveloppement logiciel Java2:J2SDK

18

INTRODUCTION
INTRODUCTION
Historique
Historique
* JDK 1.0 ( janvier 1996)
* JDK 1.1 ( dcembre 1997)
* J2SE 1.2 (dcembre 1998) nom de code : Playground. => java 2
* J2SE 1.3 (mai 2000) nom de code : Kestrel.
* J2SE 1.4 (fvrier 2002) nom de code : Merlin.
* J2SE 5.0 (septembre 2004) nom de code : Tiger.
* Java SE 6 nom de code : Mustang.
* Java SE 7 nom de code : Dolphin.
Depuis 1998 : Java Community Process (JCP) qui utilise les Java
Specification Request (JSR) pour spcifier les volutions de la plate-forme
J2SE : java 2 Standard Edition
J2EE : java 2 Entreprise Edition
J2ME : java 2 Mobile Edition

19

Les classes

LES CLASSES
CLASSES
LES
Objet
Objet
Un programme POO construit des objets.
Chaque objet associe des donnes (aussi appeles champs,
variables, attributs) et des mthodes (rarement appeles
procdures, fonctions) agissant exclusivement sur les
donnes de l'objet.
Les objets contiennent donc :
Des donnes : Attributs
Des actions : Mthodes
En Java, on dfinit la nature et le comportement d'un objet
dans une
classe.
21

LES CLASSES
CLASSES
LES
Objet
Objet
objet
reprsente un lment du monde rel, ou dun domaine de
problme donn
(exemple: la voiture rouge, l, sur le parking)
classe
reprsente tous les objets dune mme catgorie (exemple:
voiture)

22

LES CLASSES
CLASSES
LES
Encapsulation des
des donnes
donnes
Encapsulation
L'encapsulation permet de protger les donnes d'un objet.
En effet, il n'est pas possible d'agir directement sur les donnes d'un
objet. Il est ncessaire de passer par ses mthodes qui jouent le rle
d'interface obligatoire.
L'appel de mthode est en fait l'envoi d'un message l'objet.
Vu de l'extrieur, un objet se caractrise uniquement par les
spcifications de ses mthodes .
La manire dont sont rellement implantes les donnes est sans
importance. Le fonctionnement interne de l'objet est cach au monde
extrieur.

23

LES CLASSES
CLASSES
LES
Encapsulation des
des donnes
donnes
Encapsulation
Lencapsulation est l'ide de cacher l'information contenue dans un objet
et de ne proposer que des mthodes de manipulation de cet objet.
Lors de la conception dun programme orient-objet, le programmeur doit
identifier les objets et les donnes appartenant chaque objet mais aussi
des droits daccs quont les autres objets sur ces donnes.
Lencapsulation de donnes dans un objet permet de cacher ou non leur
existence aux autres objets du programme.
public : les attributs dits public sont accessibles tous.
private : les attributs privs sont accessibles seulement par l'objet lui
mme.
Exemple : la classe Livre encapsule les attributs titre et emprunteur

24

LES CLASSES
CLASSES
LES
Dfinition de
de la
la classe
classe
Dfinition
La classe est l'lment fondamental contenant les lments de
programme: une dclaration de donnes, une mthode ou une instruction
appartenant une classe.
Une classe est dclare avec le mot-cl class.
Le concept de classe correspond la gnralisation de la notion de
type des programmes structurs.
Une classe est une description d'un ensemble d'objets ayant une structure
de donnes commune et disposant des mmes mthodes.
Les dfinitions des classes doivent correspondre des units
fonctionnelles indpendantes.
Une classe est un modle d'objet. A l'inverse, un objet a une ralit
matrielle car il possde des champs avec valeurs.

25

LES CLASSES
CLASSES
LES
Dfinition de
de la
la classe
classe
Dfinition
Remarque:
Les objets apparaissent comme des variables d'un tel type classe: un objet
est une instance de sa classe (un objet possde un type classe).
Les valeurs des champs sont propres chaque objet.
Les mthodes sont communes l'ensemble des objets d'une mme classe.
JAVA possde des bibliothques de classe appeles API JAVA (Application
Programmation Interfaces, Interface de Programmation d'Application).
PROGRAMMER EN JAVA = PROGRAMMER SES PROPRES CLASSES +
UTILISATION DES API

26

LES CLASSES
CLASSES
LES
Dfinition de
de la
la classe
classe
Dfinition

27

LES CLASSES
CLASSES
LES
Package
Package
JAVA p ossde de nombreuses classes prdfinies. Ces classes sont
regroupes en catgories de classes de mme genre appeles package
(modules). Une rfrence gnrale aux packages existe sous lappellation de
bibliothques de classes Java ou dinterface de programmation dapplication
Java(API : Applications programming interface).
Tous les packages de lAPI Java sont stocks dans un rpertoire java ou
javax qui contiennent de nombreux sous- rpertoires.
Un nom de package est associ un rpertoire.
La classe JoptionPane dans le package javax.swing permet dafficher une
bote de dialogue avec des informations.

28

LES CLASSES
CLASSES
LES
Importer Package
Package
Importer
Ligne : import javax.swing.
Linstruction import permet didentifier et de charger les classes ncessaires
au programme.
Exemple:
La classe JoptionPane appartient au package javax.swing qui comporte de
nombreuses classes permettant de dfinir des interfaces utilisateur graphique
ou GUI (Graphical User Interface).

29

LES CLASSES
CLASSES
LES
Contenu dune
dune classe
classe
Contenu
Une classe contient un en- tte et un corps comportant les dfinitions de ses
champs et mthodes.
Class Equation
{
/ / Dfinition des champs et mthodes de la classe.

}
En labsence du mot- cl public, laccs la classe Equation est limit aux
seules classes du mme package.

30

LES CLASSES
CLASSES
LES
Reprsentation graphique
graphique dune
dune classe
classe
Reprsentation

31

LES CLASSES
CLASSES
LES
Avantages des
des classes
classes
Avantages
Avantages de crer ses propres classes:
connaissance exacte de son fonctionnement.
Avantages d'utiliser des classes API ou des classes disponibles:
gain de temps (pas de conception, pas de dveloppement)
Performance
portabilit

32

LES CLASSES
CLASSES
LES
Exemple de
de classe
classe
Exemple

33

LES CLASSES
CLASSES
LES
Exemple de
de classe
classe
Exemple
Une classe Rectangle utilise pour instancier des objets reprsentant des
rectangles, encapsule 4 entiers : la longueur et la largeur du rectangle ainsi que
la position en abscisse et en ordonne de lorigine du rectangle (par exemple, le
coin en haut gauche). On peut alors imaginer que la classe Rectangle
implmente une mthode permettant de dplacer le rectangle qui
ncessite en entre deux entiers indiquant la distance de dplacement en
abscisse et en ordonne.
Laccs aux positions de lorigine du rectangle se fait directement (i.e. sans
passage de paramtre) lorsque les donnes sont encapsules dans la classe o
est dfinie la mthode. Un exemple, crit en Java, de la classe Rectangle est
donn ci-dessous :

34

LES CLASSES
CLASSES
LES
Exemple de
de classe
classe
Exemple

35

LES CLASSES
CLASSES
LES
Identification des
des objets
objets
Identification
A partir dun cahier des charges
1. liste des mots clefs (tout mot clef peut tre une classe)
2. rduire la liste en supprimant :
les synonymes
les classes non pertinentes
3. Les classes peuvent voluer : ajout de nouvelles classes lors de
limplmentation pour crer une liste de classes par exemple.

36

LES CLASSES
CLASSES
LES
Dclaration des
des classes
classes
Dclaration
Une classe contient un en- tte et un corps comportant les dfinitions de ses
champs et mthodes.
Exemple:
Class Equation
{
/ / Dfinition des champs et mthodes de la classe.

}
En labsence du mot- cl public, laccs la classe Equation est limit aux
seules classes du mme package.

37

LES CLASSES
CLASSES
LES
Dfinition des
des champs
champs
Dfinition
private double coeffX2 ;
..
Le mot- cl private prcise que les champs de la classe Equation ne sont pas
accessibles lextrieur de la classe, ie en dehors de ses propres mthodes.
encapsulation des donnes.

38

LES CLASSES
CLASSES
LES
Dfinition des
des mthodes
mthodes
Dfinition
Dfinition mthode= similaire la mthode main
Soit dfinir pour la classe Equation les trois mthodes suivantes:
-initialisation
-rsolution
-affichage
public void initialisation (double X2, double X1, double X0)
{
coeffX2=X2 ;

39

LES CLASSES
CLASSES
LES
Utilisation dune
dune classe
classe
Utilisation
La classe Equation permet dinstancier des objets de type Equation et de leur
appliquer les mthodes publiques : initialisation, rsolution et affichage.
Elle ne peut tre utilise directement. Il faut crer une variable de type Equation
(uneEquation) appele instance de la classe Equation.
Cette utilisation se fait dans une autre mthode quelconque, en particulier la
mthode main.
La dclaration est similaire une variable de type primitif
Equation uneEquation
rserve un emplacement mmoire pour une rfrence un objet de type
Equation (pas de rservation pour un emplacement mmoire pour un objet de
type Equation). Dit autrement, lidentificateur dobjet uneEquation est une
rfrence lobjet et non une variable contenant directement une valeur,
comme pour les variables de type primitif.

40

LES CLASSES
CLASSES
LES
Cration dun
dun objet
objet
Cration
La rservation dun emplacement mmoire pour un objet de type Equation ou
allocation, se fait en appelant loprateur unaire new Equation() qui fournit en
rsultat la rfrence cet emplacement.
Ainsi, laffectation
UneEquation=new Equation()
Cre (construit) un objet de type Equation et place sa rfrence dans
uneEquation qui doit avoir t dclare au pralable.
Loprateur new fait appel Equation() qui est le constructeur par dfaut de la
classe Equation .
Il est possible de regrouper dclaration et cration.
Equation uneEquation = new Equation()

41

LES CLASSES
CLASSES
LES
Cration dun
dun objet
objet
Cration
Aprs avoir dclar et cr un objet, il est possible dappliquer les mthodes
lobjet correspondant, ie rfrenc par uneEquation .
uneEquation.initialisation (1.0, 5.0, 1.0)
Cette instruction appelle la mthode initialisation du type Equation en
lappliquant lobjet de rfrence uneEquation et en lui transmettant les
arguments 1.0, 5.0, 1.0 ,
Le prfixe uneEquation prcise la mthode sur quel objet elle doit oprer. Ainsi,
linstruction coeffX2=X2 de la mthode initialisation() place la valeur reue pour
X2 dans le champ coeffX2 de lobjet uneEquation .
Lappel dune mthode se fait en prfixant le nom de la mthode par le nom de
lobjet suivi dun point :
NomObjet.nomMthode (liste_arguments)
Une mthode est toujours suivie de () (permettant la distinction avec un champ)
Avec une mthode utilisant des arguments , la liste des arguments rels spars
par des virgules est mise entre ().
Par convention, lobjet uneEquation est appel une variable de classe.
42

LES CLASSES
CLASSES
LES
Plusieurs classes
classes dans
dans un
un mme
mme fichier
fichier
Plusieurs
source
source

Un fichier source peut contenir plusieurs classes mais obligatoirement une


seule classe publique.
La classe contenant la mthode main doit obligatoirement tre publique (pour
laccs la machine virtuelle).
La compilation cre un fichier .class par classe.

43

LES CLASSES
CLASSES
LES
Exemple
Exemple
Problme :Rsolution dune quation du 2nd degr
Fichier : EquationSecondDegre.java
Import java.text.DecimalFormat ;
/ /Classe Equation
class Equation
{
/ /Les coefficients et les racines sont sous forme de champs.
private double coeffX2 ;
private double coeffX1 ;
private double coeffX0 ;
private double racine1 ;
private double racine2 ;

44

LES CLASSES
CLASSES
LES
Exemple
Exemple
/ /Mthode dinitialisation
public void initialisation(double X2, double X1, double X0)
{
coeffX2=X2 ;
.
.
.
}
/ /Mthode rsolution
public void rsolution()
{
double discri ;
discri=(coeffX1*coeffX1-4*coeffX2*coeffX0) ;
racine1= ;
racine2= ;
}
45

LES CLASSES
CLASSES
LES
Exemple
Exemple

/ /Mthode daffichage
public void affichage()
{
DecimalFormat deuxDecimal = new DecimalFormat( 0.00 ) ;
System.out.println( Racine1= +deuxDecimal.format(racine1)) ;
System.out.println( Racine2= +deuxDecimal.format(racine2));
}
}

46

LES CLASSES
CLASSES
LES
Exemple
Exemple
/ /Classe Test
public class EquationSecondDegre
{
/ /Mthode principale
public static void main (String[ ] args)
{
Equation uneEquation; / / Dclaration de lobjet uneEquation
uneEquation=new Equation() ;
uneEquation.initialisation(1.0,5.0,1.0);
uneEquation.rsolution();
uneEquation.affichage();
}
}

47

LES CLASSES
CLASSES
LES
Exemple
Exemple

Excution : Racine1= -0,21


Racine2= -4,79

48

LES CLASSES
CLASSES
LES
Une classe
classe par
par fichier
fichier source
source
Une
(1)Sauvegarder la classe Equation dans un fichier Equation.java
Fichier : Equation.java
import java.test.DecimalFormat ;
public class Equation
{
.
}
(2)Compiler le fichier Equation.java. Gnration dun fichier Equation.class
(3) Sauvegarder la classe EquationSecondDegre dans un fichier
EquationSecondDegre.java
(4)Compiler le fichier EquationSecondDegre.java

49

LES CLASSES
CLASSES
LES
Autres exemples
exemples
Autres

50

LES CLASSES
CLASSES
LES
Autres exemples
exemples
Autres

51

LES CLASSES
CLASSES
LES
Autres exemples
exemples
Autres

52

LES CLASSES
CLASSES
LES
Constructeur
Constructeur
Le constructeur est une mthode portant le mme nom que la classe et sans
valeur de retour. Il permet de:
-dautomatiser le mcanisme dinitialisation
-dattribuer des valeurs initiales mais galement des actions
Prenons lexemple de la classe Equation:
La mthode dinitialisation permet dattribuer des valeurs aux champs dun
objet de type Equation . Cette mthode doit donc tre imprativement appele.

53

LES CLASSES
CLASSES
LES
Constructeur
Constructeur
Transformation de la mthode dinitialisation de la classe Equation en un
constructeur.
/ /Mthode dinitialisation
public void initialisation(doubleX2, double X1, doubleX0)
{
coeffX2=X2 ;
coeffX1=X1 ;
coeffX0=X0 ;
}
/ /constructeur
public Equation (double X2, double X1, double X0)
{
coeffX2=X2 ;
coeffX1=X1 ;
coeffX0=X0 ;
}

54

LES CLASSES
CLASSES
LES
Constructeur
Constructeur
Transformation de lappel de la mthode dinitialisation de la classe Equation
en un appel du constructeur.
/ /Appel de la mthode dinitialisation
Equation uneEquation ;
UneEquation=new Equation() ;
UneEquation.initialisation (1.0, 5.0, 1.0);
/ /appel du constructeur
Equation uneEquation ;
UneEquation=new Equation(1.0, 5.0, 1.0) ;

55

LES CLASSES
CLASSES
LES
Constructeur
Constructeur
Remarque:
Linstruction uneEquation=new Equation() est impossible (erreur de
compilation) car la classe Equation dispose dun constructeur qui, dans cet
exemple a besoin de 3 arguments rels.
Quelques rgles:
Un constructeur porte obligatoirement le nom de la classe quil instancie.
Une classe peut navoir aucun constructeur (constructeur vide).
Une classe peut avoir plusieurs constructeurs.
Le constructeur par dfaut ne se distingue pas dun constructeur sans
argument.

56

LES CLASSES
CLASSES
LES
Destructeur
Destructeur
Un destructeur permet d'excuter du code lors de la libration de la place
mmoire occupe par l'objet. En java, les destructeurs des instances appels
finaliseurs (finalizers), sont automatiquement appels par le garbage collector.
Pour crer un finaliseur, il faut redfinir la mthode finalize() hrite de la
classe Object.
Lorsqu'une instance n'est plus accessible a partir des variables, elle peut
etre dtruite automatiquement par Java.
class ProgrammePr incipal {
publ ic static void main ( S t r i n g arg [ ] ) {
Ad d i t i o n n e u r add = new Ad d i t i o n n e u r ( ) ;
add . a f f e c t e r V a l e u r s ( 1 0 , 3 0 ) ;
i n t r = add . calcule rSomme ( ) ;
System . out . p r i n t l n ( r ) ;
add = n u l l ; // L'instance cre par le new peut tre dtruite
....
}
}
57

LES CLASSES
CLASSES
LES
Mthodes daccs(accessor)
daccs(accessor)
Mthodes
Elles sont de la forme getxxx qui fournissent des informations relatives
ltat dun objet, ie des valeurs de certains champs sans les modifier.
/ /Classe Equation
class Equation
{
public double getRacine1()
{
return racine1;
}
public double getRacine2()
{
return racine2;
}

58

LES CLASSES
CLASSES
LES
Mthodes daccs(accessor)
daccs(accessor)
Mthodes
/ /Classe test
public class EquationSecondDegre
{
/ /Mthode principale
public static void main (String[ ] args)
{

System.out.println (sol1= +uneEquation.getRacine1();


System.out.println (sol2= +uneEquation.getRacine2();
}
}
Excution
Sol1= -0.20871215252208009
Sol2= -4.1912878474779195

59

LES CLASSES
CLASSES
LES
Mthodes daccs
daccs
Mthodes
Les mthodes daccs sont des mthodes de lecture et/ou dcriture aux
attributs dune classe qui doit prciser qui a accs quoi en utilisant des
qualificatifs de protection (private, protected, public).
De faon plus gnrale : si on a besoin de connatre la valeur dun attribut ou de
le modifier, on effectuera cette opration via une mthode (non prive) dites
daccs :
1. accesseur : mthode fournissant la valeur dun attribut
2. modifieur : mthode transmettant une nouvelle valeur un attribut

60

LES CLASSES
CLASSES
LES
Porte des
des classes
classes
Porte

-avec lattribut public : la classe est accessible toutes les autres


classes.
-avec labsence dattribut, la classe nest accessible quaux classes du
mme package.
Lattribut public na pas dimportance quand les classes du projet utilisant
le package par dfaut, lexception de la classe contenant main qui doit
tre publique pour pouvoir tre reconnue par la machine virtuelle.

61

LES CLASSES
CLASSES
LES
Porte des
des champs
champs et
et des
des mthodes
mthodes
Porte
-avec lattribut public :
les champs et les mthodes sont accessibles depuis lintrieur de la classe.
-avec lattribut private :
les champs et les mthodes ne sont accessibles quaux mthodes de la classe.
-avec labsence dattribut :
les champs et les mthodes ne sont accessibles quaux classes du mme
package (accs de package).
-avec lattribut protected :
les champs et les mthodes sont accessibles aux classes du mme package
ainsi qu ses classes drives quelles appartiennent ou non au mme
package.

62

LES CLASSES
CLASSES
LES
Porte des
des champs
champs et
et des
des mthodes
mthodes
Porte
Les variables et mthodes dfinies avec le modificateur d'accs public
restent publiques travers l'hritage et toutes les autres classes.
Une variable d'instance dfinie avec le modificateur private est bien hrite
mais elle n'est pas accessible directement, elle peut ltre via les mthodes
hrites.
Si l'on veut conserver pour une variable d'instance une protection semblable
celle assure par le modificateur private, il faut utiliser le modificateur
protected. La variable ainsi dfinie sera hrit dans toutes les classes
descendantes qui pourront y accder librement mais ne sera pas accessible
hors de ces classes directement.

63

LES CLASSES
CLASSES
LES
Porte des
des champs
champs et
et des
des mthodes
mthodes
Porte
Exemple1 : La classe drive et la classe de base sont dans le mme package
package Formes_geo ;
class graphiques {
private x, y ;
public String couleur ;
void affiche () {
System.out.println ( Le centre de lobjet = ( + x + , + y + ) ) ; }
double surface ( ) {return (0) ;} } //fin de la classe graphiques

64

LES CLASSES
CLASSES
LES
Porte des
des champs
champs et
et des
des mthodes
mthodes
Porte
package Formes_geo ;
class cercle extends graphiques{
double rayon ;
void changer_centre ( int x1, int y1, double r)
{x = x1 ; y = y1 ;
// faux car x et y sont dclars private dans la classe de base
rayon =r ;
public double surface ( ) {return (rayon * 2* 3.14) ;}
public void affichec ()
{affiche () ;
// juste car le modificateur de visibilit de ce membre est freindly
System.out.println ( Le rayon = + rayon + La couleur = + couleur ) ;}
}

65

LES CLASSES
CLASSES
LES
Porte des
des champs
champs et
et des
des mthodes
mthodes
Porte

Interprtation :
Dans le premier cas, la classe drive et la classe de base sont dans le
mme package, donc la classe cercle a pu accder aux membres
(attributs et mthodes) publiques (lattribut couleur), de mme elle a pu
accder aux membres freindly c'est--dire qui nont pas un
modificateur de visibilit (la mthode affiche), mais elle na pas pu accder
aux membres privs (x et y).

66

LES CLASSES
CLASSES
LES
Porte des
des champs
champs et
et des
des mthodes
mthodes
Porte
Exemple 2 : La classe drive et la classe de base ne sont pas dans le
mme package
package Formes_geo ;
class graphiques {
private x, y ;
public String couleur ;
void affiche () {
System.out.println ( Le centre de lobjet = ( + x + , + y + ) ) ;
}
double surface ( ) {
return (0) ;}
} //fin de la classe graphiques
67

LES CLASSES
CLASSES
LES
Porte des
des champs
champs et
et des
des mthodes
mthodes
Porte
package FormesCirc ;
class cercle extends graphiques{
double rayon ;
void changer_centre ( int x1, int y1, double r)
{x = x1 ; y = y1 ; // faux car x et y sont dclars private dans la classe de
base
rayon =r ;
public double surface ( ) {return (rayon * 2* 3.14) ;}
public void affichec ()
{affiche () ; // FAUX car le modificateur de visibilit de ce membre est
freindly
System.out.println ( Le rayon = + rayon + La couleur = + couleur );
}
}

68

LES CLASSES
CLASSES
LES
Porte des
des champs
champs et
et des
des mthodes
mthodes
Porte

Interprtation :
Dans le deuxime cas, la classe drive est la classe de base ne sont pas dans le
mme package, donc la classe cercle a pu accder aux membres (attributs et
mthodes) publiques (lattribut couleur), mais, elle na pas pu accder aux
membres freindly c'est--dire qui nont pas un modificateur de visibilit (la
mthode affiche) et aux membres privs (x et y).
=> Nous avons dj vu quil existe 3 types de modificateurs de visibilit
publiques ( public ), privs (private) et de paquetage ou freindly (sans
mention).
=> Il existe encore un quatrime droit daccs dit protg (mot cl protected ).

69

HERITAGE
HERITAGE
Gnralits
Gnralits
L'hritage permet de dfinir une nouvelle classe dite classe drive
(sous-classe ou classe descendante) partir d'une classe existante
dite classe de base (super- classe, classe-mre, classe ascendante)
laquelle on ajoute de nouvelles donnes, de nouvelles mthodes.
L'hritage permet donc de spcialiser (utiliser) des classes anciennes
parfaitement au point:
-conomie du code.
-structuration des fonctionnalits d'un programme (lisibilit).
Grce l'hritage, les objets d'une classe ont accs aux donnes et
aux mthodes de la classe parent et peuvent les tendre.
Les sous classes peuvent redfinir les variables et les mthodes
hrites. Pour les variables, il suffit de les redclarer sous le mme
nom avec un type diffrent. Les mthodes sont redfinies avec le
mme nom, les mmes types et le mme nombre d'arguments, sinon
il s'agit d'une surcharge.
70

HERITAGE
HERITAGE
Gnralits
Gnralits
L'hritage peut- tre ritr:
La classe C hrite de la classe B qui elle-mme hrite de la
classe A.
L'hritage s'applique aussi bien ses propres classes qu'aux
classes API.
Les classes sont organises en hirarchie.
JAVA NE PERMET PAS L' HERITAGE MULTIPLE (hritage de
plusieurs super- classes).
/*Cette classe drive hrite des champs et des mthodes
privs et publics.*/
Elle ne peut modifier que les champs et mthodes publics.
Elle peut possder de nouveaux champs et mthodes.
Le mot-cl extends permet de dfinir une sous-classe.
71

HERITAGE
HERITAGE
Remarques
Remarques
Une classe peut avoir plusieurs sous classes. Une classe ne peut avoir qu'une
seule classe mre : il n'y a pas d'hritage multiple en java.
Object est la classe parente de toutes les classes en java. Toutes les
variables et mthodes contenues dans Object sont accessibles partir de
n'importe quelle classe car par hritage successif toutes les classes
hritent d'Object.
Tout objet peut tre vu comme instance de sa classe et de toutes les classes
drives.
Pour invoquer une mthode d'une classe parent, il suffit d'indiquer la mthode
prfixe par super.
Pour appeler le constructeur de la classe parent il suffit d'crire
super(paramtres) avec les paramtres adquats.
une volution des rgles de gestion de la classe parent conduit modifier
automatiquement la classe fille ds que cette dernire est recompile.
En java, il est obligatoire dans un constructeur d'une classe fille de faire appel
explicitement ou implicitement au constructeur de la classe mre.
72

HERITAGE
HERITAGE
Hritage: Accs
Accs
Hritage:
Les membres (champs et mthodes) publics de la classe de base
restent des membres publics de la classe drive.
Une mthode dune classe drive a accs aux membres publics de
sa classe de base.
Une mthode dune classe drive na pas accs aux membres
privs de sa classe de base (principe dencapsulation).
Possibilit davoir une classe de base sans constructeur et avec une
classe drive sans/avec constructeur.

73

HERITAGE
HERITAGE
Constructionet
etinitialisation
initialisationdes
desobjets
objetsdrivs
drivs
Construction

En java, le constructeur de la classe drive doit prendre en charge lintgralit


de la construction de lobjet.
Si un constructeur dune classe drive appelle un constructeur dune classe de
base, il doit obligatoirement sagir de la premire instruction du constructeur. Le
constructeur de la classe de base est dsign par le mot cl super .

74

HERITAGE
HERITAGE
Constructionet
etinitialisation
initialisationdes
desobjets
objetsdrivs
drivs
Construction
Exemple
class graphiques {
private x, y ;
public graphiques (int x1, int y1) {x = x1 ; y=y1 ;}
//autres mthodes
}
class cercle extends graphiques{
private double rayon ;
cercle ( int a, int b, double r) {
super (a, b) ;
//appelle le constructeur de la classe de base
rayon = r ; }
//autres mthodes
}

75

HERITAGE
HERITAGE
Constructionet
etinitialisation
initialisationdes
desobjets
objetsdrivs
drivs
Construction
Remarque
Dans le cas gnral, une classe de base et une classe drive possdent
chacune au moins un constructeur.
Le constructeur de la classe drive complte la construction de lobjet driv,
et ce, en appelant en premier lieu le constructeur de la classe de base.
Toutefois, il existe des cas particuliers

76

HERITAGE
HERITAGE
Constructionet
etinitialisation
initialisationdes
desobjets
objetsdrivs
drivs
Construction
Cas particuliers
cas1 : La classe de base ne possde aucun constructeur
Dans ce cas, si la classe drive veut dfinir son propre constructeur, elle
peut optionnellement appeler dans la 1re instruction de constructeur la
clause super () pour dsigner le constructeur par dfaut de la classe de
base.
Exemple
Class A {
// pas de constructeur
}
class B extends A {
public B(.)
{super() ; //appel de constructeur par dfaut de A

}
B b = new B(); // Appel de constructeur1 de A

77

HERITAGE
HERITAGE
Constructionet
etinitialisation
initialisationdes
desobjets
objetsdrivs
drivs
Construction
Cas particuliers
Cas2 : La classe drive ne possde pas un constructeur
Dans ce cas, le constructeur par dfaut de la classe drive doit initialiser les
attributs de la classe drive et appeler :
- Le constructeur par dfaut de la classe de base si elle ne possde aucun
constructeur.
- Le constructeur sans argument si elle possde au moins un constructeur.
- Dans le cas o il n y a pas un constructeur sans argument et il y a dautres
constructeurs avec arguments, le compilateur gnre des erreurs.

78

HERITAGE
HERITAGE
Constructionet
etinitialisation
initialisationdes
desobjets
objetsdrivs
drivs
Construction
Cas particuliers : Exemples sur cas 2
Exemple 1
Class A {
public A() {.} //constructeur1
public A ( int n) {..} //constructeur2
}
class B extends A {
// ..pas de constructeur
}
B b = new B(); // Appel de constructeur1 de A

79

HERITAGE
HERITAGE
Constructionet
etinitialisation
initialisationdes
desobjets
objetsdrivs
drivs
Construction
Cas particuliers : Exemples sur cas 2
Exemple 2
Class A {
public A ( int n) {..} //constructeur1
}
class B extends A {
// ..pas de constructeur
}
B b = new B();
/* On obtient une erreur de compilation car A ne dispose pas
un constructeurs sans argument et possde un autre constructeur*/

80

HERITAGE
HERITAGE
Constructionet
etinitialisation
initialisationdes
desobjets
objetsdrivs
drivs
Construction
Cas particuliers : Exemples sur cas 2
Exemple 3
Class A {
//pas de constructeurs
}
class B extends A {
//pas de constructeurs
}
B b = new B ();
// Appel de constructeur par dfaut de B qui Appelle le constructeur par
//dfaut de A.

81

Merci
pour
votre

You might also like