Académique Documents
Professionnel Documents
Culture Documents
Plan du cours
~ Concepts de la POO
~ Améliorations de C++
~ Classes et objets
~ Héritage
~ Patrons
~ Exceptions
2
Programmation Orientée Objets
Chapitre 1
Concepts de la POO
Plan
~ Introduction
~ Programmation structurée
f Critiques et limitations
4
Introduction
Programmation structurée
(procédurale)
~ Un programme = ensemble
de données + fonctions (ou
Données
procédures ) agissant sur les
données
fonction 1
fonction n
~ Modularité assurée par le
découpage du programme
en fonctions et procédures
6
Programmation structurée
(critiques et limitations)
Programmation structurée
(critiques et limitations)
f Exemple
C3 = C1*C2
8
Programmation structurée
(critiques et limitations)
~ Solution 1
f Un nombre complexe est représenté par deux
variables réelles
Programmation structurée
(critiques et limitations)
~ Solution 1 : listes des fonctions
f Une fonction qui saisit une matrice de complexes
f Une fonction qui affiche un nombre complexe.
f Une fonction qui affiche une matrice de complexes
f Une fonction qui calcule le produit de deux nombres
complexes
f Une fonction qui calcule le produit d’une ligne de la matrice
C1 et d’une colonne de la matrice C2
f Une fonction qui calcule le produit de deux matrices de
complexes C1 et C2
f Un programme principal qui saisit deux matrices C1 et C2,
et qui calcule et affiche leur produit.
10
Programmation structurée
(critiques et limitations)
~ Changement des structures de données
~ Solution 2
f Un nombre complexe est représenté par une
structure à deux champs réels
Programmation structurée
(critiques et limitations)
12
Programmation structurée
(critiques et limitations)
f Lisibilité faible
13
Programmation structurée
(critiques et limitations)
~ Conception "plat de spaghettis" des fonctions
Fonction1( )
------- Fonction 2( )
------ -------
------
Fonction 5( )
------- Fonction 3( )
------ -------
------
Fonction 4( )
-------
14 ------
Programmation structurée
(critiques et limitations)
~ Manque de réutilisabilité
15
16
Programmation Orientée Objets POO
~ Principes de la POO
f Intégration des données et des traitements (méthodes) au
sein d’une même entité : objet
17
Données
Méthodes agissant
sur les données Données
Méthodes agissant
sur les données
Données
Méthodes agissant
sur les données
18
Principes de la POO
Encapsulation
19
Principes de la POO
Abstraction
~ L’interaction d’un objet vis-à-vis de l’extérieur est
définie par un ensemble de méthodes (interface).
20
Principes de la POO
Encapsulation/Abstraction
Interface
Méthodes Données
( champs)
21
Apports de la POO
~ Plus de modularité :
f l’unité de modularité est l’objet
⇒ plus de réutilisabilité et d’extensibilité
~ Plus de sécurité
f Protection des données de l’objet
f Interaction avec l’objet est définie par une interface
~ Meilleure lisibilité
f Les données et méthodes sont spécifiées au même endroit
~ Facilité d’extensibilité
f Nouvelles fonctionnalités : Les données et méthodes sont spécifiées en même
temps
f Modification de l’objet
⇒ Meilleure conception
22
Concepts de la POO
~ Classe et instances
~ Message et méthodes
~ Polymorphisme
~ Agrégation
23
Classe et instance
~ Analogie
24
Structure d’une classe
Une classe est composée de deux parties :
f Partie données : attributs ou champs
f Partie traitement : méthodes ou opérations appliquées aux objets
Classe A
Champs
Champs1
Champs2
Méthodes
Méthode1( )
Méthode2( )
O1 Objet de la classe A
25
Compte 2
Compte 1
Instances
26
Méthodes et envoi de message
~ Le comportement des objets (partie dynamique) est décrit au
niveau de leur classe par un ensemble d’opérations appelées
méthodes
Classe
Afficher( )
O1
27
Héritage simple
~ L’héritage permet de définir une classe à partir d’une classe
existante en lui ajoutant de nouveaux attributs et de nouvelles
méthodes
f Relation " est une "
28
Héritage simple
Terminologie et représentation graphique
A
La classe B hérite de la classe A
⇒
~
f Exprime la relation " B est une A"
B
Héritage simple
hiérarchie d’héritage
A1
~ Le concept d’héritage n’est pas
limité à un seul niveau. Une
hiérarchie de classe peut être A2
définie
A3
An
30
Héritage simple
Exemple
Personne
Employé Etudiant
31
Héritage simple
A éviter
~ Hiérarchies trop lourdes
il ne faut pas en abuser !!!
~ 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
32
Classes abstraites
Méthodes
Abstraite Méthode1( )
Méthode2( )
Objet de la classe A
O1
33
Classes abstraites
Forme
Exemple --------
Abstraite dessiner( )
--------
34
Héritage Multiple
A1 A2 An
35
Héritage Multiple
Exemple
Employé Etudiant
Etudiant_salarié
36
Héritage Multiple
Conflits
Employé Etudiant
------- -------
code (doti) code (CNE)
------- -------
------- -------
37
Héritage Multiple
Conflits
Personne
-------
nom
-------
Employé Etudiant
38
Héritage Multiple
Résolutions des conflits
39
Héritage Multiple
Résolutions des conflits (1)
Revoir la conception
40
Héritage Multiple
Résolutions des conflits (2)
Priorité 1 Priorité 2
Employé Etudiant
------- -------
nom nom
------- -------
Etudiant_salarié
-------
nom (Employé)
-------
-------
41
Héritage Multiple
Résolutions des conflits (3)
Etudiant_salarié
-------
code (Employé)
code (Etudiant)
-------
42
Polymorphisme
43
Polymorphisme
Exemples (1)
~ La méthode afficher ( ) est définie Personne
dans la classe personne et --------
redéfinie dans les classes Etudiant afficher( )
et Salarié
--------
P1
~ Au cours de l’exécution un
pointeur sur l’objet p1 peut pointer
sur un objet de la classe Etudiant
ou de la classe Salarié Salariéé Etudiant
-------- --------
~ Quelle fonction "afficher()" sera afficher( )
afficher( )
exécutée dans ce cas? --------
--------
~ Le choix de la bonne méthode est
retardé au moment de l’exécution
(non lors de la compilation). On S1 E1
parle de la liaison dynamique.
44
Polymorphisme
Exemples (2)
Forme
--------
~ La méthode dessiner() est dessiner( )
définie dans la classe Forme --------
45
Agrégation (composition)
46
Agrégation (composition)
Exemple
Classe Ordinateur
-------------------
clav : Clavier
Sour : Souris
Proc : processeur
Mon : Moniteur
--------------------
47
~ Concepts de base
f Classe et instances
f Message et méthodes
f Héritage simple
~ Concepts complémentaires
f Héritage multiple
f Polymorphisme
f Agrégation
48
Historique des LOO
~ Simula (1967)
~ Smalltalk (1972)
~ C++ (1983)
~ Eiffel
~ Java (1995)
49