Vous êtes sur la page 1sur 29

2ÈME ANNÉE CPI

PROGRAMMATION ORIENTÉE OBJET


ZAKARIA GHEID
Z.GHEID@ESI-SBA.DZ

FÉVRIER 2020
CHAPITRE 1
INTRODUCTION À LA POO

PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CHAPITRE 2
OBJETS, CLASSES ET INTERFACES
(PARTIE I)

PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CHAPITRE 2
OBJETS, CLASSES ET INTERFACES
(PARTIE II)

PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CHAPITRE 3
LES CONCEPTS DE LA POO

PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO

1- ENCAPSULATION 2- HÉRITAGE 3- ABSTRACTION 4- POLYMORPHISME

6 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
1- ENCAPSULATION

DÉFINITION

QUOI? POURQUOI? COMMENT?


Regrouper les attributs On ajoute aux attributs
d’un objet avec des Protéger les attributs de le modificateur d’accès
méthodes qui les l’objet et contrôler leurs « private »
manipulent (lecture et accès On ajoute aux méthodes
affectation) et interdire de manipulation
l’accès direct à ces d’attributs le
attributs modificateur d’accès
« public »

7 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
1- ENCAPSULATION
CODE
class Etudiant
EXEMPLE {
Class private int numInscr;
...
Etudiant //constructeur
...
- numInscr
//getters, setters
- nom public int getNumInscr()
- prenom {
- dateNaiss return this.numInscr;
}
+ getNumInscr() public void setNumInscr(int numInscr)
+ setNumInscr(int num) {
+… this.numInscr= numInscr;
}
...
}

8 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO

1- ENCAPSULATION 2- HÉRITAGE 3- ABSTRACTION 4- POLYMORPHISME

9 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
2- HÉRITAGE

DÉFINITION

QUOI? POURQUOI? COMMENT?


Permettre à une classe
d’hériter le code d’une
autre classe (hériter ses En utilisant le mot clés
attributs et ses Permettre la réutilisation « extends » lors de la
méthodes). On les du code sans le réécrire déclaration de la classe
appelle classe fille (sub fille (sub-class)
class) et classe mère
(super class)
respectivement

10 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
2- HÉRITAGE
Class
EXEMPLE Personne
- nom
- prenom
- dateNaiss CODE
+ getNom class Personne{...}
+ setNom(String nom)
+… class Etudiant extends
Class Class Personne
{
Etudiant Enseignant
private int numInscr;
- numInscr - matricule //constructeur,
//getter, setter
+ getNumInscr + getMatricule }
+ setNumInscr(int num) + setMatricule(int mat) ...

11 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
2- HÉRITAGE

CONCEPT RELIÉ REDÉFINITION DES MÉTHODES

QUOI? POURQUOI? COMMENT?


Chaque méthode
déclarée non final dans Introduire un traitement En ajoutant un mot clé
une classe mère peut spécifique à une classe « @override » avant de
être redéfinie dans les fille déclarer la méthode
classes filles en gardant qu’on souhaite redéfinir
son type de retour, son
nom et ses paramètres

12 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
2- HÉRITAGE

EXEMPLE REDÉFINITION DES MÉTHODES


CODE
Class class Produit {
Produit ...
public double getPromo() {
- id if (this.prix > 400) return 0.2;
- nom else return 0.0;
- prix }
}
Class + getId
+ setId(int id) class Confisserie extends Produit {
Confisserie
+… @override
+ getPromo() public double getPromo() {
return 0.0;
+ getPromo
}
}

13 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO

1- ENCAPSULATION 2- HÉRITAGE 3- ABSTRACTION 4- POLYMORPHISME

14 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
3- ABSTRACTION

DÉFINITION

QUOI? POURQUOI? COMMENT?

Cacher les détails Faciliter l’utilisation et la En utilisant les interfaces


d’implémentation modification du code ou les classes abstraites
lorsqu’elle ne sont pas
utiles pour l’utilisateur

15 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
3- ABSTRACTION

EXEMPLE RÉÉL

QUOI?
La télécommande d’un
climatiseur fournie à
l’utilisateur un ensemble
de fonctionnalités sans
qu’ils sache comment
elle sont implémentées

16 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
3- ABSTRACTION

INTERFACE QUI DÉFINIE DES MÉTHODES UTILES POUR LA FAMILLE DES


EXEMPLE
PRODUITS PÉRISSABLES

Interface CODE
<<Perissable>> interface Perissable
{
+ expAlert() public void expAlert();
+ peutVendre() public boolean peutVendre();
}

17 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
3- ABSTRACTION

EXEMPLE COTÉ CONCRET (CODE D’IMPLÉMENTATION)


