Introduction à la Programmation Orientée ?· Et maintenant la Programmation Orientée Objet et le…

  • Published on
    13-Sep-2018

  • View
    212

  • Download
    0

Embed Size (px)

Transcript

<ul><li><p>Licence Sciences, Technologies, Sant Universit de Perpignan Via DomitiaSemestre 4 (L2) - Mention Mathmatiques, Informatique Anne universitaire 2016/2017</p><p>Programmation Oriente Objet</p><p>Introduction la Programmation Oriente Objet... et son application au C++</p><p>Guillaume Revyguillaume.revy@univ-perp.fr</p><p>Universit de Perpignan Via Domitia</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 1/41</p><p>guillaume.revy@univ-perp.fr</p></li><li><p>Prrequis et organisation du cours</p><p>Prrequis : bonne connaissance en programmation C et en algorithmique</p><p>Organisation :</p><p>I 9h de CM + 18h de TD 27h au totalI 9 sances de CM/TD de 3h (lundi de 9h30 12h30)</p><p>valuation :</p><p>I 25% projet de programmation (seul ou en binme)I 75% examen final</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 2/41</p></li><li><p>Rappels lmentaires de langage C la fonction principale main</p><p>// hello.c</p><p>// Inclusion des fichiers dentetes#include // gestion des entrees/sorties#include // utilisation des fonctions mathematiques</p><p>// Definition de la fonction principaleintmain( void ){</p><p>printf("Hello world !\n"); // Affichage de "Hello world !"return 0; // par convention , "return 0" indique quaucune</p><p>// erreur nest survenue}</p><p>$&gt; gcc -Wall -o hello hello.c</p><p>$&gt; ./helloHello world !</p><p>Remarques :</p><p>I la fonction main est le point dentre du programme elle est indispensableI les instructions sont excutes dans lordre dapparition dans le programme</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 3/41</p></li><li><p>Rappels lmentaires de langage C dclaration dune variable</p><p>// rappel -variable.c</p><p>#include </p><p>intmain( void ){</p><p>int x1; // Declaration de lentier x1int x2 = 18; // Declaration et initialisation de lentier x2x1 = 17; // Affectation de 17 a lentier x</p><p>printf("Ma valeur entiere x1 vaut : %d.\n",x1);printf("Ma valeur entiere x2 vaut : %d.\n",x2);</p><p>return 0;}</p><p>$&gt; gcc -Wall -o variables variables.c</p><p>$&gt; ./rappel -variableMa valeur entiere x1 vaut : 17.Ma valeur entiere x2 vaut : 18.</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 4/41</p></li><li><p>Rappels lmentaires de langage C fonction et passage de paramtres</p><p>// fonctions.c</p><p>#include </p><p>intaddition_v1(int a, int b) // c = a + b{ int c; c = a + b; return c; }</p><p>voidaddition_v2(int a, int b, int c) // c = a + b{ c = a + b; }</p><p>voidaddition_v3(int a, int b, int *c) // c = a + b{ *c = a + b; }</p><p>intmain( void ){</p><p>int x1 = 17, x2 = 18;int c_v1 = addition_v1(x1,x2); // x1 et x2 sont passes par valeursint c_v2 = 0; addition_v2(x1,x2,c_v2); // c_v2 est passe par valeurint c_v3; addition_v3(x1,x2,&amp;c_v3); // c_v3 est passe par adresse</p><p>printf("Finalement c_v1 = %d, c_v2 = %d et c_v3 = %d.\n",c_v1 ,c_v2 ,c_v3);</p><p>return 0;}</p><p>$&gt; gcc -Wall -o fonctions fonctions.c</p><p>$&gt; ./fonctionsFinalement c_v1 = 35, c_v2 = 0 et c_v3 = 35.</p><p>Remarque :I une variable passe par valeur, nest pas modifie lextrieure de la fonction utilisation du passage par adresse (&amp;c_v3)</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 5/41</p></li><li><p>Rappels lmentaires de langage C fonction et passage de paramtres</p><p>// fonctions.c</p><p>// ...intmain( void ){</p><p>int x1 = 17, x2 = 18;int c_v1 = addition_v1(x1,x2); // x1 et x2 sont passes par valeursint c_v2 = 0; addition_v2(x1,x2,c_v2); // c_v2 est passe par valeurint c_v3; addition_v3(x1,x2,&amp;c_v3); // c_v3 est passe par adresse</p><p>printf("Finalement c_v1 = %d, c_v2 = %d et c_v3 = %d.\n",c_v1 ,c_v2 ,c_v3);</p><p>return 0;}</p><p>$&gt; gcc -Wall -o fonctions fonctions.c</p><p>$&gt; ./fonctionsFinalement c_v1 = 35, c_v2 = 0 et c_v3 = 35.</p><p>Remarque :</p><p>I une variable passe par valeur, nest pas modifie lextrieure de la fonction utilisation du passage par adresse (&amp;c_v3)</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 5/41</p></li><li><p>Rappels lmentaires de langage C dfinition et utilisation de structures</p><p>// structures.c</p><p>#include </p><p>struct node{</p><p>int key;struct node* f_g;struct node* f_r;</p><p>};typedef struct node node_t;</p><p>intmain( void ){</p><p>node_t n1; // ou : struct node n1node_t* n2 = (node_t*)malloc(sizeof(node_t)); // struct node* n2</p><p>// Utilisation: n1.f_g et n1.f_r// n2-&gt;f_g et n2-&gt;f_r</p><p>free(n2); // Liberation de la memoire allouee par malloc</p><p>return 0;}</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 6/41</p></li><li><p>Et maintenant la Programmation Oriente Objet et le C++</p><p>Pour apprendre le langage C++, le point essentiel consiste se concentrer sur lesconcepts et viter de se perdre dans les dtails techniques.B. Stroustrup, Le langage C++ - Edition spciale - 1.1.2 (2000)</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 7/41</p></li><li><p>Plan du cours</p><p>1. Pourquoi la programmation oriente objet?</p><p>2. Principes fondamentaux de la programmation oriente objet</p><p>3. lments de modlisation dun programme orient objet</p><p>4. Quelques lments importants du C++</p><p>5. Premier exemple de programme C++</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 8/41</p></li><li><p>Pourquoi la programmation oriente objet?</p><p>Plan du cours</p><p>1. Pourquoi la programmation oriente objet?</p><p>2. Principes fondamentaux de la programmation oriente objet</p><p>3. lments de modlisation dun programme orient objet</p><p>4. Quelques lments importants du C++</p><p>5. Premier exemple de programme C++</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 9/41</p></li><li><p>Pourquoi la programmation oriente objet?</p><p>Quest ce que la programmation oriente objet?</p><p>Programmation Oriente Objet (POO) : paradigme de programmationinformatique</p><p>I labor par Alan Kay, dans les annes 70I dfinition et interactions de briques logicielles objets</p><p>Un objet = un concept, une ide ou une entit du monde physique</p><p>I par exemple : une voiture, un tudiant, ...I possde une structure interne et un comportement</p><p>Quelques langages objets : C++, Java, Ada, PHP, Python, ...</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 10/41</p></li><li><p>Pourquoi la programmation oriente objet?</p><p>Pourquoi la programmation oriente objet?</p><p>Depuis plusieurs annes :</p><p>I le matriel de moins en moins cher, et de plus en plus puissantI le dveloppement dapplications de plus en plus performantes et complexes</p><p>Le cot des dpenses informatiques principalement cot des logiciels</p><p>prog</p><p>ramm</p><p>ation</p><p>proc</p><p>edur</p><p>ale</p><p>cout</p><p>dela</p><p>pplic</p><p>atio</p><p>n</p><p>taille de lapplication</p><p>I cot du logiciel de plus en plus levI en programmation procdurale : cot du logiciel croit de</p><p>manire exponentielle avec la complexit de lapplication</p><p>Objectifs de la programmation oriente objet :</p><p>I diminuer le cot du logicielI augmenter sa dure de vie, sa rutilisabilit et sa facilit de maintenance</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 11/41</p></li><li><p>Pourquoi la programmation oriente objet?</p><p>Pourquoi la programmation oriente objet?</p><p>Depuis plusieurs annes :</p><p>I le matriel de moins en moins cher, et de plus en plus puissantI le dveloppement dapplications de plus en plus performantes et complexes</p><p>Le cot des dpenses informatiques principalement cot des logiciels</p><p>prog</p><p>ramm</p><p>ation</p><p>proc</p><p>edur</p><p>ale</p><p>cout</p><p>dela</p><p>pplic</p><p>atio</p><p>n</p><p>taille de lapplication</p><p>I cot du logiciel de plus en plus levI en programmation procdurale : cot du logiciel croit de</p><p>manire exponentielle avec la complexit de lapplication</p><p>Objectifs de la programmation oriente objet :</p><p>I diminuer le cot du logicielI augmenter sa dure de vie, sa rutilisabilit et sa facilit de maintenance</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 11/41</p></li><li><p>Pourquoi la programmation oriente objet?</p><p>Pourquoi la programmation oriente objet?</p><p>Programmation oriente objet : modlisation directe dobjets du monde rels</p><p>I de trs nombreux reprsentants dun tout petit nombre de concepts diffrentsI exploiter cette redondance petites entits informatiques</p><p>Rduction de limpact dune modification/extension dune partie dun programme</p><p>I confinement dans de petites units qui ont peu de contact avec lextrieure = objets</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 12/41</p></li><li><p>Pourquoi la programmation oriente objet?</p><p>Pourquoi la programmation oriente objet?</p><p>Programmation oriente objet : modlisation directe dobjets du monde rels</p><p>I de trs nombreux reprsentants dun tout petit nombre de concepts diffrentsI exploiter cette redondance petites entits informatiques</p><p>Rduction de limpact dune modification/extension dune partie dun programme</p><p>I confinement dans de petites units qui ont peu de contact avec lextrieure = objets</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 12/41</p></li><li><p>Pourquoi la programmation oriente objet?</p><p>Pourquoi la programmation oriente objet?</p><p>Finalement, un programme objet = production dun ensemble dobjetsI sparation de linterface et de limplantation de ce que fait lobjetI accs un objet (et ces donnes) se fait uniquement via linterface de haut (fournit</p><p>aux clients, par exemple)</p><p>progra</p><p>mmatio</p><p>n orien</p><p>teeobj</p><p>et</p><p>cout</p><p>dela</p><p>pplic</p><p>atio</p><p>n</p><p>taille de lapplication</p><p>Inversion de la courbe dvolution du cot du logiciel</p><p>I le dveloppement dune petite application gros effortI par contre, son extension effort faible</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 13/41</p></li><li><p>Principes fondamentaux de la programmation oriente objet</p><p>Plan du cours</p><p>1. Pourquoi la programmation oriente objet?</p><p>2. Principes fondamentaux de la programmation oriente objet</p><p>3. lments de modlisation dun programme orient objet</p><p>4. Quelques lments importants du C++</p><p>5. Premier exemple de programme C++</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 14/41</p></li><li><p>Principes fondamentaux de la programmation oriente objet</p><p>La notion dobjet</p><p>Un objet = un concept, une ide ou une entit du monde physique</p><p>I voiture, personne, tudiant, animal, fentre graphique, forme gomtrique, ...</p><p>Dans un programme, un objet sapparente une variable</p><p>Un objet est caractris par trois notions</p><p>I les attributs : donnes de lobjet / variable quil contient et reprsentant son tatI les mthodes (fonctions membres) : caractrise son comportement, lensemble des</p><p>actions que lobjet peut ralsier, accs/modification des donnesI une identit, qui permet de le distinguer de manire unique des autres objets,</p><p>indpendamment de son tat</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 15/41</p></li><li><p>Principes fondamentaux de la programmation oriente objet</p><p>La notion de classe</p><p>Une classe = la structure dun objet</p><p>I elle dfinit son typeI dclaration de lensemble des entits qui composeront un objet</p><p>Un objet est donc issu dune classe</p><p>I on dit quun objet est une instance (ou une occurrence) dune classeI on parle dinstanciation de classe</p><p>Une classe est compose de deux parties :</p><p>I les attributs (donnes membres)I les mthodes (fonctions membres)</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 16/41</p></li><li><p>Principes fondamentaux de la programmation oriente objet</p><p>La notion de classe</p><p>Une classe = la structure dun objet</p><p>I elle dfinit son typeI dclaration de lensemble des entits qui composeront un objet</p><p>Un objet est donc issu dune classe</p><p>I on dit quun objet est une instance (ou une occurrence) dune classeI on parle dinstanciation de classe</p><p>Une classe est compose de deux parties :</p><p>I les attributs (donnes membres)I les mthodes (fonctions membres)</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 16/41</p></li><li><p>Principes fondamentaux de la programmation oriente objet</p><p>Exemple de classe et dobjet</p><p>Dfinition dune classe Personne(on verra plus tard le formalisme utilis ici)</p><p>I dfinition dun type PersonneI regroupe les proprits communues aux</p><p>personnes : caractristiques (attributs) etcomportement (mthodes)</p><p>Instanciation dun objet de type Personne</p><p>I affectation dune valeur chaque attributI possibilit dagir, via les mthodes</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 17/41</p></li><li><p>Principes fondamentaux de la programmation oriente objet</p><p>Exemple de classe et dobjet</p><p>Dfinition dune classe Personne(on verra plus tard le formalisme utilis ici)</p><p>I dfinition dun type PersonneI regroupe les proprits communues aux</p><p>personnes : caractristiques (attributs) etcomportement (mthodes)</p><p>Instanciation dun objet de type Personne</p><p>I affectation dune valeur chaque attributI possibilit dagir, via les mthodes</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 17/41</p></li><li><p>Principes fondamentaux de la programmation oriente objet</p><p>Les trois grands principes de la POO</p><p>Encapsulation rassembler les donnes et mthodes au sein dune structure</p><p>I en cachant limplantation de lobjet ( lutilisateur, au moins)I protection de laccs aux donnes mcanisme daccs / modificationI augmentation la scurit dune applicationI facilit de maintenance de lapplication</p><p>Hritage permettre la cration dune classe partir dune classe existante</p><p>I la classe drive (fille) contient sous certaines conditions les attributs et lesmthodes de la classe mre (super-classe)</p><p>I permet ainsi la rutilisation de codeI plusieurs types dhritage : public, protg, ou priv</p><p>Polymorphisme permettre de redfinir dans une classe drive les mthodesdont elle hrite de sa classe mre</p><p>I une mme mthode possde alors plusieurs formes</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 18/41</p></li><li><p>Principes fondamentaux de la programmation oriente objet</p><p>Les trois grands principes de la POO</p><p>Encapsulation rassembler les donnes et mthodes au sein dune structure</p><p>I en cachant limplantation de lobjet ( lutilisateur, au moins)I protection de laccs aux donnes mcanisme daccs / modificationI augmentation la scurit dune applicationI facilit de maintenance de lapplication</p><p>Hritage permettre la cration dune classe partir dune classe existante</p><p>I la classe drive (fille) contient sous certaines conditions les attributs et lesmthodes de la classe mre (super-classe)</p><p>I permet ainsi la rutilisation de codeI plusieurs types dhritage : public, protg, ou priv</p><p>Polymorphisme permettre de redfinir dans une classe drive les mthodesdont elle hrite de sa classe mre</p><p>I une mme mthode possde alors plusieurs formes</p><p>Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son a...</p></li></ul>

Recommended

View more >