Programmation Orientée Objet
POO
Prof. Hakim ALLALI
Licences EEA & RTT. Fév 2013
Plan
1
• Introduction
2
• Programmation orientée objet (POO)
3
• POO vs PPS (Prog. Procédurale Structurée)
4
• Avantages d...
Introduction
 La POO utilise une approche différente de celle des langages
procéduraux.
 Comment certaines sociétés de l...
Introduction
 Essentiellement, parce qu’elles ont sous-traité une bonne
partie de leurs travaux. Elles ont acheté des élé...
Programmation orientée objet
 La POO s’appuie sur la même idée.
 Un programme est constitué d’objets qui interagissent
(...
Programmation orientée objet2
 La POO propose une méthodologie de programmation
centrée sur les objets. Où un objet peut ...
Programmation orientée objet2
Il s'agit donc :
 de déterminer les objets présents dans le
programme.
 d'identifier leurs...
POO vs PPS (Prog. Procédurale Structurée)
 PPS : concevoir un ensemble de fonctions (et procédures)
permettant de résoudr...
 La POO inverse cet ordre et place les données au premier plan
avant de déterminer l’algorithme qui sera employé pour opé...
POO vs PPS3
POO PPS
Principe : On sépare les
données des moyens de
traitement de ces
données.
Principe : afin d’établir de...
 Approche procédurale :
Que doit faire mon programme ?
 Approche orientée objet :
De quoi doit être composé mon programm...
Programmation: diverses approches
12
 La construction d’un système va s’axer principalement sur la
détermination des données dans un premier temps et la
réali...
Avantages de la POO
 Programmation modulaire: Facilité de la réutilisation du code.
 Encapsulation (Principe de la POO) ...
Problématique de la Programmation
Le schéma simplifié d’un système informatique peut se résumer par
la formule :
Système in...
16
Résolution d’une problématique
Depuis les années 80, la croissance de l'industrie du logiciel est très importante. Elle...
Les grands principes de la POO
 Classe, Objet
 Encapsulation
 Héritage
 Polymorphisme
17
 Ces concepts ont un impact ...
 Objet: Un objet est une entité cohérente rassemblant
des données (attributs ou propriétés) et du traitement
(méthodes, s...
 Approche procédurale :
Que doit faire mon programme ?
 Approche orientée objet :
De quoi doit être composé mon programm...
Exemple: un livre à la bibliothèque est caractérisé par:
- Un titre
- Un auteur
- Un numéro d’inventaire
- Un numéro de cl...
 Les structures de données définies dans l’objet
sont appelées ses attributs (propriétés).
 Les procédures et fonctions d...
Notion d’objet: 3 caractéristiques5
 Un objet est caractérisé par :
Son comportement : que pouvez-vous faire avec cet ob...
1) son comportement
Quelles sont les méthodes
qu’on peut lui appliquer?
Exemples:
Un poisson peut-il marcher?
Un avion peu...
Exemple:
Comportement de l’objet
Il est caractérisé par des méthodes (appelées parfois fonctions
membres) qui permettent d...
2) son état
Quel est la réaction de l’objet
lorsqu’on lui applique une méthode?
 Dans un Système d’information, chaque
co...
Etat de l’objet
Il est défini à l’aide d’attributs (Fields, appelés aussi données
membres).
Ce sont des variables associée...
Notion d’objet: caractéristiques5
3) son identité
L'objet possède une identité, qui permet
de le distinguer des autres obj...
Chaque objet est unique.
Même dans le cas de 2 jumeaux
Ils peuvent avoir le même prénom,
Le même nom, la même adresse.
La ...
Notion de class
Des objets similaires peuvent être informatiquement décrits par
une même abstraction : une classe
 même s...
Notion de class
30
Classe Livre
-titre, auteur Classe Journal
-titre
Classe Employé
-nom, prénom, statut
Classe Lecteur
-n...
Notion de class
Classe Livre
-titre, auteur
Classe Journal
-titre
Classe Employé
-nom, prénom, statut
Classe Lecteur
-nom,...
Classe Journal
-titre
Notion de class
Classe Livre
-titre, auteur
+Date emprunter(Lecteur)
Classe Employé
-nom, prénom, st...
Notion de class
Une classe est composée de plusieurs membres dont chacun est soit :
 un attribut : variable typée
 une m...
Notion de class
Une classe (ou type d’objets) représente une famille d’objets
qui partagent des propriétés communes: les o...
Notion de class: les membres
 Champs (appelés aussi attributs ou données membres):