CODE (1)
Interface class prodLaitier implements
<<Perrissable>> Perrissable{
...
+ expAlert() public void expAlert(){
+ peutVendre() /*notifier les agents occupés
du rayon frigorifique*/
}
Class Class public boolean peutVendre(){
ProdLaitier ProdConserve if (this.dateExp-todayDate > 3)
return true;
-… -… else
return false;
+ expAlert() + expAlert()
}
+peutVendre() +peutVendre() }
+… +…
18 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
CH3 – LES CONCEPTS DE LA POO
3- ABSTRACTION

EXEMPLE COTÉ CONCRET (CODE D’IMPLÉMENTATION)


CODE (2)
Interface class prodConserve implements
<<Perrissable>> Perrissable{
...
+ expAlert() public void expAlert(){
+ peutVendre() /*notifier les agents occupés
du rayon conserverie*/
}
Class Class public boolean peutVendre(){
ProdLaitier ProdConserve if (this.dateExp-todayDate > 25)
return true;
-… -… else
return false;
+ expAlert() + expAlert()
}
+peutVendre() +peutVendre() }
+… +…
19 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
CH3 – LES CONCEPTS DE LA POO
3- ABSTRACTION

EXEMPLE COTÉ ABSTRAIT (CODE D’UTILISATION)


CODE (3)
//client code
Class Interface
class ProduitManager{
...
ProduitManager <<Perrissable>> public void verif(Perrissable p)
-… {
+ expAlert() if (!p.peutVendre())
+ verif(Perrissable p) + peutVendre() p.expAlert();
+… }
...
}

... ...
20 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
CH3 – LES CONCEPTS DE LA POO

1- ENCAPSULATION 2- HÉRITAGE 3- ABSTRACTION 4- POLYMORPHISME

21 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
4- POLYMORPHISME

DÉFINITION

QUOI? POURQUOI? COMMENT?

Permettre à un objet Traiter un seul objet Chaque objet prend les


d’avoir plusieurs types différemment (sans types des classes
avoir besoin de déclarer héritées et des
plusieurs objets) interfaces implémentées

22 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
4- POLYMORPHISME

EXEMPLE RÉÉL

QUOI?
Vous êtes :
Etudiants au sein de
l’école
Résidents au sein de la
cité universitaire
Citoyens au sein des
établissements étatiques

23 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
4- POLYMORPHISME

EXEMPLE CODE DE DÉFINITION


CODE (1)
Interface
class prodLaitier implements
<<Perrissable>> Perissable, Frigoriphique{
Class + expAlert() ...
public void expAlert(){...}
ProdLaitier + peutVendre() public boolean peutVendre(){...}
-… public double getMinTemp(){...}
public double getMaxTemp(){...}
+ expAlert()
}
+ peutVendre() Interface
+ getMinTemp() <<Frigoriphique>>
+ getMaxTemp()
+… + getMinTemp()
+ getMaxTemp()

24 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
4- POLYMORPHISME

EXEMPLE CODE DE DÉFINITION


CODE (2)
class ProduitManager{
Class ...
public void verifDate(Perrissable p)
ProduitManager
{
-… if (!p.peutVendre()) expAlert;
}
+ verifDate(Perrissable p) public void verifTmp(Frigoriphique p)
+ verifTmp(Frigoriphique p) {
+… if (!FRIGO.TMP>=p.getMinTmp) ||
(!FRIGO.TMP<=p.getMaxTmp)
tempAlert();
}
}

25 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
4- POLYMORPHISME

EXEMPLE CODE D’UTILISATION (CODE CLIENT)


CODE (3)
//client code
Class ...
ProduitManager manager= new
ProduitManager
ProduitManager();
-… ...
//déclarer lait1 comme ProdLaitier
+ verifDate(Perrissable p) ProdLaitier lait1= new
+ verifTmp(Frigoriphique p) ProdLaitier(...);
+…
//voir lait1 comme Perissable
manager.verifDate(lait1);

//voir lait1 comme Frigoriphique


manager.verifTmp(lait1);

26 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
4- POLYMORPHISME

CONCEPT RELIÉ SURCHARGE DE MÉTHODES

QUOI? POURQUOI? COMMENT?

Déclarer plusieurs Faire des appels de En gardant le même


méthodes avec le même méthodes différents type de retour et le
nom, le même type de selon le contexte (sans même nom
retour et des paramètres avoir besoin de déclarer
différents plusieurs méthodes)

27 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020


CH3 – LES CONCEPTS DE LA POO
4- POLYMORPHISME

EXEMPLE SURCHARGE DU CONSTRUCTEUR DE CLASSE


CODE
class Etudiant{ ...
private int numInscr; //constructeur 2 (avec email)
private String nom; public Etudiant(int numInscr,
private String prenom; String nom, String prenom,
private String email; String email ){
this.numInscr= numInscr;
//constructeur 1 (sans email) this.nom= nom;
public Etudiant(int numInscr, this.prenom= prenom;
String nom, String prenom){ this.email= email;
this.numInscr= numInscr; }
this.nom= nom; }
this.prenom= prenom;
this.email= "";
}
...
28 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
TEMPLATE COPYRIGHT

© Copyright Showeet.com

PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020