Vous êtes sur la page 1sur 36

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


CHAPITRE 4
CLASSES SPÉCIALES

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


CH4 – CLASSES SPÉCIALES

1- ABSTRAITES 2- IMBRIQUÉES 3- ANONYMES 4- MODÉLISATION

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


CH4 – CLASSES SPÉCIALES
1- CLASSES ABSTRAITES

DÉFINITION

QUOI? POURQUOI? COMMENT?


Une classe déclarée avec
le modificateur Pour interdire En utilisant le
« abstract ». Elle ne peut l’instanciation de ses modificateur
pas être instanciée (vue objets car ils existent pas « abstract »
en tant que famille concrètement
abstraite d’objets) mais
elle peut être héritée

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


CH4 – CLASSES SPÉCIALES
1- CLASSES ABSTRAITES

EXEMPLE GESTION DE STOCK D’UN MAGASIN DE VÊTEMENTS


Class CODE
Article abstract class Article{
//attributs
- prix
//méhodes
- qty }
+ getPrix() class Chaussure extends
+… Article{
//attributs
Class Class //méthodes
}
Chaussure Veste ... class Veste extends
- pointure - taille Article{
//attributs
-… -…
//méthodes
+… +… }
9 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
CH4 – CLASSES SPÉCIALES
1- CLASSES ABSTRAITES

MÉTHODE
ABSTRAITE

QUOI? POURQUOI? COMMENT?


Méthode déclarée avec Appliquer le principe En utilisant le
le modificateur d’abstraction: cacher les modificateur
« abstract » et ne détails « abstract » et en
contient pas de corp d’implémentation de l’implémentant dans les
d’implémentation. Elle l’utilisateur de la classes filles (classes qui
ne peut être déclarée méthode héritent la classes
que dans une classe abstraite de déclaration)
abstraite

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


CH4 – CLASSES SPÉCIALES
1- CLASSES ABSTRAITES

EXEMPLE GESTION DE STOCK D’UN MAGASIN DE VÊTEMENTS (DÉCLARATION)


Class CODE (1)
Article abstract class Article{
- prix
private double prix;
- qty private double qty;
+ getPrix()
+ getPromo() //getters, setters

Class Class abstract double getPromo();


}
Chaussure Veste ...
- pointure - taille
-… -…
+… +…
11 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
CH4 – CLASSES SPÉCIALES
1- CLASSES ABSTRAITES

EXEMPLE GESTION DE STOCK D’UN MAGASIN DE VÊTEMENTS (DÉCLARATION)


Class CODE (2)
Article class Chaussure extends
Article{
- prix
- qty private double pointure;
+ getPrix()
+ getPromo() //getter, setter

Class Class double getPromo() {


if (this.pointure > 43)
Chaussure Veste ... return 0.2;
- pointure - taille else
return 0;
-… -…
}
+… +… }
12 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
CH4 – CLASSES SPÉCIALES
1- CLASSES ABSTRAITES

EXEMPLE GESTION DE STOCK D’UN MAGASIN DE VÊTEMENTS (DÉCLARATION)


Class CODE (3)
Article class Veste extends Article{
- prix
private String taille;
- qty
+ getPrix() //getter, setter
+ getPromo()
double getPromo() {
Class Class if (this.getPrix() > 5000)
return 0.3;
Chaussure Veste ... else
- pointure - taille return 0;
}
-… -…
}
+… +…
13 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
CH4 – CLASSES SPÉCIALES
1- CLASSES ABSTRAITES

EXEMPLE GESTION DE STOCK D’UN MAGASIN DE VÊTEMENTS (UTILISATION)


CODE (4)
Class class Facture{
//attributs
Article //méthodes
- prix double getTotal(Article[] panier){
- qty /*parcourir tous les articles
indépendamment de leurs types
+ getPrix() concrets*/
+ getPromo() double total=0;
for (int i=0; i<panier.length;i++){
Class Class total+= panier[i].getPrix()-
panier[i].getPrix()*
Chaussure Veste
panier[i].getPromo();
- pointure - taille }
-… -… return total;
}
+… +… }
14 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
CH4 – CLASSES SPÉCIALES
1- CLASSES ABSTRAITES

COMPARAISON DIFFÉRENCES DE BASE ENTRE LES CLASSES ABSTRAITES ET LES INTERFACES

Classe Abstraite Interface


