La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Conception Objet 2012-2013 A. LOTFI.

Présentations similaires


Présentation au sujet: "Conception Objet 2012-2013 A. LOTFI."— Transcription de la présentation:

1 Conception Objet A. LOTFI

2 Paradigmes de programmation
Introduction Paradigmes de programmation Un paradigme est: un modèle théorique de pensée qui oriente la recherche et la réflexion scientifique (Larousse) une représentation du monde, une manière de voir les choses un ensemble de théories, standards et méthodes pour représenter et organiser la connaissance Un paradigme de programmation est Un outil de pensée qui oriente la façon d'analyser, de concevoir et de coder un programme Il existe aujourd’hui 4 paradigmes principaux de programmation Programmation impérative/procédurale Programmation fonctionnelle Programmation logique Programmation orientée objet

3 Programmation procédurale
Introduction Programmation procédurale La programmation procédurale (impérative) est un paradigme de programmation basé sur le concept d'appel procédural. Une procédure, aussi appelée routine, sous-routine ou fonction contient simplement une série d'étapes à réaliser. N'importe quelle procédure peut être appelée à n'importe quelle étape de l'exécution du programme, y compris à l'intérieur d'autres procédures, voire dans la procédure elle-même (récursivité). La programmation procédurale est souvent un meilleur choix qu'une simple programmation séquentielle ou programmation non-structurée. Avantages possibles : La possibilité de réutiliser le même code à différents emplacements dans le programme sans avoir à le retaper ; Une façon plus simple de suivre l'évolution du programme. La programmation procédurale permet de se passer d'instructions telles que "GOTO" et "JUMP" évitant ainsi bien souvent de se retrouver avec un programme compliqué qui part dans toutes les directions (appelé souvent « programmation spaghetti ») ; La création d'un code plus modulaire et structuré.

4 Programmation Fonctionnelle
Introduction Programmation Fonctionnelle La programmation fonctionnelle est un paradigme de programmation qui considère le calcul en tant qu'évaluation de fonctions mathématiques et rejette le changement d'état et la mutation des données. Elle souligne l'application des fonctions, contrairement au modèle de programmation impérative qui met en avant les changements d'état. Un langage fonctionnel est donc un langage de programmation dont la syntaxe et les caractéristiques encouragent la programmation fonctionnelle. Le langage fonctionnel le plus ancien est Lisp, créé en 1958 par McCarthy. Lisp a donné naissance à des variantes telles que Scheme (1975) et Common Lisp (1984) qui, comme Lisp, ne sont pas ou peu typés. Des langages fonctionnels plus récents tels ML (1973), Haskell (1987), OCaml, Erlang, Clean et Oz, CDuce (2003) ou F# sont fortement typés.

5 Programmation logique
Introduction Programmation logique La programmation logique est une forme de programmation qui définit les applications à l'aide d'un ensemble de faits élémentaires les concernant et de règles de logique leur associant des conséquences plus ou moins directes. Ces faits et ces règles sont exploités par un démonstrateur de théorème ou moteur d'inférence, en réaction à une question ou requête. Cette approche se révèle beaucoup plus souple que la définition d'une succession d'instructions que l'ordinateur exécuterait. La programmation logique est considérée comme une programmation déclarative plutôt qu’impérative, car elle s'attache davantage au quoi qu'au comment, le moteur assumant une large part des enchaînements. Elle est particulièrement adaptée aux besoins de l’intelligence artificielle, dont elle est un des principaux outils.

6 Programmation OO Introduction
La programmation orientée objet (POO), ou programmation par objet, est un paradigme de programmation informatique élaboré par Alan Kay dans les années 1970. Il consiste en la définition et l'interaction de briques logicielles appelées objets ; un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre. Un objet possède une structure interne et un comportement, et il sait communiquer avec d’autres objets. Il s'agit donc de représenter ces objets et leurs relations ; la communication entre les objets via leurs relations permet de réaliser les fonctionnalités attendues, de résoudre le ou les problèmes.

7 Programmation OO Principe Les langages orientés objets sont une nouvelle méthode de programmation qui tend à se rapprocher de notre manière naturelle d'appréhender le monde. Les L.O.O. se sont surtout posé la question "Sur quoi porte le programme ?". En effet, un programme informatique comporte toujours des traitements, mais aussi et surtout des données. Si la programmation structurée s'intéresse aux traitements puis aux données, la conception objet s'intéresse d'abord aux données, auxquelles elle associe ensuite les traitements. L'expérience a montré que les données sont ce qu'il y a de plus stable dans la vie d'un programme, il est donc intéressant d'architecturer le programme autour de ces données.

