1 / 39

PROGRAMMATION ORIENTEE OBJET

2. PLAN. Qualit?s logiciel (

milly
Download Presentation

PROGRAMMATION ORIENTEE OBJET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    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 EXEMPLE Modé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 EXEMPLE Modé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 du dé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

More Related