Non-instanciable Non-instanciable
(type abstrait d’objets) (type abstrait d’objets)
Utilisable à travers l’héritage Utilisable à travers l’implémentation

Une classe n’hérite qu’une seule classe Une classe peut implémenter plusieurs
abstraite interfaces
Peut contenir tous types d’attributs Ne Peut contenir que des attributs
« static final »
Ses méthodes peuvent avoir tous les Ses méthodes sont toutes considérées
modificateur d’accès « public »
15 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
CH4 – CLASSES SPÉCIALES

1- ABSTRAITES 2- IMBRIQUÉES 3- ANONYMES 4- MODÉLISATION

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


CH4 – CLASSES SPÉCIALES
2- CLASSES IMBRIQUÉES

DÉFINITION

QUOI? POURQUOI? COMMENT?


Une classe définie dans le Organiser le code: une En déclarent le code de la
corp d’une autre classe. On classe A n’est utilisée que classe imbriquée dans le
appelle la classe imbriquée dans une classe B doit y code d’une autre classe
« nested class » et la classe être imbriquée
externe « outer class » Respecter l’encapsulation:
Si B est imbriquée dans A
on peut la déclarer
« private »

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


CH4 – CLASSES SPÉCIALES
2- CLASSES IMBRIQUÉES
Class
EXEMPLE Personne CODE
class Personne{
- nom //attributs
- prenom ...
- dateNaiss Adresse adresse;
- adresse
//méthodes
+ getNom() ...
+…
//classe imbriquée
Class Class class Adresse{
String wilaya;
Etudiant Enseignant String commune;
-… -… String cite;
+… int codeZip;
+…
}
}
18 PROGRAMMATION ORIENTÉE OBJET– 2ÈME ANNÉE CPI - 2020
CH4 – CLASSES SPÉCIALES
2- CLASSES IMBRIQUÉES

TYPOLOGIE LES CLASSES IMBRIQUÉES SONT DIVISÉES EN DEUX CATÉGORIES

Imbriquée
(Nested)

Statique Non-statique
(Static Nested) (Inner)

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


CH4 – CLASSES SPÉCIALES
2- CLASSES IMBRIQUÉES

CATÉGORIE 1 LES CLASSES IMBRIQUÉES STATIQUES (STATIC NESTED)

SYNTAXE INSTANCE
class Externe{ Pour créer des objets de la classe
...
static class ImbriqueeStatique{ imbriquée statique on utilise le nom de
... la classe externe:
}
} Externe.ImbriqueeStatique objImbStat=
new Externe.ImbriqueeStatique();

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


CH4 – CLASSES SPÉCIALES
2- CLASSES IMBRIQUÉES

CATÉGORIE 1 LES CLASSES IMBRIQUÉES NON-STATIQUES (INNER)

SYNTAXE INSTANCE
class Externe{ Pour créer des objets de la classe
...
class ImbriqueeNonStat{ imbriquée non statique on utilise le nom
... d’un objet (instance) de la classe externe
}
} Externe objExt = new Externe();
Externe.ImbriqueeNonStat objImbNStat=
new objExt.ImbriqueeNoStatique();

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


CH4 – CLASSES SPÉCIALES

1- ABSTRAITES 2- IMBRIQUÉES 3- ANONYMES 4- MODÉLISATION

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


CH4 – CLASSES SPÉCIALES
3- CLASSES ANONYMES

DÉFINITION

QUOI? POURQUOI? COMMENT?


Un type spécial des classes Utilisée pour hériter une Suivant la syntaxe
imbriquées non-statiques. classe ou implémenter une présentée par la suite
Elle sont interface de façon abrégée.
a) déclarée sans nom, Si une classe est utilisée
b) dans un bloc et une seule fois (on ne crée
qu’un seul objet), on va la
c) instanciées au moment
déclarer au moment de
de la déclaration
l’instanciation.

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


CH4 – CLASSES SPÉCIALES
3- CLASSES ANONYMES

SYNTAXE

SYNTAXE NOTATION
class Externe{ Le Type peut être:
...
//définition de la classe anonyme - Une classe à hériter
Type object1= new Type(<parametres>){ - Une interface à implémenter
//core de la classe Les <parametre> sont:
};
} - Les paramètres du constructeur
dans le cas d’un héritage
- des parenthèse vides dans le cas
d’une implémentation

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


CH4 – CLASSES SPÉCIALES
3- CLASSES ANONYMES

