Programmation Orientée Objet et Java
La Programmation Orientée Objet
Yousef El Mourabit
EST - Beni Mela
2021/2022
Flashback
● Premiers programmes écrits en langage machine et dépendant de
l’architecture des ordinateurs utilisés.
● L’apparition du microprocesseur ! programme procéduraux
(Fortran, Pascal, C …)
● Code devenant indépendant du type du microprocesseur
● Programmation procédurale ?
● Les données sont séparées des procédures et fonctions les traitant.
● Deux principaux inconvénients :
● Réutilisation
● Découplage
!2 Introduction à POO (Yousef EL Mourabit / v1.1)
Flashback
● Conséquence : Les logiciels ainsi conçus sont donc peu évolutifs et
de maintenance difficile:
● l’enjeu de simplifier les opérations de maintenance.
● Une alternative :
● La programmation orientée objet
● L'idée de base est de supprimer le découplage précédemment évoqué
entre données et fonctions.
● Au sein d’une même entité, on va regrouper certaines données et les
moyens de traitement de ces données.
!3 Introduction à POO (Yousef EL Mourabit / v1.1)
Flashback
● Une telle entité s’appellera un objet et possédera donc :
● Une identité.
● Des variables définissant son état que l'on appellera attributs.
● Des sous programmes gérant son comportement que l'on
appellera méthodes.
attributs
méthodes
!4 Introduction à POO (Yousef EL Mourabit / v1.1)
Programmation orientée objet
● On s'intéresse à modéliser le problème par un ensemble
d'objets;
● Met l'accent sur les objets requis pour résoudre un problème;
● Le programme est l’ensemble des objets et des interactions
entre ces objets;
● En programmation orientée objet, on cherche à identifier les
objets impliqués et leurs responsabilités respectives.
!5 Introduction à POO (Yousef EL Mourabit / v1.1)
Programmation procédurale vs POO
!6 Introduction à POO (Yousef EL Mourabit / v1.1)
Interaction entre objets
!7 Introduction à POO (Yousef EL Mourabit / v1.1)
Exemple : Programmation Procédurale vs POO
● Spécification fonctionnelle :
Une interface graphique va comprendre trois formes (shapes) : un
triangle, un carré et un cercle.
Lorsque l’utilisateur clique sur une forme, cette dernière doit
effectuer une rotation de 360° et un fichier musical correspondant à
cette forme sera (format .wav) joué.
!8 Introduction à POO (Yousef EL Mourabit / v1.1)
Exemple : Programmation Procédurale vs POO
!9 Introduction à POO (Yousef EL Mourabit / v1.1)
Paradigme orientée objet
!10 Introduction à POO (Yousef EL Mourabit / v1.1)
Classe / Objet
● La description d'un objet est appelée une classe d'objet.
● On dit qu'un objet est une instance de la classe ou un état de
celle-ci. L'instanciation d'une classe est un objet unique.
● La classe décrit donc la structure interne d'un objet, c'est à dire:
les données qu'il regroupe (attributs) et les actions qu'il est
capable d'assurer (méthodes).
!11 Introduction à POO (Yousef EL Mourabit / v1.1)
Class/Object (instance)
!12 Introduction à POO (Yousef EL Mourabit / v1.1)
Instance
!13 Introduction à POO (Yousef EL Mourabit / v1.1)
Encapsulation
!14 Introduction à POO (Yousef EL Mourabit / v1.1)
Encapsulation
● Le principe est d'interdire l'accès direct aux attributs d'un objet.
On ne dialogue avec l'objet qu'à travers une interface définissant
les services accessibles aux utilisateurs de l'objet.
● C'est alors le rôle des méthodes de modifier ou de retourner la
valeur des attributs.
● Importance de l’encapsulation:
● On peut modifier les attributs d'un objet sans modifier la façon dont
il est utilisé.
● Garantie l'intégrité des données, car leur accès direct est interdit
(limité et/ou contrôlé).
!15 Introduction à POO (Yousef EL Mourabit / v1.1)
Généralisation/Spécialisation
!16 Introduction à POO (Yousef EL Mourabit / v1.1)
Héritage
● Relation de spécialisation/généralisation entre deux classes. Elle
indique qu'une classe est une sous-classe d'une autre, c.à.d qu'elle
possède les mêmes attributs et méthodes plus d'autres qui lui sont
propres.
!17 Introduction à POO (Yousef EL Mourabit / v1.1)
Héritage
● Relation entre classes
Animaux
● Oiseaux est un cas particulier de Animaux
● Animaux généralise Oiseaux
● La classe fille
Reptiles Oiseaux
● hérite les attributs et les comportements
● peut avoir des attributs et des méthodes nouvelles
● peut avoir un comportement modifié Shape
Triangle Square
!18 Introduction à POO (Yousef EL Mourabit / v1.1)
Héritage
Intérêt:
● En construisant une hiérarchie de classe, on évite des répétitions
dans le code (factorisation), en encourageant la réutilisation de
classes déjà existantes.
● Cela permet également de simplifier la conception de la
modélisation.
!19 Introduction à POO (Yousef EL Mourabit / v1.1)
Polymorphisme
● Littéralement : c'est la faculté de prendre plusieurs formes.
● En POO, c'est un mécanisme permettant à une sous-classe de
redéfinir une méthode dont elle a hérité tout en gardant la
même signature.
!20 Introduction à POO (Yousef EL Mourabit / v1.1)
Polymorphisme
Animaux
● Tout animal peut se déplacer
SeDeplacer()
● Il le fait différemment s’il s’agit d’un
oiseau ou d’un serpent
Oiseaux Serpents
SeDeplacer() SeDeplacer()
{ {
en volant en glissant
} }
!21 Introduction à POO (Yousef EL Mourabit / v1.1)
Exemple programmation procédurale vs POO
● Le manager propose une nouvelle mise à jour de la spécification
expliquée dans l’exemple 1.
● Il demande d’ajouter une nouvelle forme à l’interface et quand
l’utilisateur clique dessus la forme tourne de 360° et un fichier
cette fois ci de type .mp3 est joué. La forme est une amibe.
!22 Introduction à POO (Yousef EL Mourabit / v1.1)
Exemple programmation procédurale vs POO
Rotate (shapeNum) {
//faire une rotation de la forme de 360°• Beaucoup de code est
affecté
} • Le code déjà testé doit
playSound (shapeNum){ changer
//si shapeNum n’est pas une amibe
//localiser le fichier .wav correspondant
au shapeNum et le faire jouer Amibe
//sinon jouer amibe.mp3
• Rotate (){}
} POO
• playSound() {
jouer amibe.mp3
}
!23 Introduction à POO (Yousef EL Mourabit / v1.1)
Exemple programmation procédurale vs POO
● Si maintenant l’implémentation de la rotation des formes est
décrite comme suit :
● Il faut trouver le rectangle qui entoure la forme et ensuite, puis
localiser le centre du rectangle et faire enfin tourner la forme par
rapport à ce point.
!24 Introduction à POO (Yousef EL Mourabit / v1.1)
Exemple programmation procédurale vs POO
● Pour l’amibe, il faut la tourner par rapport au bord supérieur
!25 Introduction à POO (Yousef EL Mourabit / v1.1)
Exemple : Programmation procédurale vs POO
rotate (shapeNum) {
//si la forme n’est pas une amibe Amibe
//déterminer le rectangle qui l’entoure
//faire tourner selon son centre
//Sinon • Rotate (){
//calculer les coordonnées du bord //calculer les coordonnées du
supérieur et //faire tourner selon ce point bord superieur et faire tourner
} selon ce //point
playSound (shapeNum){ }
//si shapeNum n’est pas une amibe • playSound() {
//localiser le fichier .wav correspondant
//au shapeNum et le faire jouer jouer amibe.mp3
//sinon jouer amibe.mp3 }
}
!26 Introduction à POO (Yousef EL Mourabit / v1.1)
Exemple programmation procédurale vs POO
//determiner le //code pour jouer
rectangle qui Shape //un fichier .wav
l’entoure
//faire tourner selon
son centre
• Rotate (){}
• playSound()
{}
Triangle Carré Cercle Amibe
!27 Introduction à POO (Yousef EL Mourabit / v1.1)
Exemple programmation procédurale vs POO
Amibe
• Shape
• Rotate (){
//calculer les coordonnées du
• Rotate (){} bord superieur et faire tourner
selon ce //point
Redéfinition
• playSound() }
{} • playSound() {
jouer amibe.mp3
}
!28 Introduction à POO (Yousef EL Mourabit / v1.1)
Programmation procédurale vs POO
!29 Introduction à POO (Yousef EL Mourabit / v1.1)