8 Programmation OO Exemple Habituellement, un programme c'est une suite d'instructions (impératives). Puisque l'ordinateur ne peut pas penser, il faut tout lui détailler. Par exemple, pour ouvrir une porte et allumer l’ampoule, il faut donner la suite d’instructions : Tout se passe très bien. Mais qu'est-ce qui se passe par exemple si on met une porte automatique ? Le programme sera incapable de trouver la poignée et d'ouvrir la porte ! Mettre la main sur la poignée de la porte Tourner la poignée Pousser la porte Mettre le doigt sur l'interrupteur Appuyer sur l'interrupteur pour allumer l'ampoule

9 Programmation OO Exemple En programmation objet, on associe aux objets des actions (aussi appelées méthodes). Par exemple, à l'objet porte on peut associer la méthode ouvrir. De même pour l'ampoule on pourrait associer une méthode allumer, éteindre, etc. Le programme devient plus simple: On a plus besoin de savoir comment la porte s'ouvre. On se contente de l'ouvrir. Pour indiquer qu'on applique la méthode (ouvrir) sur l'objet (porte), on note souvent objet.méthode (ici : porte.ouvrir). porte.ouvrir ampoule.allumer

10 Exemple Programmation OO
Bien sûr il faut détailler ce que fait la méthode ouvrir de porte et la méthode allumer de lumière. On ne va pas détailler dans le programme ce que fait la méthode ouvrir, mais on va le détailler dans l'objet lui-même. C'est normal, puisque la méthode ouvrir ne s'applique qu'à la porte, pas à la lumière: Objet : porte Déscription de la porte Méthode : porte.ouvrir: Mettre la main sur la poignée Tourner la poignée Pousser la porte

11 Exemple Programmation OO
On peut changer la porte en mettant une porte automatique. On peut aussi l'ouvrir (même si la porte elle-même ne s'ouvre pas de la même façon): Rien de va changer au niveau du programme principal (appelant). Objet : porte Déscription de la porte Méthode : porte.ouvrir: Se placer devant la porte Attendre que la porte soit complètement ouverte porte.ouvrir ampoule.allumer

12 Avantages Parmi les avantages de la programmation OO, on peut citer :
L’utilisation des objets sans connaissance de leur structure détaillée ; seule une connaissance globale de l’objet est nécessaire. La réutilisabilité : en effet, une fois créé, l’objet peut être utilisé plusieurs fois et par plusieurs programmes différents. Si des modifications sur l’objet sont nécessaires, on peut modifier nos objets sans modifier les programmes appelants.

13 Notion d’Objet Notions
Un objet est avant tout une structure de données. Autrement, il s'agit d'une entité chargée de gérer des données, de les classer, et de les stocker sous une certaine forme. En cela, rien ne distingue un objet d'une quelconque autre structure de données. La principale différence vient du fait que l'objet regroupe les données et les moyens de traitement de ces données. Un objet rassemble de fait deux éléments de la programmation procédurale : Les champs (attributs) : Les champs sont à l'objet ce que les variables sont à un programme : ce sont eux qui ont en charge les données à gérer. Tout comme n'importe quelle autre variable, un champ peut posséder un type quelconque défini au préalable : nombre, caractère, ..., ou même un type objet. Les méthodes : Les méthodes sont les éléments d'un objet qui servent d'interface entre les données et le programme. Sous ce nom obscur se cachent simplement des procédures ou fonctions destinées à traiter les données.

14 Notion d’Objet Les champs et les méthodes d'un objet sont ses membres.
Notions Notion d’Objet Les champs et les méthodes d'un objet sont ses membres. Si nous résumons, un objet est donc un type servant à stocker des données dans des champs et à les gérer au travers des méthodes.

15 Notions Notion de Classe La définition d'un objet et de ses méthodes est appelé classe. A partir d'une classe, on peut créer plusieurs objets (plusieurs portes par exemple). Chaque objet créé est appelé instance de la classe.

16 Notions Notion de Classe La plupart du temps, un programme ne pourra utiliser une classe qu’après qu’une instance en ait été créée. Par exemple, les fabricants créent des milliers de copies d’une porte à partir d’une même description. Bien que ces copies représentent la même classe, leurs attributs peuvent avoir des valeurs différentes : certaines sont automatiques alors que d’autres sont manuelles, et ainsi de suite. En d’autres termes, un programme peut créer de multiples instances d’objets à partir d’une classe (description).

17 Notions L’encapsulation L'encapsulation introduit une nouvelle manière de gérer des données. Il ne s'agit plus de déclarer des données générales puis un ensemble de procédures et fonctions destinées à les gérer de manière séparée, mais bien de réunir le tout sous le couvert d'une seule et même entité. Sous ce nouveau concept se cache également un autre élément à prendre en compte : pouvoir masquer aux yeux d'un programmeur extérieur tous les rouages d'un objet et donc l'ensemble des procédures et fonctions destinées à la gestion interne de l'objet, auxquelles le programmeur final n'aura pas à avoir accès. L'encapsulation permet donc de masquer un certain nombre de champs et méthodes tout en laissant visibles d'autres champs et méthodes.

