Telechargé par youneslaasri18

Cours POO

publicité
Programmation Orientée Objets
Paradigmes
Notions
1
De la programmation classique vers la
programmation orientée objet
La programmation classique telle que étudiée au travers des
langages C, Pascal… définie un programme comme étant:
 un ensemble de données sur lesquelles agissent des
procédures et des fonctions.
 Les données constituent la partie passive du programme.
Les procédures et les fonctions constituent la partie active;
 Programmer dans ce cas revenait à:
 définir un certain nombre de variables (structures,
tableaux…)
 écrire des procédures pour les manipuler sans associer
explicitement les unes aux autres.
2
De la programmation classique vers la
programmation orientée objet
Exécuter un programme se réduit alors à appeler ces
procédures dans un ordre décrit par le séquençage des
instructions et en leur fournissant les données nécessaires à
l’accomplissement de leurs tâches.
3
De la programmation classique vers la
programmation orientée objet
Dans cette approche données et procédure sont traitées
indépendamment les unes des autres sans tenir compte des
relations étroites qui les unissent.
Les questions qu’on peut poser dans ce cas:
1. Cette séparation (données, procédures) est elle utile?
2. Pourquoi privilégier les procédures sur les données (Que
veut-on faire?)?
3. Pourquoi ne pas considérer que les programmes sont
avant tout des ensembles objets informatiques caractérisé
par les opérations qu’ils connaissent?
Les langages objets sont nés pour répondre à ces questions.
Ils sont fondés sur la connaissance d’une seule catégorie
d’entités informatiques: les objets.
Un objet incorpore des aspects statiques et dynamiques au
sein d’une même notion.
4
De la programmation classique vers la
programmation orientée objet
 Un programme est constitué d’un ensemble d’objets chacun
disposant d’une partie procédures et d’une partie données. Les
objets interagissent par envoie de messages.
Un objet peut recevoir un msg qui déclenche:
 Une fonction qui modifie son état ou
 Une fonction qui envoie un msg à un autre objet
5
De la programmation classique vers la
programmation orientée objet
Programmation classique
Programmation Orienté e Objet
6
Les principes de la POO
La notion d’objet
 Un objet = un concept, une idée ou une entité du monde
physique
 voiture, personne, étudiant, animal, fenêtre graphique, forme
géométrique, ...
 Dans un programme, un objet s’apparente à une variable
 Un objet est caractérisé par trois notions
 les attributs : données de l’objet / variable qu’il contient et
représentant son état
 les méthodes (fonctions membres) : caractérise son
comportement, l’ensemble des actions que l’objet peut
réaliser, accès/modification des données
 une identité, qui permet de le distinguer de manière unique
des autres objets, indépendamment de son état
7
Les principes de la POO
La notion d’objet (exemple livre)


propriétés d’un livre dans une bibliothèque
 état (emprunté / disponible / perdu)
 date de la fin de l’emprunt
 titre
 auteur
 nombre de pages
Pour un livre donné, ces propriétés ont des
valeurs!
8
Les principes de la POO
La notion d’objet (exemple livre)
 opérations sur un livre d’une bibliothèque
 emprunter
 rendre
 perdre
 voler
9
Les principes de la POO
La notion de classe
 Les objets ayant des mêmes propriétés et les
mêmes méthodes peuvent être mis dans une
classe.
 Une classe sera définie par les propriétés et les
méthodes sur ses éléments.
10
Les principes de la POO
La notion de classe (exemple: Classe des livres)
 propriétés
- état (emprunté /
disponible /
perdu)
- date de la fin de
l’emprunt
- Titre
- Auteur
- nombre de pages
 méthodes
–
–
–
–
emprunter
rendre
perdre
voler
11
Les principes de la POO
La notion de classe
 Une classe est un ensemble des propriétés et des
méthodes.
Dans le programme
propriétés
variables
méthodes
procédures (code)
ENCAPSULATION
12
Les principes de la POO
Une classe dans un programme
 une classe est une collection de données et des
méthodes sur ces données.
 Une classe est une encapsulation des données
et du code.
 La notion de l’encapsulation est la création des
classes
 donne une organisation naturelle des fonctions
(méthodes)
 permet d’effectuer la modification locale du
code
13
Les principes de la POO
Instanciation
 Un objet est une instanciation d’une classe
 Les propriétés (i.e. des variables) de la classe ont
des valeurs.
 Les méthodes de la classe fonctionnent sur
l ’objet.
14
Les principes de la POO
Une instance de la classe livre
propriétés
– état = emprunté
– date de la fin de l’emprunt =
2003/03/20
– titre = Concepts of objectoriented programming
– auteur = David N. Smith
– nombre de pages = 189
méthodes
– emprunter
– rendre
– perdre
– voler
15
Les principes de la POO
Comment créer un objet?
 Dans chaque classe, il y a une méthode spéciale:
La méthode constructeur
 Cette méthode permet de créer un nouveau objet de la