EXEMPLE EXEMPLE D’UNE CLASSE ANONYME QUI HÉRITE UNE CLASSE

CODE
class GestionClick{
Class ...
//gérer le click sur Le bouton fermer
Bouton Bouton fermer= new Bouton(){
- texte void onClick(){
- couleur Application.close();
}
+ onClick() };
+… fermer.setTexte("fermer");
fermer.setCouleur(...);
...
}

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


CH4 – CLASSES SPÉCIALES
3- CLASSES ANONYMES

EXEMPLE EXEMPLE D’UNE CLASSE ANONYME QUI IMPLÉMENTE UNE INTERFACE

Interface CODE
class GetsionClick{
<<ClickListener>> ...
//gérer le click sur Le bouton fermer
+ onClick()
Bouton fermer= new Bouton();
Class fermer.setTexte("fermer");
Bouton fermer.setCouleur(...);
fermer.listen( new ClickListener{
- texte void OnClick(){
- couleur Application.close();
+listen(ClickListener listener) }
+… });
...
}

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


CH4 – CLASSES SPÉCIALES

1- ABSTRAITES 2- IMBRIQUÉES 3- ANONYMES 4- MODÉLISATION

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


CH4 – CLASSES SPÉCIALES
4- MODÉLISATION

DÉFINITION

QUOI? POURQUOI? COMMENT?


Représentation graphique Pour mieux visualiser et A l’aide d’un langage
des relations entre les vérifier les flux de symbolique universel
classes et interfaces du communication appelé UML
programmes. Elle est (Unified Modeling
appelée « diagramme de Language)
classes »

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


CH4 – CLASSES SPÉCIALES
4- MODÉLISATION

MEMBRE DU A) LES MEMBRES DU DIAGRAMME SONT LES CLASSES, LES INTERFACES,


DIAGRAMME LES ATTRIBUTS ET LES MÉTHODES

Nom <<Nom>>
Produit <<Perissable>>
- id + alertExp() Méthodes
- nom Attributs + peutVendre()
- prix
- qteEnStock
Méthodes
+ ajouterAuStock(qty)

Une classe Une interface

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


CH4 – CLASSES SPÉCIALES
4- MODÉLISATION

NIVEAU DE
B) LES MODIFICATEUR D’ACCÈS POUR ATTRIBUTS ET MÉTHODES
VISIBILITÉ

+ public

- private

# protected

~ default

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


CH4 – CLASSES SPÉCIALES
4- MODÉLISATION

RELATION C) LES DIFFÉRENTES RELATIONS

- - - - - - - - ->
Dépendance (utilisation):
changement dans la Etudiant Module
définition de l’élément - numInsc - - - - - - - - -> - code
cible affecte l’élément -… -…
source. Le cas des + Examen(Module m) + …()
paramètres de méthodes +…
et variables locales

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


CH4 – CLASSES SPÉCIALES
4- MODÉLISATION

RELATION C) LES DIFFÉRENTES RELATIONS

Personne
- nom
-…
+ …()

Héritage : Une classe fille


qui hérite d’une classe Etudiant
mère - numInsc
-…
+ Examen(Module m)
+…

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


CH4 – CLASSES SPÉCIALES
4- MODÉLISATION

RELATION C) LES DIFFÉRENTES RELATIONS

<<Perissable>>
+ expAlert()
+ peutVendre()

Implémentation : Une
classe qui implémente ProdLaitier
une interface -…
-…
+…

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


CH4 – CLASSES SPÉCIALES
4- MODÉLISATION

RELATION C) LES DIFFÉRENTES RELATIONS


//l'enseignant n'est pas composé de la classe Module donc c'est une relation de
possesion.

Agrégation : Une relation


de possession, ex. une Enseignant Module
Classe_A a une Classe_B. - numInsc - code
La destruction de la classe - module -…
source n’implique pas la +… + …()
destruction de la classe
destination. Le cas des
attributs

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


CH4 – CLASSES SPÉCIALES
4- MODÉLISATION

RELATION C) LES DIFFÉRENTES RELATIONS


// Mais la formation est composé de la classe Module donc la relation est
Composition

Composition : Une
relation de coposition, ex. Formation Module
une Classe_A est - code - code
composée d’une Classe_B. - Module[] module -…
La destruction de la classe +… + …()
source implique la
destruction de la classe
destination. Le cas des
attributs

35 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

Vous aimerez peut-être aussi