l’ ensemble des membres définissent l’...
Notion de class: Vocabulaire
36
Notion de class: instanciation
37
Hamza
12
18
Hind
17
15
instances Hamza et Hind).
Notion de class: exemple
Rectangle est une classe utilisée pour créer des objets
représentant des rectangles particuliers....
Classe Véhicule : notation UML
39
- : private
# : protected
+ : public
$ (ou souligné) : static
40
public class Television {
// Attributs
private int volume;
private int chaine;
private boolean estAllume;
// Méthodes
p...
41
Classe Television: instanciation
Une classe peut être réutilisée pour instancier
plusieurs objets
T1
T2
T3
42
Classe CompteBancaire: instanciation
Classe Etudiant: instanciation
Etudiant
• Prénom
• Age
• Filière
• Groupe
• SousGroupe
• Sexe
Etudiant1
• Mohammed
• 19
• ...
44
Définir une classe représentant des voitures.
 Les états des objets voiture doivent décrire
 démarrée ou non,
 posit...
45
public class Voiture {
private boolean estDemarre;
private int posBoiteVitesse;
private int vitesse;
private int niveau...
Qu’est ce qu’une classe ?
……….. En images
C’est un modèle de quelque chose d’abstrait.
C’est la définition qui permet de c...
Qu’est ce qu’une classe ?
47
Fille
Elle a des attributs
Un prénom
Un nom
Une date de naissance
Une adresse
Un lieu de nais...
Qu’est ce qu’une classe ?
Elle a des attributs et des méthodes
Un prénom
Un nom
Une date de naissance
Une adresse
Un lieu ...
Qu’est ce qu’une classe ?
public class Fille {
private int id;
private String nom;
private String prenom;
private String d...
Qu’est ce qu’une classe ?
public class Fille {
private int id ;
private String nom;
private String prenom;
private String ...
Qu’est ce qu’une classe ?
public class Fille {
private int id ;
private String nom;
private String prenom;
private String ...
Qu’est ce qu’une classe ?
public class Fille {
private int id ;
private String nom;
private String prenom;
private String ...
Qu’est ce qu’un objet?
………..en images
Un objet est l’instanciation d’une classe
53
Qu’est ce qu’un objet?
Voici un objet instancié
à partir de la classe
Fille
Il dispose de toutes
les propriétés et méthode...
Qu’est ce qu’un objet?
prénom : Sara
55
Qu’est ce qu’un objet?
Voici un autre
objet
Elle a un prénom :Aya
56
Qu’est ce qu’un objet?
Voici un autre
objet
Il a un prénom : Hind
57
Qu’est ce qu’un objet?
Ce sont tous
des objets
obtenus à partir
d’un modèle
58
Qu’est ce qu’un objet ?
Fille est un modèle (classe)
Tandis que Sara, Hind et Aya sont des
instances (objet)
Ils ont été i...
Différences entre classe et objet
Il est important de saisir les différences entre les notions de classe
et instance de la ...
61
Encapsulation
 L'encapsulation est un mécanisme consistant à
rassembler les données et les méthodes au sein d'une
structu...
L'encapsulation permet de garder une cohérence dans
la gestion de l'objet, tout en assurant l'intégrité des
données qui ne...
Protection de l’information: encapsulation
Interface
ensemble des
services publics
offerts
Capsule
n’autorisant que les
de...
Encapsulation : définition
Définition
Le terme encapsulation désigne le principe consistant à cacher
l’information contenue ...
Encapsulation : définition
Définition
Le terme encapsulation désigne le principe consistant à cacher
l’information contenue ...
Encapsulation : exemple
 De point de vue utilisation, un objet est une boite noire qui
offre un certain nombre de méthode...
Encapsulation : en pratique
L’encapsulation nécessite la spécification des parties publics
et privées de l’objet.
élément p...
L’encapsulation: à retenir
 C’est un mécanisme fondamental de la POO.
 Un utilisateur peut manipuler les données à l’aid...
70
L’héritage8
 L'héritage est un mécanisme qui facilite la réutilisation du
code et la gestion de son évolution. Elle dé...
L’héritage
Classe de base
(classe mère ou
super classe)
Classe dérivée
(classe fille ou
sous classe )
Relation d’héritage ...
L’héritage
Relation d’héritage
Classe B "EST UN" Classe A
Un chat EST UN animal
Une moto EST UN véhicule
Une décapotable E...
L’héritage
Une classe fille peut accéder
uniquement
aux données publiques et
protégées
73
L’héritage
 Java permet à une classe de s’élargir (extend)
relativement à une seule autre classe.
 Cette restriction est...
L’héritage: exemple
Une personne a un nom, un prénom, un numéro de Sécurité Sociale.
Un étudiant a un nom, un prénom, un n...
L’héritage: exemple
Une personne a un nom, un prénom, un numéro de Sécurité
Sociale.
Un étudiant a un nom, un prénom, un n...
L’héritage: exemple
La classe Professeur et La classe
Etudiant pourront les utiliser par le
biais de l’héritage.
On peut c...
L’héritage: exemple
Un professeur est une personne.
Un étudiant est une personne.
Il s’agit de la relation « est un »
78
L’héritage: exemple
Sans héritage, on aurait
+
#
Personne
#name : String
#prenom : String
#numSS :String
+getName():String...
L’héritage: exemple
Sans héritage, on aurait
+
#
Personne
#name : String
#prenom : String
#numSS :String
+getName():String...
Avec héritage, on aurait
N’est-il pas plus simple
d’implémenter ce modèle?
81
L’héritage: exemple
L’héritage: à retenir
 C’est un concept fondamental de la POO
 Il offre la possibilité de réutiliser les
composants logi...
83
 Une télévision et un écran d'ordinateur sont tous deux des
appareils à écran.
 Un appareil à écran possède un poids,...
84
 Une télévision et un écran d'ordinateur sont tous deux des
appareils à écran.
 Un appareil à écran possède un poids,...
85
L’héritage: exercice
86
Factoriser les éléments communs (attributs, méthodes…) de
l’ensemble de classes que vous allez dégager de ce texte
L’hé...
87
L’héritage: exercice
 Un compte chèque et un compte épargne sont tous deux des comptes
bancaires.
 Un compte chèque p...
88
Factoriser les éléments communs (attributs, méthodes…) d’un
ensemble de classes
L’héritage: exercice
89
L’héritage: exercice
90
L’héritage: exercice
 Un plan épargne logement est un compte épargne
ayant des caractéristiques propres.
 Un montant ...
91
L’héritage: exercice
 Un plan épargne logement est un compte épargne
ayant des caractéristiques propres.
 Un montant ...
92
L’héritage: exercice
93
L’héritage: exercice
Redifinition de méthode
94
Polymorphisme9
 Faculté qu'ont des objets différents de réagir
différemment en réponse au même message.
 Marcher sur ...
95
Polymorphisme9
 Le polymorphisme offre aux objets la possibilité
d ’appartenir à plusieurs catégories à la fois
 En e...
96
Polymorphisme
 Une façon de décrire l'exemple consistant à additionner des
pommes et des oranges serait d'imaginer que...
 Le polymorphisme est un concept extrêmement puissant en
POO, il permet de manipuler des objets sans en connaître
tout à ...
98
Propriété pour un même message de déclencher des méthodes
différentes
Feu
Voiture
Velo
changer (Vert)
Demarrer()
Demarr...
 Même libellé de la fonction dessiner().
Les fonctions ayant la même sémantique ont le même nom.
 Programmation plus sou...
Polymorphisme: à retenir
100
 C’est un concept fondamental de la POO
 Le polymorphisme traite de la capacité de l'objet
...
Prochain SlideShare
Chargement dans…5
×

Ch 01 poo

2 116 vues

Publié le

chapitre-présentation JAVA

Publié dans : Formation
0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 116
Sur SlideShare
0
Issues des intégrations
0
Intégrations
13
Actions
Partages
0
Téléchargements
186
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Ch 01 poo