18 Notions L’encapsulation L'encapsulation permet de garder une cohérence dans la gestion de l'objet, tout en assurant l'intégrité des données qui ne pourront être accédées qu'au travers des méthodes visibles.

19 Notions L’Héritage Grâce au concept d'héritage, un objet peut donner naissance à un ou des descendants. Ces descendants vont tous bénéficier des caractéristiques propres de leur ancêtre, à savoir ses champs et méthodes. Cependant, les descendants conservent la possibilité de posséder leurs propres champs et méthodes. Tout comme un enfant hérite des caractéristiques de ses parents et développe les siennes, un objet peut hériter des caractéristiques de son ancêtre, mais aussi en développer de nouvelles, ou bien encore se spécialiser. Si classe B hérite de la classe A. On dit aussi que la classe B est une sous-classe de A, ou une classe dérivée de la classe A, ou encore une spécialisation de la classe A. Inversement la classe A est une généralisation de la classe B. Placée plus haut dans l'arbre d'héritage, elle est généralement située à un niveau d'abstraction plus élevé.

20 Notions L’Héritage

21 Notions Le Polymorphisme En analysant la structure du mot : poly comme plusieurs et morphisme comme forme. Le polymorphisme traite de la capacité de l'objet à posséder plusieurs formes. Cette capacité dérive directement du principe d'héritage vu précédemment. En effet, un objet va hériter des champs et méthodes de ses ancêtres. Mais un objet garde toujours la capacité de pouvoir redéfinir une méthode afin de la réécrire, ou de la compléter. On voit donc apparaître ici ce concept de polymorphisme : choisir en fonction des besoins quelle méthode ancêtre appeler, et ce au cours même de l'exécution. Le comportement de l'objet devient donc modifiable à volonté.

22 Notions Le Polymorphisme Le polymorphisme, en d'autres termes, est donc la capacité du système à choisir dynamiquement la méthode qui correspond au type réel de l'objet en cours. Si l'on considère un objet Véhicule et ses descendants Bateau, Avion, Voiture possédant tous une méthode Avancer, le système appellera la fonction Avancer spécifique suivant que le véhicule est un Bateau, un Avion ou bien une Voiture.

23 Méthodes Particulières
Notions Méthodes Particulières Parmi les différentes méthodes d'un objet se distinguent deux types de méthodes bien particulières et remplissant un rôle précis dans sa gestion : les constructeurs et les destructeurs.

24 Notions Constructeur Comme leur nom l'indique, le constructeur sert à construire l'objet en mémoire. Un constructeur va donc se charger de : Mettre en place les données Associer les méthodes avec les champs Créer le diagramme d'héritage de l'objet (mettre en place toutes les liaisons entre les ancêtres et les descendants). Certaines remarques sont à prendre en considération concernant les constructeurs : Un objet peut ne pas avoir de constructeur explicite. Dans ce cas, c'est le compilateur qui se charge de créer de manière statique les liens entre champs et méthodes.

25 Notions Constructeur Un objet peut avoir plusieurs constructeurs : c'est l'utilisateur qui décidera du constructeur à appeler. Comme pour toute méthode, un constructeur peut être surchargé, et donc effectuer diverses actions en plus de la construction même de l'objet. On utilise ainsi généralement les constructeurs pour initialiser les champs de l'objet. A différentes initialisations peuvent donc correspondre différents constructeurs. S'il n'est pas nécessaire de fournir un constructeur pour un objet statique, il devient obligatoire en cas de gestion dynamique, car le diagramme d'héritage ne peut être construit de manière correcte que lors de l'exécution, et non lors de la compilation.

26 Notions Destructeur Le destructeur est le pendant du constructeur : il se charge de détruire l'instance de l'objet. La mémoire allouée pour le diagramme d'héritage est libérée. Certains compilateurs peuvent également se servir des destructeurs pour éliminer de la mémoire le code correspondant aux méthodes d'un type d'objet si plus aucune instance de cet objet ne réside en mémoire. Là encore, différentes remarques doivent être gardées à l'esprit : Tout comme pour les constructeurs, un objet peut ne pas avoir de destructeur. Une fois encore, c'est le compilateur qui se chargera de la destruction statique de l'objet. Un objet peut posséder plusieurs destructeurs. Leur rôle commun reste identique, mais peut s'y ajouter la destruction de certaines variables internes pouvant différer d'un destructeur à l'autre. La plupart du temps, à un constructeur distinct est associé un destructeur distinct. En cas d'utilisation dynamique, un destructeur s'impose pour détruire le diagramme créé par le constructeur.

27 وشكرا


Télécharger ppt "Conception Objet 2012-2013 A. LOTFI."

Présentations similaires


Annonces Google