classe en définissant les valeurs des propriétés et en
donnant accès aux méthodes sur cette objet.
16
Les principes de la POO
Une instance de la classe livre
propriétés
– état = emprunté
– date de la fin de l’emprunt =
2003/03/20
– titre = Concepts of objectoriented programming
– auteur = David N. Smith
– nombre de pages = 189
méthodes
– emprunter
– rendre
– perdre
– voler
– livre
méthode
constructeur
17
Les principes de la POO
Objet comme valeur d’une propriété
Un objet peut être la valeur d’une
propriété
18
Les principes de la POO
Exemple : Objet comme valeur d’une propriété
Classe auteur
propriétés
– nom (String)
– prénom (String)
– état (mort/vivant)
– prix (liste)
méthodes
– obtenir prix
– auteur
19
Les principes de la POO
Exemple : Objet comme valeur d’une propriété
Classe livre
 propriétés
 méthodes
– état (emprunté / disponible /
perdu)
– date de la fin de l’emprunt
– titre
– auteur
– nombre de pages
–
–
–
–
–
emprunter
rendre
perdre
voler
livre
La valeur est une instanciation de
la classe auteur
20
Les principes de la POO
Hiérarchie des classes
 Example :
classification des
espèces
 La hiérarchie va
des classes
générales vers les
classes
spécifiques
véhicle
voiture
camion
4x4
utilitaire
moto
21
Les principes de la POO
Hiérarchie des classes
voiture
classe mère
utilitaire
classe dérivée
22
Les principes de la POO
Héritage
 la classe dérivée possède
 TOUTES LES PROPRIETES DE SA CLASSE
MERE
 TOUTES LES METHODES DE LA CLASSE
MERE
23
Les principes de la POO
Héritage des propriétés (exemple)
voiture
fabriquant
chauffeur
Utilitaire
Propriétés héritées
fabriquant, chauffeur
cargaison
quantité
24
Les principes de la POO
Héritage des méthodes (exemple)
voiture
démarrer
arrêter
Utilitaire
Méthodes héritées
démarrer, arrêter
charger
décharger
25
Les principes de la POO
Un programme orienté objet




modélisation du domaine à l’aide des classes
définition des classes
création des instances
messages entre les objets (appel des méthodes)
26
Les principes de la POO
 Polymorphisme permettre de redéfinir dans une classe
dérivée les méthodes dont elle hérite de sa classe mère
 une même méthode possède alors plusieurs formes
Les avantages du polymorphisme sont les suivants :
 Les fonctions ayant la même sémantique ont le même nom,
 programmation est plus souple. Si on veut ajouter une classe Rectangle… !
Il suffit d’ajouter les méthodes dessiner et effacer dans cette classe. Dans
le cas de la programmation procédurale, il aurait fallu reprendre le code et
l’enrichir.
27
Éléments de modélisation
d’un programme orienté objet
Représentation d’une classe
 Reprenons la classe Personne précédente
 encapsulation définition des méthodes accessibles à l’extérieure
de la classe = méthodes publiques
nom de la classe
 Visibilité des attributs / méthodes
−
#
+
privés
protégés
publiques
Personne
-CIN : string
+nom : string
+prenom : string
#adresse : string
#date_naissance : date
+dort() : void
+mange() : void
+travaille() : void
attributs
méthodes
28
Éléments de modélisation
d’un programme orienté objet
Relation d’héritage
 Intérêt de l’héritage :
 transfert des propriétés d’une classe mère vers les classes filles
 généralisation : factorisation de classes en regroupant des
propriétés communes
 spécialisation : ajout d’attributs et méthodes
Personne
-CIN : string
…
 Héritage public en C++ le plus utilisé
+ accessibles par tous
− accessibles de la classe elle-même uniquement
# accessibles de la classe elle-même et des classes
dérivées
+dort() : void …
Etudiant
-CNE : int
+etudie() : void
29
Éléments de modélisation
d’un programme orienté objet
Relation d’association, de composition et d’agrégation
 Association
exprime une liaison sémantique bidirectionnelle
entre deux classes
rôle
nom
Personne
Proprietaire
1
Possède
0..*
Livre
Cardinalités
 Les cardinalités expriment le nombre d’instances associées
 un livre appartient à une et une seul personne
 une personne possède aucun livre ou plusieurs
30
Éléments de modélisation
d’un programme orienté objet
Relation d’association, de composition et d’agrégation
 Agrégation/Composition : relation entre classes, indiquant que
les instances d’une classe sont les composants d’une autre
 Agrégation
exprime une relation de composition faible
 les objets agrégés ont une durée de vie indépendante de celle de l’agrégat
0..*
Email
attaché
 Composition
0..*
Fichier
exprime une relation de composition forte
 les objets agrégés ont une durée de vie dépendante de celle de l’agrégat
Vélo
1
2
Roue
31
Téléchargement