  1. 1. Programmation Orientée Objet POO Prof. Hakim ALLALI Licences EEA & RTT. Fév 2013
  2. 2. Plan 1 • Introduction 2 • Programmation orientée objet (POO) 3 • POO vs PPS (Prog. Procédurale Structurée) 4 • Avantages de la POO 5 • Notion d’objet 6 • Notion de classe 7 • Caractéristiques de la POO : Encapsulation 8 • Caractéristiques de la POO : Héritage 9 • Caractéristiques de la POO : Polymorphisme 2
  3. 3. Introduction  La POO utilise une approche différente de celle des langages procéduraux.  Comment certaines sociétés de l’industrie informatique sont- elles devenues si importantes et aussi vite ?  Elles fabriquent en général de bonnes machines, vendues à prix bas, dans une période où il existe une demande.  Comment ont-elles pu construire tant de modèles aussi rapidement, et comment ont-elles répondu aussi vite aux changements que subit le marché de la micro-informatique ? 1 3
  4. 4. Introduction  Essentiellement, parce qu’elles ont sous-traité une bonne partie de leurs travaux. Elles ont acheté des éléments à des vendeurs réputés et se sont chargées de l’assemblage des machines. (alimentations, disques durs, cartes mères, etc.)  Production rapide et réduction des coûts. Ces constructeurs achetaient des «fonctionnalités préconditionnées». (elles acquéraient quelque chose qui possédait certaines propriétés (taille, poids, etc.) et une certaine fonctionnalité (une sortie stabilisée, une puissance électrique, etc.) 4
  5. 5. Programmation orientée objet  La POO s’appuie sur la même idée.  Un programme est constitué d’objets qui interagissent (communiquent) afin de réaliser une ou plusieurs tâches.  Chaque objet possède certaines propriétés et peut accomplir certaines opérations.  C’est le temps et les fonctionnalités disponibles qui décideront du fait que vous construisez un objet ou que vous utilisez un autre disponible. 2 5
  6. 6. Programmation orientée objet2  La POO propose une méthodologie de programmation centrée sur les objets. Où un objet peut être vu comme une entité regroupant un ensemble de données et de méthodes de traitement.  Le programmeur  Doit d’abord identifier les objets qui doivent être utilisés (ou manipulés) par le programme: on commence par décider quels objets doivent être inclus dans le programme.  Va ensuite, écrire les traitements, en associant chaque traitement à un objet donné. 6
  7. 7. Programmation orientée objet2 Il s'agit donc :  de déterminer les objets présents dans le programme.  d'identifier leurs données.  de définir les traitements à faire sur ses objets. 7
  8. 8. POO vs PPS (Prog. Procédurale Structurée)  PPS : concevoir un ensemble de fonctions (et procédures) permettant de résoudre un problème.  Après avoir déterminé ces fonctions, trouver la manière appropriée de stocker les données. Algorithmes + Structures de données = Programme  D’abord, vous décidez de la manière dont vous allez manipuler les données; ensuite seulement, vous choisissez le genre de structures que vous imposeriez aux données afin de faciliter cette manipulation. 3 8
  9. 9.  La POO inverse cet ordre et place les données au premier plan avant de déterminer l’algorithme qui sera employé pour opérer sur ces données.  En POO, chaque objet accomplit quelques tâches associées.  Si un objet dépend d’une tâche qui n’est pas de sa responsabilité, il doit avoir accès à un autre objet capable d’accomplir cette tâche. 3 9 POO vs PPS (Prog. Procédurale Structurée)
  10. 10. POO vs PPS3 POO PPS Principe : On sépare les données des moyens de traitement de ces données. Principe : afin d’établir de façon stable et robuste l’architecture d’un système, il semble raisonnable de s’organiser autour des données manipulées. 10
  11. 11.  Approche procédurale : Que doit faire mon programme ?  Approche orientée objet : De quoi doit être composé mon programme ? Exemple: Gestion d'une bibliothèque Cours Java DELANNOY Cours C++ RITCHIE Almassae Asmae ALAMI Directrice Hamza KARIMI Bibliothécaire Latifa KAMAL Lectrice Ali IDRISSI Lecteur Gérer le stock Gérer les emprunts de livres 11
  12. 12. Programmation: diverses approches 12
  13. 13.  La construction d’un système va s’axer principalement sur la détermination des données dans un premier temps et la réalisation des traitements (de haut-niveau) agissant sur ces données dans un second temps.  Cette approche permet de bâtir des systèmes plus simples à maintenir et à faire évoluer.  On regroupe dans une même entité informatique, appelée objet, les structures de données et les moyens de traitement de ces données. Avantages de la POO4 13
  14. 14. Avantages de la POO  Programmation modulaire: Facilité de la réutilisation du code.  Encapsulation (Principe de la POO) et abstraction (proche du monde réel): – Regrouper les caractéristiques dans une classe – Cacher les membres d’une classe: choix dans les niveaux de confidentialité  Programmation par « composants » (chaque portion de code est isolée): facilité de l’évolution du code. 4 14
  15. 15. Problématique de la Programmation Le schéma simplifié d’un système informatique peut se résumer par la formule : Système informatique = Structures de données + Traitements Le cycle de vie d’un système peut être décomposé en deux grandes phases : Une phase de production qui consiste à réaliser le logiciel. Une phase de maintenance qui consiste à corriger et à faire évoluer le logiciel. Lors de la production du système (au sens industriel du terme), le concepteur a deux grandes options : soit orienter sa conception sur les traitements. soit orienter sa conception sur les données. 15
  16. 16. 16 Résolution d’une problématique Depuis les années 80, la croissance de l'industrie du logiciel est très importante. Elle atteint près de 15 % du PNB des Etats Unis, soit une dépense estimée à 300 Milliard $. Un effort important est donc fait pour minimiser les dépenses de conception et de maintenance du logiciel. Selon une enquête réalisée par ACM sigsoft (Eng. NotesV10, No 5, Oct. 1985) sur 9 projets du gouvernement américain: S'orienter vers de nouvelles approches autres que celles utilisées, à l'époque (1985), dans la conception et le développement des applications POO
  17. 17. Les grands principes de la POO  Classe, Objet  Encapsulation  Héritage  Polymorphisme 17  Ces concepts ont un impact direct sur :  La qualité du système  Le coût de développement et de maintenance  Le délai du développement et de maintenance  Si ces concepts de base sont simples, leur utilisation nécessite de l’expérience
  18. 18.  Objet: Un objet est une entité cohérente rassemblant des données (attributs ou propriétés) et du traitement (méthodes, services) travaillant sur ses données.  Une classe peut être considérée comme un moule à partir duquel on peut créer des objets. Notion d’objet5 18
  19. 19.  Approche procédurale : Que doit faire mon programme ?  Approche orientée objet : De quoi doit être composé mon programme ? Exemple: Gestion d'une bibliothèque Cours Java DELANNOY Cours C++ RITCHIE Almassae Asmae ALAMI Directrice Hamza KARIMI Bibliothécaire Latifa KAMAL Lectrice Ali IDRISSI Lecteur Gérer le stock Gérer les emprunts de livres 19
  20. 20. Exemple: un livre à la bibliothèque est caractérisé par: - Un titre - Un auteur - Un numéro d’inventaire - Un numéro de classement Un objet de type Livre est constitué d’attributs qui caractérisent la structure de cet objet: Exemple d’attributs de l’objet livre L'objet est manipulé par exemple par les méthodes suivantes: – disponible : Méthode permettant de dire si le livre est disponible à la bibliothèque – qteDisponible: Méthode permettant d’agir sur la quantité disponible private String titre; private String auteur private int numInv; private String numClas; Static int Qte; 20 - Une quantité (le nombre de livres disponibles à la biblihothèque).
  21. 21.  Les structures de données définies dans l’objet sont appelées ses attributs (propriétés).  Les procédures et fonctions définies dans l’objet sont appelées ses méthodes (opérations).  Les attributs et méthodes d’un objet sont appelés ses membres.  L’ensemble des valeurs des attributs d’un objet à un instant donné est appelé état interne. Vocabulaire à retenir 21
  22. 22. Notion d’objet: 3 caractéristiques5  Un objet est caractérisé par : Son comportement : que pouvez-vous faire avec cet objet, ou quelles méthodes pouvez-vous lui appliquer ? Son état : Comment l’objet réagit-il lorsque vous appliquez ces méthodes ? (son aspect actuel) L’état d’un objet peut changer dans le temps, mais pas spontanément. Une modification dans l’état d’un objet doit être la conséquence d’appels de méthodes. Son identité : Comment l’objet se distingue-t-il des autres qui peuvent avoir le même comportement et le même état ? 22
  23. 23. 1) son comportement Quelles sont les méthodes qu’on peut lui appliquer? Exemples: Un poisson peut-il marcher? Un avion peut-il nager ? Les comportements de l’objet "Télévision" : allumer, changer de chaîne, changer de volume du son, éteindre Notion d’objet: 3 caractéristiques5 23
  24. 24. Exemple: Comportement de l’objet Il est caractérisé par des méthodes (appelées parfois fonctions membres) qui permettent de modifier l’état de l’objet.  Une méthode rattachée à l’objet permet de déclencher un des comportements associés à l’objet.  Il n’est pas possible d’agir directement sur les données d’un objet pour modifier son état; il est nécessaire de passer par ses méthodes. On dit qu'on « envoie un message » (fait une requête) à un objet. Un objet peut recevoir un message qui déclenche – une méthode qui modifie son état et / ou – une méthode qui envoie un message à un autre objet demarrer maVoiture moteur 24
  25. 25. 2) son état Quel est la réaction de l’objet lorsqu’on lui applique une méthode?  Dans un Système d’information, chaque commande est différenciée par une référence unique.  Elle va avoir un état : en cours d’acheminement, envoyée , délivrée.  Si une commande est expédiée, peut-on la modifier? c’est-à-dire, ajouter un article. Notion d’objet: 3 caractéristiques5 25 Les états de l’ objet "Télévision": allumé/éteint, chaîne courante, volume de son
  26. 26. Etat de l’objet Il est défini à l’aide d’attributs (Fields, appelés aussi données membres). Ce sont des variables associées à l’objet et qui stockent des valeurs (des informations sur l'état de l'objet). Exemple: L’état d’un objet de type Voiture est caractérisé par les attributs : couleur et vitesse L’état de l’objet maVoiture est caractérisé par les données couleur = noire vitesse = 80 Nom de l’objet (identifiant) Description des attributs maVoiture - couleur = noire - vitesse = 80 26
  27. 27. Notion d’objet: caractéristiques5 3) son identité L'objet possède une identité, qui permet de le distinguer des autres objets, indépendamment de son état. Chaque objet est unique. Chaque objet a une identité. 27
  28. 28. Chaque objet est unique. Même dans le cas de 2 jumeaux Ils peuvent avoir le même prénom, Le même nom, la même adresse. La même date de naissance, Le même lieu de naissance. Chacun aura une empreinte digitale différente. Identité de l’objet 28
  29. 29. Notion de class Des objets similaires peuvent être informatiquement décrits par une même abstraction : une classe  même structure de données et méthodes de traitement  valeurs différentes pour chaque objet Classe Livre Classe Journal Classe Employé Classe Lecteur Cours Java DELANNOY Cours C++ RITCHIE Almassae Asmae ALAMI Directrice Hamza KARIMI Bibliothécaire Latifa KAMAL Lectrice Ali IDRISSI Lecteur 6 29
  30. 30. Notion de class 30 Classe Livre -titre, auteur Classe Journal -titre Classe Employé -nom, prénom, statut Classe Lecteur -nom, prénom Cours Java DELANNOY Cours C++ RITCHIE Almassae Asmae ALAMI Directrice Hamza KARIMI Bibliothécaire Latifa KAMAL Lectrice Ali IDRISSI Lecteur
  31. 31. Notion de class Classe Livre -titre, auteur Classe Journal -titre Classe Employé -nom, prénom, statut Classe Lecteur -nom, prénom Titre = Cours C++ Auteur = Richie Titre = Cours Java Auteur = Delannoy -Nom=ALAMI - prénom = Asmae -Statut = directrice Almassae Asmae ALAMI Directrice Hamza KARIMI Bibliothécaire Latifa KAMAL Lectrice Ali IDRISSI Lecteur 31
  32. 32. Classe Journal -titre Notion de class Classe Livre -titre, auteur +Date emprunter(Lecteur) Classe Employé -nom, prénom, statut Classe Lecteur -nom, prénom + ListeDeLivres livresEmpruntés() Cours Java DELANNOY Cours C++ RITCHIE Almassae Asmae ALAMI Directrice Hamza KARIMI Bibliothécaire Latifa KAMAL Lectrice Ali IDRISSI Lecteur 32
  33. 33. Notion de class Une classe est composée de plusieurs membres dont chacun est soit :  un attribut : variable typée  une méthode (ou opération) : ensemble d'instructions de traitement class CompteBancaire { String proprietaire; double solde; double getSolde() { return solde; } void credite(double val) { solde = solde + val; } } Attributs Méthodes 33
  34. 34. Notion de class Une classe (ou type d’objets) représente une famille d’objets qui partagent des propriétés communes: les objets qui ont les mêmes états et les mêmes comportements.  Une classe regroupe les objets qui ont : - La même structure (même ensemble d’attributs) - Le même comportement (même méthodes)  Les classes servent pour la création des objets  Un objet est une instance d’une classe  Un programme OO est constitué de classes qui permettent de créer des objets qui s’envoient des messages  L’ensemble des interactions entre les objets défini un algorithme  Les relations entre les classes reflètent la décomposition du programme 34
  35. 35. Notion de class: les membres  Champs (appelés aussi attributs ou données membres): l’ ensemble des membres définissent l’état d’un objet (chaque objet a ses données propres).  Méthodes (appelées aussi fonctions membres ou comportement): définit un ensemble d’opérations applicables à l’objet (on manipule les objets par des appels de ses méthodes). L’ensemble des méthodes est appelé l’interface de l’objet. Une interface définit toutes les opérations qu’on peut appliquer à l’objet (définit tous ce qu’il est possible de "faire" avec un objet). 35
  36. 36. Notion de class: Vocabulaire 36
  37. 37. Notion de class: instanciation 37 Hamza 12 18 Hind 17 15 instances Hamza et Hind).
  38. 38. Notion de class: exemple Rectangle est une classe utilisée pour créer des objets représentant des rectangles particuliers.  Elle regroupe 4 données de type réel qui caractérisent le rectangle: longueur , largeur et origine (x,y) (la position en abscisse et en ordonnée de son origine).  On suppose qu’on effectue les opérations de déplacement et de calcul de la surface du rectangle.  Les symboles + et – sont les spécificateurs d’accès Exemple (notation UML) 38
  39. 39. Classe Véhicule : notation UML 39 - : private # : protected + : public $ (ou souligné) : static
  40. 40. 40 public class Television { // Attributs private int volume; private int chaine; private boolean estAllume; // Méthodes public void allumer() { … } public void eteindre() { … } public void augmenterVolume() { … } public void reduireVolume() { … } public void changerChaine(int chaine) { … } } NB. Par convention, les noms des classes commencent par majuscule ceux des attributs/ méthodes commencent par minuscule Classe Television
  41. 41. 41 Classe Television: instanciation Une classe peut être réutilisée pour instancier plusieurs objets T1 T2 T3
  42. 42. 42 Classe CompteBancaire: instanciation
  43. 43. Classe Etudiant: instanciation Etudiant • Prénom • Age • Filière • Groupe • SousGroupe • Sexe Etudiant1 • Mohammed • 19 • MIP • 1 • 2 • Garçon Etudiant3 • aya • 18 • GEGM • 2 • 1 • Fille Etudiant2 • Othman • 21 • BCG • 3 • 2 • Garçon instance instance instance 43
  44. 44. 44 Définir une classe représentant des voitures.  Les états des objets voiture doivent décrire  démarrée ou non,  position de boite de vitesse,  vitesse…  niveau d'essence, …  Les comportements d'une voiture incluent:  Démarrer, arrêter  Changer boite de vitesse  Accélérer, ralentir  Tourner (selon le degré spécifié) Classe Voiture: question
  45. 45. 45 public class Voiture { private boolean estDemarre; private int posBoiteVitesse; private int vitesse; private int niveauEssence; public void demarrer() { … } public void arreter() { … } public void setPosBoiteVitesse(int pos) { … } public void accelerer() { … } public void ralentir() { … } public void tourner(int degre) { … } } Classe Voiture: solution
  46. 46. Qu’est ce qu’une classe ? ……….. En images C’est un modèle de quelque chose d’abstrait. C’est la définition qui permet de créer des objets. 46
  47. 47. Qu’est ce qu’une classe ? 47 Fille Elle a des attributs Un prénom Un nom Une date de naissance Une adresse Un lieu de naissance Manger Boire Parler Dormir Rougir et des méthodes
  48. 48. Qu’est ce qu’une classe ? Elle a des attributs et des méthodes Un prénom Un nom Une date de naissance Une adresse Un lieu de naissance Ce sont les propriétés 48 Manger Boire Parler Dormir Rougir Ce sont les actions qu’elle peut réaliser
  49. 49. Qu’est ce qu’une classe ? public class Fille { private int id; private String nom; private String prenom; private String dateNaissance; private String lieudeNaissance; public static int nbFille =0; } On donne le nom de la classe 49
  50. 50. Qu’est ce qu’une classe ? public class Fille { private int id ; private String nom; private String prenom; private String dateNaissance; private String lieudeNaissance; public static int nbFille =0 ; } Ce sont les attributs. 50
  51. 51. Qu’est ce qu’une classe ? public class Fille { private int id ; private String nom; private String prenom; private String dateNaissance; private String lieudeNaissance; public static int nbFille =0 ; } Elles sont communes à toutes les instances. Elles sont accessibles uniquement par le biais d’un objet. On les appelle variables d’instance 51
  52. 52. Qu’est ce qu’une classe ? public class Fille { private int id ; private String nom; private String prenom; private String dateNaissance; private String lieudeNaissance; public static int nbFille =0 ; } Les variables de classe Une variable de classe est une variable qui est commune à toutes les instances de cette classe. Une variable de ce type peut être accessible sans avoir à passer par une instance de la classe. 52
  53. 53. Qu’est ce qu’un objet? ………..en images Un objet est l’instanciation d’une classe 53
  54. 54. Qu’est ce qu’un objet? Voici un objet instancié à partir de la classe Fille Il dispose de toutes les propriétés et méthodes définies dans la classe Fille. 54
  55. 55. Qu’est ce qu’un objet? prénom : Sara 55
  56. 56. Qu’est ce qu’un objet? Voici un autre objet Elle a un prénom :Aya 56
  57. 57. Qu’est ce qu’un objet? Voici un autre objet Il a un prénom : Hind 57
  58. 58. Qu’est ce qu’un objet? Ce sont tous des objets obtenus à partir d’un modèle 58
  59. 59. Qu’est ce qu’un objet ? Fille est un modèle (classe) Tandis que Sara, Hind et Aya sont des instances (objet) Ils ont été instanciés à partir d’un modèle (classe) 59
  60. 60. Différences entre classe et objet Il est important de saisir les différences entre les notions de classe et instance de la classe : classe = attributs + méthodes + mécanismes d’instanciation + mécanismes de destruction instance de la classe = valeurs des attributs + accès aux méthodes L’instanciation est le mécanisme qui permet de créer des instances dont les traits sont décrits par la classe. La destruction est le mécanisme qui permet de détruire une instance de la classe. L’ensemble des instances d’une classe constitue l’extension de la classe. 60
  61. 61. 61
  62. 62. Encapsulation  L'encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d'une structure (classe).  Il ne s'agit plus de déclarer des données générales puis un ensemble de procédures et fonctions destinées à les gérer de manière séparée, mais bien de réunir le tout sous le couvert d'une seule et même entité.  L'utilisateur extérieur ne pourra pas modifier directement l'information. 7 62
  63. 63. L'encapsulation permet de garder une cohérence dans la gestion de l'objet, tout en assurant l'intégrité des données qui ne pourront être accédées qu'au travers des méthodes visibles. Encapsulation7 63
  64. 64. Protection de l’information: encapsulation Interface ensemble des services publics offerts Capsule n’autorisant que les demandes de service public Demande de service Accès aux données Aya Sara Hind Règle Les données d’un objet (son état) peuvent être lues ou modifiées uniquement par les services proposés par l’objet lui-même (ses méthodes) 64
  65. 65. Encapsulation : définition Définition Le terme encapsulation désigne le principe consistant à cacher l’information contenue dans un objet et de ne proposer que des méthodes de modification/accès à ces propriétés (attributs). 65
  66. 66. Encapsulation : définition Définition Le terme encapsulation désigne le principe consistant à cacher l’information contenue dans un objet et de ne proposer que des méthodes de modification/accès à ces propriétés (attributs). L’objet est vu de l’extérieur comme une boîte noire ayant certaines propriétés et ayant un comportement spécifié. La manière, dont le comportement a été implémenté, est cachée aux utilisateurs de l’objet. Intérêt Protéger la structure interne de l’objet contre toute manipulation non contrôlée, produisant une incohérence. 66
  67. 67. Encapsulation : exemple  De point de vue utilisation, un objet est une boite noire qui offre un certain nombre de méthodes permettant d’interagir avec lui.  Peu importe comment il est construit en interne, la seule chose nécessaire pour pouvoir utiliser un objet est de savoir ce qu’il peut faire et surtout comment lui demander. Exemple: un poste de TV est une « boite noire » ayant pour interface: un écran, des HP et une télécommande. Pour changer de chaine, il suffit de changerChaine(int chaine) Peu importe ce qui se passe réellement en interne. 67
  68. 68. Encapsulation : en pratique L’encapsulation nécessite la spécification des parties publics et privées de l’objet. élément public: correspond à la partie visible de l’objet depuis l’extérieur. c’est un ensemble de méthodes utilisables par d’autres objets (environnement). élément privé: correspond à la partie non visible de l’objet. Il est constitué des éléments de l’objet visibles uniquement de l’intérieur de l’objet et de la définition des méthodes. 68
  69. 69. L’encapsulation: à retenir  C’est un mécanisme fondamental de la POO.  Un utilisateur peut manipuler les données à l’aide des méthodes.  Il existe 3 niveaux d’accès: Public, Privé, Protégé:  Public: accessible par tout le monde  Private : uniquement manipulable par l’objet lui-même.  Protégé: manipulable par l’objet lui-même & les enfants. 69
  70. 70. 70 L’héritage8  L'héritage est un mécanisme qui facilite la réutilisation du code et la gestion de son évolution. Elle définit une relation entre deux classes :  Une classe mère ou super classe  Une classe fille ou sous classe qui hérite de sa classe mère  Les objets d'une classe fille ont accès aux données et aux méthodes de la classe parent et peuvent les étendre (c-à-d peuvent avoir des attributs et des méthodes qui leur sont propres).  Les sous classes peuvent redéfinir les variables et les méthodes héritées.  Les méthodes des classes filles sont redéfinies avec le même nom, les mêmes types et le même nombre d'arguments.
  71. 71. L’héritage Classe de base (classe mère ou super classe) Classe dérivée (classe fille ou sous classe ) Relation d’héritage : Classe B "EST UN" Classe A Exemple: un avion est un véhicule Classe A Classe B 71
  72. 72. L’héritage Relation d’héritage Classe B "EST UN" Classe A Un chat EST UN animal Une moto EST UN véhicule Une décapotable EST UNe voiture 72
  73. 73. L’héritage Une classe fille peut accéder uniquement aux données publiques et protégées 73
  74. 74. L’héritage  Java permet à une classe de s’élargir (extend) relativement à une seule autre classe.  Cette restriction est appelée héritage simple.  Certains langages permettent de définir une classe à partir de plusieurs autres, c’est l’héritage multiple qui n’existe pas dans Java. héritage simple héritage multiple 74
  75. 75. L’héritage: exemple Une personne a un nom, un prénom, un numéro de Sécurité Sociale. Un étudiant a un nom, un prénom, un numéro de Sécurité Sociale, et une note. Un professeur a un nom, un prénom, un numéro de Sécurité Sociale, et une matière. Quels sont les propriétés communes aux 3 classes ? 75
  76. 76. L’héritage: exemple Une personne a un nom, un prénom, un numéro de Sécurité Sociale. Un étudiant a un nom, un prénom, un numéro de Sécurité Sociale, et une note. Un professeur a un nom, un prénom, un numéro de Sécurité Sociale, et une matière. propriétés communes aux 3 classes en rouge 76
  77. 77. L’héritage: exemple La classe Professeur et La classe Etudiant pourront les utiliser par le biais de l’héritage. On peut centraliser le nom, le prénom, le numéro de Sécurité Sociale au sein d’une classe Personne. 77
  78. 78. L’héritage: exemple Un professeur est une personne. Un étudiant est une personne. Il s’agit de la relation « est un » 78
  79. 79. L’héritage: exemple Sans héritage, on aurait + # Personne #name : String #prenom : String #numSS :String +getName():String +setName(String n): String +getprenom():String +setprenom(String n): String +setNum(int n) : void +getNum():int +getPersonne(): void +setPersonne(String f,String n, int s) + # Etudiant -name : String -prenom : String -numSS :String -note : int +getName():String +setName(String n): String +getprenom():String +setprenom(String n): String +setNum(int n) : void +getNum():int +getNote):int +setNote(int n):void +getEtudiant(): void +setEtudiant(String f,String n, int s,int n) + # Professeur -name : String -prenom : String -numSS :String - Matiere :String +getName():String +setName(String n): String +getprenom():String +setprenom(String n): String +setNum(int n) : void +getNum():int setMatiere(String n) : void +getMatiere):String +getProfesseur(): void +setProfesseur(String f,String n, String m) Quelles sont les propriétés et méthodes identiques? 79
  80. 80. L’héritage: exemple Sans héritage, on aurait + # Personne #name : String #prenom : String #numSS :String +getName():String +setName(String n): String +getprenom():String +setprenom(String n): String +setNum(int n) : void +getNum():int +getPersonne(): void +setPersonne(String f,String n, int s) + # Etudiant -name : String -prenom : String -numSS :String -note : int +getName():String +setName(String n): String +getprenom():String +setprenom(String n): String +setNum(int n) : void +getNum():int +getNote):int +setNote(int n):void +getEtudiant(): void +setEtudiant(String f,String n, int s,int n) + # Professeur -name : String -prenom : String -numSS :String - Matiere :String +getName():String +setName(String n): String +getprenom():String +setprenom(String n): String +setNum(int n) : void +getNum():int setMatiere(String n) : void +getMatiere):String +getProfesseur(): void +setProfesseur(String f,String n, String m) propriétés et méthodes identiques? 80
  81. 81. Avec héritage, on aurait N’est-il pas plus simple d’implémenter ce modèle? 81 L’héritage: exemple
  82. 82. L’héritage: à retenir  C’est un concept fondamental de la POO  Il offre la possibilité de réutiliser les composants logiciels existants.  Une classe dérivée(=fille) pourra utiliser les méthodes et attributs de la classe mère (=super classe) et pourra ajouter ses propres propriétés. Ce qui offre la possibilité de ne pas repartir de 0 82
  83. 83. 83  Une télévision et un écran d'ordinateur sont tous deux des appareils à écran.  Un appareil à écran possède un poids, une longueur de diagonale et il est possible de l'éteindre et de l'allumer.  Une télévision est un tel appareil, possédant également une liste de chaînes mémorisées, une action permettant de mémoriser une chaîne, ainsi que d'autres non précisées ici qui font d'un appareil à écran... une télévision.  Un écran d'ordinateur est également un appareil à écran, mais possédant une résolution actuelle, une liste de résolutions possibles, et une action permettant de changer la résolution actuelle.  La télévision d'un coté, et l'écran d'ordinateur de l'autre sont deux concepts basés sur celui de l'appareil à écran, et lui ajoutant divers éléments qui le rendent particulier. Si je vous dis que j'ai un appareil à écran devant moi, vous pouvez légitimement penser qu'il peut s'agir d'une télévision, d'un écran d'ordinateur, voire d'autre chose... L’héritage: exercice
  84. 84. 84  Une télévision et un écran d'ordinateur sont tous deux des appareils à écran.  Un appareil à écran possède un poids, une longueur de diagonale et il est possible de l'éteindre et de l'allumer.  Une télévision est un tel appareil, possédant également une liste de chaînes mémorisées, une action permettant de mémoriser une chaîne, ainsi que d'autres non précisées ici qui font d'un appareil à écran... une télévision.  Un écran d'ordinateur est également un appareil à écran, mais possédant une résolution actuelle, une liste de résolutions possibles, et une action permettant de changer la résolution actuelle.  La télévision d'un coté, et l'écran d'ordinateur de l'autre sont deux concepts basés sur celui de l'appareil à écran, et lui ajoutant divers éléments qui le rendent particulier. Si je vous dis que j'ai un appareil à écran devant moi, vous pouvez légitimement penser qu'il peut s'agir d'une télévision, d'un écran d'ordinateur, voire d'autre chose... L’héritage: exercice
  85. 85. 85 L’héritage: exercice
  86. 86. 86 Factoriser les éléments communs (attributs, méthodes…) de l’ensemble de classes que vous allez dégager de ce texte L’héritage: exercice  Un compte chèque et un compte épargne sont tous deux des comptes bancaires.  Un compte chèque possède un solde et un montant découvert autorisé qu’il est possible de changer. On peut effectuer des opérations de dépôt et de retrait d’argents. Le retrait n’est autorisé que suivant le découvert.  Un compte épargne possède également un solde. Il est rémunéré selon un taux ce qui génère des intérêts sur lesquels on peut effectuer des opérations de calcul et de crédit.  Un compte épargne est un compte bancaire sur lequel, on peut effectuer également des opérations de dépôt et de retrait d’argents. Il n’y a pas de découvert autorisé pour le retrait d’argent. Le taux d’intérêt peut être changé.
  87. 87. 87 L’héritage: exercice  Un compte chèque et un compte épargne sont tous deux des comptes bancaires.  Un compte chèque possède un solde et un montant découvert autorisé qu’il est possible de changer. On peut effectuer des opérations de dépôt et de retrait d’argents. Le retrait n’est autorisé que suivant le découvert.  Un compte épargne possède également un solde. Il est rémunéré selon un taux ce qui génère des intérêts sur lesquels on peut effectuer des opérations de calcul et de crédit.  Un compte épargne est un compte bancaire sur lequel, on peut effectuer également des opérations de dépôt et de retrait d’argents. Il n’y a pas de découvert autorisé pour le retrait d’argent. Le taux d’intérêt peut être changé.
  88. 88. 88 Factoriser les éléments communs (attributs, méthodes…) d’un ensemble de classes L’héritage: exercice
  89. 89. 89 L’héritage: exercice
  90. 90. 90 L’héritage: exercice  Un plan épargne logement est un compte épargne ayant des caractéristiques propres.  Un montant de versement doit se faire sur une durée donnée et pour des périodes bien précises.  Une fois la période écoulée, le montant de prêt peut être calculé et l’opération de retrait peut se faire.  Aucun retrait ne peut s’effectuer avant l’écoulement de la durée fixée.
  91. 91. 91 L’héritage: exercice  Un plan épargne logement est un compte épargne ayant des caractéristiques propres.  Un montant de versement doit se faire sur une durée donnée et pour des périodes bien précises.  Une fois la période écoulée, le montant de prêt peut être calculé et l’opération de retrait peut se faire.  Aucun retrait ne peut s’effectuer avant l’écoulement de la durée fixée.
  92. 92. 92 L’héritage: exercice
  93. 93. 93 L’héritage: exercice Redifinition de méthode
  94. 94. 94 Polymorphisme9  Faculté qu'ont des objets différents de réagir différemment en réponse au même message.  Marcher sur la queue d'un chat => il miaule  Marcher sur la queue d'un chien => il aboie  Même nom de fonction, plusieurs implantations: Fonction: opération addition (+) Addition des nombres entiers, 1 + 2 = 3 Addition des nombres complexes, 1 + 2i + 3 + 4i = 4 + 6i
  95. 95. 95 Polymorphisme9  Le polymorphisme offre aux objets la possibilité d ’appartenir à plusieurs catégories à la fois  En effet, nous avons certainement tous appris à l'école qu'il était impossible d'additionner des pommes et des oranges  Mais, on peut écrire l ’expression suivante: 3 pommes + 5 oranges = 8 fruits
  96. 96. 96 Polymorphisme  Une façon de décrire l'exemple consistant à additionner des pommes et des oranges serait d'imaginer que nous disons pommes et oranges mais que nous manipulons en fait des fruits. Nous pourrions écrire alors la formule correcte : 3 (fruits) pommes + 5 (fruits) oranges --------------------------------------------- = 8 fruits  Cette façon de voir les choses implique que les pommes et les oranges soient "transformées" en fruits préalablement à l'établissement du problème.
  97. 97.  Le polymorphisme est un concept extrêmement puissant en POO, il permet de manipuler des objets sans en connaître tout à fait le type tout en se basant sur la relation d’héritage.  Le polymorphisme en Java, se traduit par :  La compatibilité entre un type dérivé et un type ascendant.  La ligature dynamique des méthodes, dans le sens où il permet d’obtenir le comportement adapté à chaque type d’objet, sans avoir besoin de tester sa nature de quelque façon que ce soit.  Le polymorphisme se base sur cette affirmation : un objet a comme type non seulement sa classe mais aussi n’importe quelle classe dérivée. Polymorphisme 97
  98. 98. 98 Propriété pour un même message de déclencher des méthodes différentes Feu Voiture Velo changer (Vert) Demarrer() Demarrer() - Débrayer - Passer la première - Accélérer - Embrayer - Pédaler Plusieurs classes peuvent posséder une méthode de même nom. Suivant la nature de l'objet auquel elle doit s'appliquer, on appliquera telle ou telle méthode. Le polymorphisme : consiste donc à appeler la bonne méthode d'après le type de l'objet implémenté. Polymorphisme
  99. 99.  Même libellé de la fonction dessiner(). Les fonctions ayant la même sémantique ont le même nom.  Programmation plus souple => ajouter une classe RECTANGLE … Il suffit de le faire et d'écrire la méthode dessiner() dans cette classe.  En programmation procédurale, il faut reprendre le code dessiner() (il faut déjà l'avoir ce qui n'est toujours pas le cas) et l'enrichir (sans le détériorer, histoire de pouvoir toujours dessiner() un cercle par exemple). Polymorphisme: avantages classe CARRE dessiner(); classe CERCLE dessiner(); classe TRIANGLE dessiner(); 99
  100. 100. Polymorphisme: à retenir 100  C’est un concept fondamental de la POO  Le polymorphisme traite de la capacité de l'objet à posséder plusieurs formes.  Cette capacité dérive directement du principe d'héritage.  C’est la faculté qu'ont des objets différents de réagir différemment en réponse au même message.  C’est la capacité du système de choisir dynamiquement la méthode qui correspond au type réel de l’objet.

×