E N D
1. PROGRAMMATION ORIENTEE OBJET Conception objet
2. 2 PLAN Qualités logiciel (#3)
Qualités module (#4)
Conception orientée action/objet (#6)
Notion d’interface (#10)
Notion de classe (#13)
Notion d’objet (#18)
Notion d’héritage (#19)
Méthodes virtuelles (#22)
Qualités Design objet (#27)
Développement d’un projet OO: architecture Modèle-vue-contrôleur (#33)
La gestion des exceptions (#38)
3. 3 QUALITES LOGICIEL Correct : répond aux spécifications
Robuste : résiste aux situations difficiles
Extensible : peut être amélioré et étendu
Réutilisable : peut être utilisé par d’autres softs
4. 4 MODULE Module = partie d’un logiciel contenant une partie des fonctionnalités ou de l’implémentation
Langage adapté
Communique avec le moins de modules possibles
Montre le moins d’interfaces possible aux autres modules 1. C - modules d'un pgm de gestion de laboratoire médical :
module 1 : lecture BD
module 2 : analyse des données lues (couche métier)
module 3 : affichage des résultats (interface graphique)
2. C - lib math, traitement de chaînes de caractères
1. C - modules d'un pgm de gestion de laboratoire médical :
module 1 : lecture BD
module 2 : analyse des données lues (couche métier)
module 3 : affichage des résultats (interface graphique)
2. C - lib math, traitement de chaînes de caractères
5. 5 MODULE Interfaces entre modules clairement déclarées
Cache son implémentation 3. C++ - orienté objet : (cache son implémentation)
Exemple qui montre que le mode de pensée objets correspond en fait à notre mode de pensée quotidien :
Lorsque on vous demande de chauffer un verre de lait au MO, vous savez que vous devez appuyer sur 1 ou 2 boutons sur la face avant du MO et vous ne vous préoccupez pas du soft et du hard du MO . Vous n'avez n'ailleurs pas besoin de connaître le soft ou le hard du MO pour chauffer votre verre de lait .
3. C++ - orienté objet : (cache son implémentation)
Exemple qui montre que le mode de pensée objets correspond en fait à notre mode de pensée quotidien :
Lorsque on vous demande de chauffer un verre de lait au MO, vous savez que vous devez appuyer sur 1 ou 2 boutons sur la face avant du MO et vous ne vous préoccupez pas du soft et du hard du MO . Vous n'avez n'ailleurs pas besoin de connaître le soft ou le hard du MO pour chauffer votre verre de lait .
6. 6 CONCEPTION Approche orientée action, fonction
Approche orientée objet Exemple 1 : calcul intégrale
Exemple 2 : personnel d'une société
Orienté action :
ajoute une personne
Orienté objet :
personne :
ajouter
supprimer
Société :
"a" n personnes
directeur "est" un membre un personnel
employé "est" un membre un personnel
vendeur "est" un employé
Faire UML : societe personnes directeur
employé
vendeur
Exemple 1 : calcul intégrale
Exemple 2 : personnel d'une société
Orienté action :
ajoute une personne
Orienté objet :
personne :
ajouter
supprimer
Société :
"a" n personnes
directeur "est" un membre un personnel
employé "est" un membre un personnel
vendeur "est" un employé
Faire UML : societe personnes directeur
employé
vendeur
7. 7 APPROCHE ORIENTEE ACTION Privilégie les actions par rapport aux objets sur lesquels elles portent
Procède par décomposition des actions . Par raffinements successifs, on met en évidence des actions de plus en plus élémentaires .Dans la phase de programmation, on fait correspondre une fonction C à chacune des actions ainsi identifiées
8. 8 APPROCHE ORIENTEE OBJET Privilégie les objets par rapport aux actions
Procède par identification de toutes les classes d’objets du domaine d’application et par regroupement, dans chaque classe, des opérations qui permettent de manipuler les objets correspondants .manipuler = modifier / inspecter l’état de l’objet .
9. 9 APPROCHE ORIENTEE OBJET La liste des opérations est établie en toute généralité (indépendamment d’un usage particulier)
10. 10 INTERFACE Ensemble de méthodes offertes au monde extérieur
Doit être définie clairement et publiquement
Doit être documentée
Doit être générique
Une interface a un sens même sans implémentation
A une interface peuvent correspondre plusieurs implémentations indépendantes - apporter un enregistreur pour montrer l'interface
- plusieurs implémentations :
1. mouvement :
avion
voiture
bateau
charrette du GB
2. START :
MO
machine à lessiver
photocopieuse
- terme générique : mot qui convient à toute une catégorie
- interface générique : triangle ou carré d'un magnétoscope, enregistreur
- apporter un enregistreur pour montrer l'interface
- plusieurs implémentations :
1. mouvement :
avion
voiture
bateau
charrette du GB
2. START :
MO
machine à lessiver
photocopieuse
- terme générique : mot qui convient à toute une catégorie
- interface générique : triangle ou carré d'un magnétoscope, enregistreur
11. 11 INTERFACE : EXEMPLE La photocopieuse :
nombre de photocopies
+- d ’encre
facteur de réduction
tri
choix du format de papier
START
STOP
12. 12 INTERFACE : EXERCICES Rechercher l’interface :
d’une machine à lessiver
d’un micro-onde
d’un magnétoscope
d’une voiture
13. 13 CLASSE : concept Module = classe
Classe = définition d’un objet
Contient la ou les interfaces de l’objet
Contient les propriétés = variables membres de l’objet
Contient les méthodes d’implémentation de l’objet - en C++, class ~= struct- en C++, class ~= struct
14. 14 CLASSE : concept Extension sur une ou plusieurs classes en les spécialisant
Classe ouverte : se laisse étendre
Classe fermée : non extensible
Extension : dérivation = héritage
15. 15 EXEMPLEModélisation SL Si on modélise la gestion administrative de l'Institut Saint- Laurent, les classes d'objets les plus significatives sont:
étudiants, années d'étude (SLx), sections
enseignants
matières
locaux
cours et labo
documents administratifs: listes, bulletins, certificats, etc.. Buch :
IGn - -- groupe <-- groupe ERASMUS
a n hérite
--- étudiants
a nBuch :
IGn - -- groupe <-- groupe ERASMUS
a n hérite
--- étudiants
a n
16. 16 EXEMPLEModélisation SL Dans chaque classe d'objets, on regroupe les opérations relatives aux objets correspondants.
étudiants: créer, inscrire, transférer, diplômer, évaluer (coter), supprimer, consulter, mettre à jour, etc..
enseignants: créer, supprimer, affecter (matière, cours, labo), pensionner, etc..
locaux: créer, supprimer, occuper, libérer, etc..
documents: créer, supprimer, émettre, etc..
17. 17 CLASSE : protection Trois niveaux de protection : public/private/protected
L’interface est publique
Les méthodes d’implémentation sont privées
Les données membres sont privées
18. 18 OBJET Objet = instance d’une classe
Objet = zone mémoire contenant les données membres de l’objet
19. 19 HERITAGE : concept Création d’une classe sur base d’une classe de base
Extension de la classe / spécialisation de la classe
ré-écriture des méthodes
héritage = dérivation - Exemple : Personnel
- dérivation de carre --> rectangle
dérivation rectangle --> carre
cas 1 : redéfinir la fct de dessin
cas 2 : hériter de la fonction de dessin
- Exemple : Personnel
- dérivation de carre --> rectangle
dérivation rectangle --> carre
cas 1 : redéfinir la fct de dessin
cas 2 : hériter de la fonction de dessin
20. 20 HERITAGE : avantages Améliore l’extensibilité
Permet la réutilisation
Simplicité
Permet le polymorphisme - réutilisation : profiter de la stabilité du code débogué
- polymorphisme :
1. tourner à gauche :
voiture (volant)
pédalo (barre)
2. START :
MO
machine à lessiver- réutilisation : profiter de la stabilité du code débogué
- polymorphisme :
1. tourner à gauche :
voiture (volant)
pédalo (barre)
2. START :
MO
machine à lessiver
21. 21 HERITAGE : protection public
private
protected : peut être accédé par la classe de base et par les classes dérivées
? protected permet l’extensibilité en gardant la protection Ne pas montrer à la première séanceNe pas montrer à la première séance
22. 22 METHODE VIRTUELLE : concept Déclarée dans la classe de base
Déclarée virtuelle
Implémentée dans la classe de base (sauf virtuelle pure)
Redéfinie dans la (les) classe(s) dérivée(s)
23. 23 METHODE VIRTUELLE : concept Si redéfinition de la méthode : l’implémentation de la classe dérivée est appelée au lieu de celle de la classe de base (selon initialisation de l’objet et non déclaration) Exemple : dessin :
- d'un cercle
- d'un cercle opaque (colorié)Exemple : dessin :
- d'un cercle
- d'un cercle opaque (colorié)
24. 24 METHODE VIRTUELLE : avantages Permet le polymorphisme
Permet l’extension
Permet la ré-utilisation
Concept le plus puissant de la philosophie objet Donner les inconvénients : perte de mémoire et de temps : initialisation des pointeurs,...Donner les inconvénients : perte de mémoire et de temps : initialisation des pointeurs,...
25. 25 METHODE VIRTUELLE PURE : concept Méthode virtuelle n’ayant pas d’implémentation dans la classe de base
Une classe ayant une (des) méthode(s) virtuelle(s) pure(s) est dite abstraite
On ne peut pas créer d’objet de cette classe
Obligation de dériver et d’implémenter les méthodes virtuelles pures - pas d'objet :
Exemples :
1. mobile <-- voiture,avion,bateau,pédalo,...
Pas d'implémentations de la méthode "tourner" --> pas d'objet
2. forme géométrique : pas de dessin possible- pas d'objet :
Exemples :
1. mobile <-- voiture,avion,bateau,pédalo,...
Pas d'implémentations de la méthode "tourner" --> pas d'objet
2. forme géométrique : pas de dessin possible
26. 26 METHODE VIRTUELLE PURE : avantages Permet de définir une interface de manière purement indépendante de l’implémentation
Permet de définir des classes générales et de se servir de l’héritage pour les rendre spécifiques Exemple : forme géométrique
- classes dérivées : cercle,rectangle,carré
- propriété commune : centre (x,y)
- methode non virtuelle : translation
- méthodes virtuelles : dessin,rotationExemple : forme géométrique
- classes dérivées : cercle,rectangle,carré
- propriété commune : centre (x,y)
- methode non virtuelle : translation
- méthodes virtuelles : dessin,rotation
27. 27 DESIGN OBJET Simplicité
Indépendance
Polymorphisme
Abstraction
Protection
28. 28 DESIGN OBJET : simplicité Un bon design doit être constitué de choses simples
Chaque module doit être facilement compréhensible
La documentation doit suffire à la compréhension
Une interface doit contenir le moins de méthodes possibles
29. 29 DESIGN OBJET : indépendance Idéalement, chaque module doit être utilisé indépendamment des autres
Il est nécessaire de réduire la communication entre modules
Essentiel pour les qualités logiciel
30. 30 DESIGN OBJET : polymorphisme Une interface peut correspondre à plusieurs implémentations
Plusieurs objets ayant des comportements différents peuvent être manipulés par la même interface
La conception d’une interface doit être générique
31. 31 DESIGN OBJET : abstraction L’implémentation est cachée
Une interface s’utilise sans connaissance de son implémentation
Seule l’interface intéresse l’utilisateur d’une classe
L’implémentation peut être modifiée sans conséquence pour les utilisateurs de l’interface
32. 32 DESIGN OBJET : protection Protéger = rendre inaccessible de l’extérieur
L’implémentation doit être protégée
Les données membres doivent être protégées
Il faut toujours passer par l’interface
Tout ce qui est protégé peut changer - ce qui est protégé peut changer : exemple : changer le hard ou le soft d'une photocopieuse- ce qui est protégé peut changer : exemple : changer le hard ou le soft d'une photocopieuse
33. 33 DEVELOPPEMENT D’UN PROJET PLAN :
Différentes phases du développement
MVC
34. 34 Les différentes phases dudéveloppement d'un projet – Analyse des besoins
– Conception
– Programmation (implémentation)
– Test
– Intégration
Généralement, itérations sur ces
phases, avec un prototype de
plus en plus performant.
35. 35 Au départ Etapes à suivre au départ d’un
projet (après un premier apprentissage du métier à modéliser) :
Identifier les classes qui modéliseront le mieux le problème à résoudre
Déterminer les relations entre les diverses classes et concevoir la hiérarchie
Définir l’interface de chaque classe
Définir les scénarios d’utilisation (Use Case)
36. 36 ARCHITECTURE D’UN PROGRAMME :Modèle-vue-contrôleur – En orienté actions, on sépare les entrées
et les sorties, les traitements (la gestion du modèle), les
interfaces (et vues) et le contrôle (main). Le contrôle est
généralement séquentiel; l’utilisateur est contraint de
répondre aux messages du programme.
– En orienté objets, on distingue des modules conceptuels
(modules, classes variant peu avec l’environnement
informatique, appelés aussi classes métier) des modules
de présentation (très liés à l’environnement
informatique). Le contrôle est événementiel (l’utilisateur
commande le programme) et est souvent fortement lié au
cadre (framework) de développement (par exemple MFC,
.NET, eclipse, …).
Rôle du contrôleur : maintenir dans un état cohérent :
- les différents objets du programme
- en particulier, l’état d’un modèle et l’ensemble de ses
représentations (vues)
Procédural : données et manipulations séparées
POO: données et manipulations rassemblées, encapsulées : encapsulation des responsabilités, de l’état, du statutProcédural : données et manipulations séparées
POO: données et manipulations rassemblées, encapsulées : encapsulation des responsabilités, de l’état, du statut
37. 37 ARCHITECTURE D’UN PROGRAMME :Modèle-vue-contrôleur Le MVC est un modèle de conception (« Design pattern »)
Objectif: séparer et découpler les 3 composantes d’une application:
Modèle : structures d’informations manipulées par l’application
Vue: interface avec l’utilisateur (affichage du modèle, dialogues, …)
Contrôleur: contrôle général du programme, ordonnancement des opérations
Cf. le syllabus « Concepts et méthodes de la programmation par objets » chap.2 d’A. Clarinval
38. 38 La gestion des exceptions Programmation procédurale :Si une fonction détecte une erreur et est incapable de la neutraliser, elle cesse son exécution et envoie une valeur « exceptionnelle » à la fonction appelante. Celle-ci devra prévoir 2 séquences différentes : une traitant les cas d’erreurs et l’autre les cas valides.
39. 39 La gestion des exceptions (suite) POO :
Programme tente d’exécuter une séquence d’instructions
En cas de non validité détectée lors de l’exécution de la séquence d’instructions, la séquence émet un signal d’exception (via un objet temporaire d’exception créé). Ceci entraîne la sortie immédiate de la séquence d’instructions.
La suite du programme comporte une série d’instructions capter (type d’exception) dont chacune vérifie l’existence d’un objet d’exception d’un type particulier et introduit la séquence de traitement à exécuter en réaction à cette exception ; l’objet temporaire est automatiquement détruit.
40. 40 La gestion des exceptions (suite) POO : types de réactions aux cas d’erreurs:
Ignorer l’erreur (elle n’a pas d’impact sur la suite du programme)
Neutraliser l’erreur par des actions palliatives, après quoi l’exécution se poursuivra normalement
Transmettre le signalement de l’erreur à l’appelant hiérarchiquement supérieur.
Remarques:
Le traitement d’un signal capté neutralise automatiquement ce signal
Le traitement d’un signal peut comporter l’émission en cascade d’un nouveau signal (éventuellement du même type) à destination de l’appelant hiérarchiquement supérieur
- Si le signal n’est pas capté (et traité) par un appelant hiérarchiquement supérieur, l’exécution du programme se termine brutalement