4. Introduction
Programmation : Activité qui consiste à exprimer la solution
d’un problème sous forme d’un programme
4
d’un problème sous forme d’un programme
Paradigme de programmation : Modèle de pensée qui
oriente la réflexion, la recherche et l’écriture d’un programme
6. Origine
Principe
Critiques et limitations
Solution
Programmation structurée
Critiques et limitations
Solution
7. Programmation structurée — Origine
Equation de Wirth, Livre publié en 1976
Algorithmes
7
Algorithmes
Structures de
données
Programmes
8. Programmation structurée — Principe
Dissociation entre les données et les traitements :les
structures de données et les algorithmes sont développés
séparément
Approche descendante : le programme est découpé en
8
Approche descendante : le programme est découpé en
fonctions dépendantes qui agissent sur les structures de
données
Données
fonction 1
fonction 2
fonction n
9. Programmation structurée — Critiques
Difficulté de modification d’un programme
Changement d’une structure de données
Modification du prototype d’une fonction
9
Difficulté de réutilisabilité partielle ou totale d’un programme
Absence de la protection des données
10. Programmation structurée — Critiques
Changement d’une structure de données
10
Changement profond des fonctions
Le moindre changement dans les
structures de données
11. Programmation structurée — Critiques
Changement d’une structure de données : Exemple
Calcul du produit de deux matrices complexes C= C1*C2
Choix des structures de données— Solution 1
11
Choix des structures de données— Solution 1
Un nombre complexe est représenté par deux variables réelles
Une matrice de complexes est représentée par deux matrices réelles
12. Programmation structurée — Critiques
Changement d’une structure de données : Exemple
Calcul du produit de deux matrices complexes C= C1*C2
Choix des fonctions — Solution 1
Prototype Description
12
main
sMatCompl affMatCompl
prodMatComp
prodNombCompl
prodLigColCompl
affNomCompl
Prototype Description
affMatCompl Saisit une matrice de complexes
affNomCompl Affiche un nombre complexe
prodNomCompl Calcule le produit de deux nombres complexes
prodLigColCom
pl
Calcule le produit d’une ligne de complexes par
une colonnes de complexes
prodMatCompl Calcule le produit de deux matrices de complexes
main • Saisit deux matrices de complexes
• Calcule leur produit
• Affiche la matrice de complexes résultante
13. Programmation structurée — Critiques
Changement d’une structure de données : Exemple
Calcul du produit de deux matrices complexes C= C1*C2
Choix des structures de données— Solution 2
13
Choix des structures de données— Solution 2
Un nombre complexe est représenté par une structure à deux champs
réels
Une matrice complexe est représentée par un tableau bidimensionnel de
structures de complexes
Il est claire que le remplacement de la solution 1 avec la solution 2
entraine le changement de toutes les fonctions
14. Programmation structurée — Critiques
Modification de l’interface (prototype) d’une fonction
Conception "plat de spaghettis" : Les fonctions s’appellent entre
elles à plusieurs endroits avec imbrication des appels
Fonction1( )
14
Fonction1( )
-------
------
Fonction 2( )
-------
------
Fonction 5( )
-------
------
Fonction 3( )
-------
------
Fonction 4( )
-------
------
Lisibilité faible
• Comment identifier la responsabilité d’une
fonction? qui fait quoi?
• Comment identifier tous les endroits d’appel
de cette fonction?
la modification d’une fonction devient une
tâche délicate
15. Programmation structurée — Critiques
Pas de protection des données : Les structures de données
Sont accessibles par les fonctions définies et la fonction main
Peuvent être modifiées de n’importe quel point du programme
15
Risque d’incohérence dans le cas de modification
multiples de la structure de données
16. Programmation structurée — Critiques
Réutilisabilité difficile
Impossible de réutiliser une fonction existante qui opère sur des
structures de données différentes
16
structures de données différentes
Pour réutiliser une fonction Il faut intégrer toutes les fonctions
appelées directement ou indirectement dans cette fonction
17. Programmation structurée — Solution
Programmation Orientée Objets — POO
Évolution de la programmation structurée : Apporte des solutions
aux différentes limitations
17
Conception proche du monde réel : les programmes reflètent la
réalité du problème
18. Programmation Orientée Objet — Principes
Intégration des données et des traitements au sein d’une
même entité : l’objet
Fonction1 Fonction2
Objet = données + méthodes
18
Données
Fonction 5 Fonction3
Fonction 4
Répond à la problématique du changement des structures
de données et de la modification de l’interface des fonctions
Objet = données + méthodes
19. Programmation Orientée Objet — Principes
Programme = ensemble d’objets qui interagissent et
communiquent par messages
Fonction1
Fonction 5
Fonction2
Fonction1 Fonction2
19
Données
Fonction 5
Fonction3
Fonction 4
Données
Fonction 5
Fonction 3
Fonction 4
Données
Fonction1
Fonction 5
Fonction 3
Fonction2
Fonction 4
20. Programmation Orientée Objet — Principes
Encapsulation
Cacher la partie données d’un objet afin d’empêcher l’accès externes
(les autres objets du programme)
Contrôler l’accès aux données : Seules les méthodes de cet objet
20
Contrôler l’accès aux données : Seules les méthodes de cet objet
peuvent y accéder.
Intérêt: Une modification interne n’influence pas le fonctionnement
général du programme
Répond à la problématique de la
protection des données
21. Programmation Orientée Objet — Principes
Abstraction
Montrer le comportement d’un objet: Un objet
n’est vu que par ses spécifications
Définir l’Interface de l’objet pour interagir avec
l’environnement externe: un ensemble de
21
l’environnement externe: un ensemble de
méthodes.
Intérêt : Epargner la connaissance de la
structure interne de l’objet et l’implémentation de
ses méthodes.
Répond à la problématique de
la Réutilisabilité
23. Programmation Orientée Objet — Apports
Plus de modularité : l’unité de modularité est l’objet
Meilleure lisibilité: les données et les méthodes sont
spécifiées au même endroit
Meilleure conception : plus de réutilisabilité et d’extensibilité
23
Meilleure conception : plus de réutilisabilité et d’extensibilité
et facilité de changement
Plus de sécurité : protection des données et interaction à
travers l’interface
Amélioration des critères de
la qualité logicielle
24. Classe et Objets
Message et méthodes
Héritage simple et multiple
Polymorphisme
Programmation Orientée Objet
Concepts
Agrégation
25. Programmation Orientée Objet — Concepts
Objet
Entité représentant un objet du monde réel (le monde du
problème)
Objets tangibles: voiture, personne, avion, etc.
25
Objets tangibles: voiture, personne, avion, etc.
Objets conceptuels: date, nombre, voyage, inscription, etc.
Se caractérise par:
Une identité unique (code)
Un état interne (valeurs des attributs à un instant donné)
Un comportement (les méthodes exécutées en réaction aux messages
des autres objets )
26. Programmation Orientée Objet — Concepts
Classe
Description d’un ensemble d’objets ayant la même
structure le même comportement
La structure d’une classe est composée de deux
26
La structure d’une classe est composée de deux
parties :
Attributs
Attribut1
Attribut2
Méthodes
Méthode1( )
Méthode2( )
Classe A
Attributs: un ensemble de champs
représentant la structure des objets
Méthodes : un ensemble de fonctions
représentant le comportement des objets
27. Programmation Orientée Objet — Concepts
Classe — Instanciation
Création d’un objet d’une classe; les
objets crées sont appelés instances
Attributs
Attribut1
Attribut2
Méthodes
Classe
A
27
Programmation
Procédurale
Variable Type
Programmation
orientée Objets
Objet Classe
O1
Objet de la classe A
Méthodes
Méthode1( )
Méthode2( )
28. Programmation Orientée Objet — Concepts
Exemple
Attributs
numéro
CIN
Nom
Prénom
Adresse
Classe
28
Exemple
classe Compte bancaire
Adresse
Solde
Méthodes
Créer_compte( )
Afficher_solde( )
Retirer( )
Déposer( )
Fermer_compte()
Compte 1
Compte 2
Instances
29. Programmation Orientée Objet — Concepts
Méthodes et envoi de message
Le comportement des objets est décrit au niveau de leur classe
par un ensemble de méthodes
L’interaction (communication) avec un objet
29
L’interaction (communication) avec un objet
Un objet client demande un service à un autre objet
Comment ?: envoi d’un message —Indiquer à l’objet ce qu’il doit faire en
invoquant la méthode adéquate
Afficher( )
instance
O1
Affiche toi Classe
30. Programmation Orientée Objet — Concepts
Héritage
Permet de modéliser la relation de type « est une »
entre classes
Permet de définir une classe à partir d’une ou
30
Permet de définir une classe à partir d’une ou
plusieurs classes existantes
Deux types d’héritage
Héritage simple : une classe hérite d’une seule classe
Héritage multiple: une classe hérite de plusieurs classes
31. Programmation Orientée Objets — Concepts
Héritage : peut être utilisé dans l’objectif de:
Spécialisation: ajouter de nouveaux attributs et de nouvelles
méthodes
31
méthodes
Généralisation : factoriser les propriétés communes aux
classes dérivées
32. Programmation Orientée Objet — Concepts
Héritage simple — Terminologie et Représentation graphique
La classe B hérite de la classe A
La classe A est dite la super-classe ou la classe de base
32
La classe B est dite la sous-classe ou la classe dérivée
A
B
33. Programmation Orientée Objet — Concepts
Héritage Simple : B une classe qui hérite d’une classe A
B dispose implicitement de tous les attributs et de toutes les
méthodes de la classe A
33
méthodes de la classe A
Les attributs et les méthodes de la classe B sont prioritaires par
rapport aux attributs et méthodes de même nom définis dans la
classe A
34. Programmation Orientée Objet — Concepts
Héritage simple : Hiérarchie
L’héritage n’est pas limité à un seul niveau, une hiérarchie
de classes peut être définie
A
B
34
de classes peut être définie
La profondeur de la hiérarchie doit être raisonnable C
D
36. Programmation Orientée Objet — Concepts
Héritage Simple — A éviter
Hiérarchies trop lourdes : il ne faut pas en abuser !!!
36
Héritage de construction: La classe voiture ne doit pas hériter de
la classe roue
Incohérences conceptuelles: Les attributs ou les méthodes de la
classe de base ne sont pas compatibles avec la classe dérivée
37. Programmation Orientée Objet — Concepts
Classes Abstraites
Intérêt — définir un cadre de travail pour les classes dérivées :
généralisation
Une classe abstraite est une classe où certaines méthodes ne
37
Une classe abstraite est une classe où certaines méthodes ne
sont pas implémentées
La classe abstraite ne peut pas être instanciée
Méthodes
Abstraite Méthode1( )
Méthode2( )
Objet de la classe A O1
Classe abstraite A
41. Programmation Orientée Objet — Concepts
Héritage Multiple — Conflits
Etudiant
-------
code (CNE)
-------
Employé
-------
code (doti)
-------
41
Etudiant_salarié
-------
code
code
-------
-------
!!!
Des super-classes possèdent des attributs
ou méthodes ayant le même nom
42. Programmation Orientée Objet — Concepts
Héritage Multiple — Résolution de Conflits
Considérer que tout conflit est une erreur
42
Revoir la conception
43. Programmation Orientée Objet — Concepts
Héritage Multiple — Résolution de Conflits
Définir un ordre entre les classes de base
Etudiant
Employé
Priorité 1 Priorité 2
43
Etudiant
-------
nom
-------
Employé
-------
nom
-------
Etudiant_salarié
-------
nom
-------
44. Programmation Orientée Objet — Concepts
Héritage Multiple — Résolution de Conflits
Etudiant
-------
code (CNE)
-------
Employé
-------
code (doti)
-------
44
code (CNE)
-------
code (doti)
-------
Etudiant_salarié
-------
code (Employé)
code (Etudiant)
-------
Dupliquer le membre qui présente un
conflit
Préfixer le membre qui présente un
conflit par le nom de la classe d’origine.
45. Programmation Orientée Objet — Concepts
Héritage Multiple Personne
-------
nom
-------
45
Etudiant
Employé
Etudiant_salarié
-------
nom
nom
-------
!!!
Conflits :Un membre (attribut ou méthode) est
hérité plusieurs fois par une classe dérivée
Résolution : Utiliser les possibilités du langage de
programmation
46. Programmation Orientée Objet — Concepts
Polymorphisme
Capacité d’une entité à prendre plusieurs formes
L’entité polymorphe prend la forme adéquate au cours de
l’exécution
46
l’exécution
Changement (vert )
Voiture
Vélo
Démarrage des
véhicules
- Débrayer
- Passer la première
- Accélérer
- Embrayer
Pédaler
Feu
47. Programmation Orientée Objet — Concepts
Polymorphisme: Trois types
Polymorphisme paramétrique : Définir la même fonction avec des
paramètres de type différents
Polymorphisme ad hoc — Surcharge : Définir la même fonction
47
Polymorphisme ad hoc — Surcharge : Définir la même fonction
dans des classes sans rapport
Polymorphisme d’héritage — Redéfinition: Spécialiser des
méthodes de la super-classe pour les classes dérivées
48. Programmation Orientée Objet — Concepts
Polymorphisme d’héritage — Exemple
Forme
--------
Abstraite dessiner( )
--------
La méthode dessiner() est définie
dans la classe Forme
La méthode dessiner() est redéfinie
48
Triangle
--------
dessiner( )
--------
--------
Carre
--------
dessiner( )
--------
Cercle
--------
dessiner( )
--------
La méthode dessiner() est redéfinie
dans chacune des classes dérivées
(différemment)
49. Programmation Orientée Objet — Concepts
Polymorphisme d’héritage — Exemple
Forme
--------
Abstraite dessiner( )
--------
On maintient un pointeur de type Forme
remplie avec un objet des classes
dérivées
49
Triangle
--------
dessiner( )
--------
Carre
--------
dessiner( )
--------
Cercle
--------
dessiner( )
--------
dérivées
Le choix de la bonne méthode dessiner()
est retardé au moment de l’exécution
50. Programmation Orientée Objet — Concepts
Association
Modélise la relation de coopération entre les classes
Les objets ont leur propre cycle de vie et il n’y a pas de propriétaire:
les objets peuvent être créés et supprimés indépendamment
50
les objets peuvent être créés et supprimés indépendamment
Implémentation: l’un des attributs de la classe maintient des instances
de l’autre classe
Enseignant Etudiant
Enseigne plusieurs
51. Programmation Orientée Objet — Concepts
Agrégation
Une forme plus intime d’association
Les objets ont leur propre cycle de vie, mais il existe des propriétaires
: les objets enfants ne peuvent pas appartenir à un autre objet parent,
51
: les objets enfants ne peuvent pas appartenir à un autre objet parent,
mais peuvent être créés et supprimés indépendamment.
Implémentation: l’un des attributs de la classe maintient des instances
de l’autre classe
Enseignant Département
Appartient
52. Programmation Orientée Objet — Concepts
Composition
Une forme plus forte d’agrégation qui modélise la relation de type " est
composé de " entre les classes
L’objet enfant n’a pas son cycle de vie et si l’objet parent est supprimé,
52
L’objet enfant n’a pas son cycle de vie et si l’objet parent est supprimé,
tous les objets enfants seront également supprimés.
Implémentation: l’un des attributs de la classe maintient des instances
de l’autre classe
Ordinateur Clavier
contient
53. Classification
Tout LOO doit satisfaire 3 concepts de base et peut
implémenter d’autres concepts complémentaires.
Classe et instances
Message et méthodes
Langages Orientés Objets
53
Message et méthodes
Héritage simple
Concepts complémentaires
Héritage multiple
Polymorphisme
Agrégation
54. Impacts sur les autres nivaux
Bases de Données
Modèles: relationnel -objet
Langage d’interrogation : OQL – Object Query Langage
SGBD
54
SGBD
Méthodologies de conception
Méthodes d’Analyse et de Conception
Processus logiciel
Langage de modélisation