Introduction à la Programmation Orientée ?· Programmation Orientée Objet Marc DANIEL ... • De…

Embed Size (px)

Text of Introduction à la Programmation Orientée ?· Programmation Orientée Objet Marc DANIEL ... •...

  • 1

    Polytech Marseille , Prog. o. o. 1

    Introduction la Programmation Oriente

    Objet Marc DANIEL

    Ecole Polytech Marseille, Campus de Luminy, case 925, 13288 Marseille cedex 9

    Marc.Daniel@univ-amu.fr

    Mars 2018

    Polytech Marseille , Prog. o. o. 2

    Plan

    Les concepts de la programmation oriente objet 4 un peu dhistoire 5 de la ncessit de langages adapts 7 vers les langages objets 11 les principes gnraux 13 la notion de classe 16 quelques langages 18

    De C C++ 19

    Les concepts des langages de classes ; implmentation en C++ 55 les classes et les objets 56 les oprateurs 90 lhritage 104

    La gnricit et les modles 164

    La gestion des exceptions 175

  • 2

    Polytech Marseille , Prog. o. o. 3

    Plan (suite)

    Quelques complments 197 La norme C++ 198 Les espaces de noms 199 Amiti, Hritage et Gnricit 205

    Les composants prdfinis 207 Les flux dE/S 210 La classe String 216 Les conteneurs 221 Les itrateurs 230 Les algorithmes 234 Les traitements numriques 235

    Au sujet de C++11 norme 2011 236 Conclusion sur C++ 251 Glossaire partiel 255 Bibliographie succincte 258 annexes 259

    Polytech Marseille , Prog. o. o. 4

    Les concepts de la programmation oriente objet

  • 3

    Polytech Marseille , Prog. o. o. 5

    Introduction / histoire

    La prhistoire : les annes 60 et les dbuts de la programmation et des langages

    Les annes 70-80 : La programmation structure analyse descendante

    dcomposition suivant les traitements les logiciels sont organiss autour des actions qui traitent les objets

    sparation traitement et donnes interdpendance des donnes lintrieur des traitements difficile maintenir

    Programme = Algorithmes + donnes

    Polytech Marseille , Prog. o. o. 6

    Introduction / histoire

    La programmation et la conception oriente objet Ou un besoin de qualit

    depuis 1975 essor dans les annes 85 (C++, Eiffel) la conscration partir des annes 90

    La conception objet repose sur une ide apparemment lmentaire. Les systmes informatiques ralisent certaines

    actions sur certains objets. Pour obtenir des systmes souples et rutilisables, il faut mieux structurer le logiciel

    autour des objets que des actions

    Bertrand Meyer (concepteur dEiffel)

  • 4

    Polytech Marseille , Prog. o. o. 7

    Objectifs principaux (Gnie Logiciel) :

    rutiliser ce qui a dj t crit directement (le code, les modles) adaptation (lhritage)

    augmenter la qualit

    rapidit de la conception facilit de maintenance

    ergonomie dutilisation fonctionnement simple et efficace

    Intro. / langages adapts

    dveloppement

    utilisation

    Polytech Marseille , Prog. o. o. 8

    Le logiciel doit tre : valide robuste Modifiable (extensible) rutilisable Portable ergonomique efficace

    La maintenance doit tre facile volution du logiciel (an 2000, Euro, . !!!), vos futurs stages !! correction derreurs

    Le logiciel doit ncessairement tre modulaire et les modules doivent tre indpendants

    Intro. / langages adapts

  • 5

    Polytech Marseille , Prog. o. o. 9

    Dans une application, les cots les plus importants proviennent :

    De la programmation De la maintenance

    Modification des spcifications par le client Non respect des spcifications Tests mal ou pas raliss Bugs invitables Adaptation de nouveaux environnements

    Pour la rapidit tude de la complexit Loi de Moore (1965)

    Intro. / langages adapts

    Polytech Marseille , Prog. o. o. 10

    Critres de modularit : Dcomposition modulaire

    la mthode permet de dcomposer un problme en sous-problmes dont les solutions peuvent tre recherches sparment

    Composabilit modulaire la mthode fournit des lments (modules) qui peuvent tre combins pour

    traiter de nouveaux problmes

    Comprhensibilit modulaire la mthode produit des modules comprhensibles isolment

    Continuit modulaire une petite modification de la spcification namne des modifications que

    sur un ou quelques modules. Il ne doit pas y avoir dimpact sur larchitecture du systme

    Protection modulaire pas de propagation de leffet dune condition anormale

    Critres proposs par Bertrand Meyer (voir bibliographie)

    Intro. / langages adapts

  • 6

    Polytech Marseille , Prog. o. o. 11

    Une socit de modules respectant les critres de modularit

    module : unit syntaxique du langage

    un module doit communiquer avec peu de modules

    les changes entre modules doivent tre le plus rduits possibles

    les changes entre les modules sont clairement explicits dans la dfinition des modules

    toute information concernant un module est prive, sauf si elle est explicitement dclare publique (masquage de linformation)

    Intro. / vers les objets

    Polytech Marseille , Prog. o. o. 12

    les modules que lon appellera objets

    parlent peu

    leurs conversations tiennent en quelques mots

    leurs changes sont publics, codifis, donc haute voix

    la plupart des informations et des traitements sont privs

    Intro. / vers les objets

  • 7

    Polytech Marseille , Prog. o. o. 13

    premire vision des objets (modules)

    dcomposition en modules sur la base de leurs structures de donnes

    un module est dcrit comme une implmentation de types abstraits de donnes et des traitements associs

    tout type est un module et vise versa y compris les types prdfinis (int, float, ) Une structure au sens du C est un module sans traitement : ce nest

    pas la logique de lorient objet

    chaque module a une interface qui dfinit comment il dialogue avec les autres Ce qui est public Ce qui est priv

    Intro. / principes gnraux

    Polytech Marseille , Prog. o. o. 14

    Programmation oriente objet

    On sintresse aux objets avant de sintresser aux traitements le programme de plus haut niveau sera tudi le plus tard possible

    La p.o.o relve de la cration dobjets et de lexcution denvois de messages entre les objets

    Quels sont les objets ? (il faut dfinir les bons objets) Quels traitement doivent-ils subir ? Quels liens ont les objets entre eux ?

    Plusieurs points de vue possibles : Le plus important est lutilisation de classes ou langages de classes

    Intro. / principes gnraux

  • 8

    Polytech Marseille , Prog. o. o. 15

    La classe : un moule

    une classe correspond une structure de donnes abstraites

    partie structurelle compose de champs (appels attributs ou membres) des traitements effectuer sur ces structures

    (appels mthodes ou fonctions membres) deux mthodes importantes : crateur et destructeur

    services disponibles sur la structure (partie oprationnelle) les proprits de ces services

    une interface (clairement identifie) qui dfinit partie publique (ce que voit le client) les services accessibles auxquels on peut faire appel les variables visibles de lextrieur (en nombre trs rduit)

    La faon dont les traitements sont raliss ne regardent pas le monde extrieur

    on peut modifier les attributs et les mthodes sans modifier linterface

    Intro. / la notion de classe

    Polytech Marseille , Prog. o. o. 16

    Les classes sont relies entre elles par des relations dhritage on rutilise on spcialise

    diffrentier les traitements prciser les attributs

    Les objets sont dfinis partir des classes par moulage instanciation par moulage la classe sert de modle, de moule

    On ne communique avec lobjet quen invoquant une des mthodes de son interface

    On a une encapsulation des donnes et des traitements qui permet labstraction des donnes

    (voir glossaire)

    Intro. / la notion de classe

  • 9

    Polytech Marseille , Prog. o. o. 17

    Une classe trs incomplte

    class Triangle { Point _p1, _p2, _p3 ; // donnes prives public : ... float aire () ; float perimetre (...) ; } ;

    En dehors de la classe, on peut calculer laire, le primtre, mais pas faire rfrence aux Points _p1, _p2 ou _p3. Si ncessaire : fournir ce quil faut dans linterface (accesseur get_p1, modifieur set_p1). Triangle Mon_triangle ;

    float area ;

    area = Mon_triangle.aire() ;

    Une classe Triangle_rectangle pourrait hriter de la classe triangle

    Intro. / la notion de classe

    Polytech Marseille , Prog. o. o. 18

    Intro. / langages objets

    Simula 1966, compil

    Smalltalk annes 72-80, interprt --> adapt au prototypage, aussi un systme dexploitation

    C++ annes 85, norme C++ (1998)

    Eiffel 1989 (un modle de langage O.O. rest au stade universitaire)

    Java annes 95, interprt --> adapt au prototypage

    Ada 95, Lisp, CLOS (Common Lisp Object System) C# Python PHP 5

  • 10

    Polytech Marseille , Prog. o. o. 19

    De C C++

    Polytech Marseille , Prog. o. o. 20

    De C C++

    C++ est une amlioration compatible de C qui permet

    labstraction de donnes, la programmation objet la gnricit, la gestion des exceptions ...

    beaucoup plus rigoureux que C fortement typ langage de rfrence normalis peut tre aussi rapide que C (pas de mcanisme sous-jacent complexe)

  • 11

    Polytech Marseille , Prog. o. o.