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

Embed Size (px)

Text of Introduction à la Programmation Orientée ?· Et maintenant la Programmation Orientée Objet et...

  • Licence Sciences, Technologies, Sant Universit de Perpignan Via DomitiaSemestre 4 (L2) - Mention Mathmatiques, Informatique Anne universitaire 2016/2017

    Programmation Oriente Objet

    Introduction la Programmation Oriente Objet... et son application au C++

    Guillaume Revyguillaume.revy@univ-perp.fr

    Universit de Perpignan Via Domitia

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 1/41

    guillaume.revy@univ-perp.fr

  • Prrequis et organisation du cours

    Prrequis : bonne connaissance en programmation C et en algorithmique

    Organisation :

    I 9h de CM + 18h de TD 27h au totalI 9 sances de CM/TD de 3h (lundi de 9h30 12h30)

    valuation :

    I 25% projet de programmation (seul ou en binme)I 75% examen final

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 2/41

  • Rappels lmentaires de langage C la fonction principale main

    // hello.c

    // Inclusion des fichiers dentetes#include // gestion des entrees/sorties#include // utilisation des fonctions mathematiques

    // Definition de la fonction principaleintmain( void ){

    printf("Hello world !\n"); // Affichage de "Hello world !"return 0; // par convention , "return 0" indique quaucune

    // erreur nest survenue}

    $> gcc -Wall -o hello hello.c

    $> ./helloHello world !

    Remarques :

    I la fonction main est le point dentre du programme elle est indispensableI les instructions sont excutes dans lordre dapparition dans le programme

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 3/41

  • Rappels lmentaires de langage C dclaration dune variable

    // rappel -variable.c

    #include

    intmain( void ){

    int x1; // Declaration de lentier x1int x2 = 18; // Declaration et initialisation de lentier x2x1 = 17; // Affectation de 17 a lentier x

    printf("Ma valeur entiere x1 vaut : %d.\n",x1);printf("Ma valeur entiere x2 vaut : %d.\n",x2);

    return 0;}

    $> gcc -Wall -o variables variables.c

    $> ./rappel -variableMa valeur entiere x1 vaut : 17.Ma valeur entiere x2 vaut : 18.

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 4/41

  • Rappels lmentaires de langage C fonction et passage de paramtres

    // fonctions.c

    #include

    intaddition_v1(int a, int b) // c = a + b{ int c; c = a + b; return c; }

    voidaddition_v2(int a, int b, int c) // c = a + b{ c = a + b; }

    voidaddition_v3(int a, int b, int *c) // c = a + b{ *c = a + b; }

    intmain( void ){

    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,&c_v3); // c_v3 est passe par adresse

    printf("Finalement c_v1 = %d, c_v2 = %d et c_v3 = %d.\n",c_v1 ,c_v2 ,c_v3);

    return 0;}

    $> gcc -Wall -o fonctions fonctions.c

    $> ./fonctionsFinalement c_v1 = 35, c_v2 = 0 et c_v3 = 35.

    Remarque :I une variable passe par valeur, nest pas modifie lextrieure de la fonction utilisation du passage par adresse (&c_v3)

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 5/41

  • Rappels lmentaires de langage C fonction et passage de paramtres

    // fonctions.c

    // ...intmain( void ){

    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,&c_v3); // c_v3 est passe par adresse

    printf("Finalement c_v1 = %d, c_v2 = %d et c_v3 = %d.\n",c_v1 ,c_v2 ,c_v3);

    return 0;}

    $> gcc -Wall -o fonctions fonctions.c

    $> ./fonctionsFinalement c_v1 = 35, c_v2 = 0 et c_v3 = 35.

    Remarque :

    I une variable passe par valeur, nest pas modifie lextrieure de la fonction utilisation du passage par adresse (&c_v3)

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 5/41

  • Rappels lmentaires de langage C dfinition et utilisation de structures

    // structures.c

    #include

    struct node{

    int key;struct node* f_g;struct node* f_r;

    };typedef struct node node_t;

    intmain( void ){

    node_t n1; // ou : struct node n1node_t* n2 = (node_t*)malloc(sizeof(node_t)); // struct node* n2

    // Utilisation: n1.f_g et n1.f_r// n2->f_g et n2->f_r

    free(n2); // Liberation de la memoire allouee par malloc

    return 0;}

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 6/41

  • Et maintenant la Programmation Oriente Objet et le C++

    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)

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 7/41

  • Plan du cours

    1. Pourquoi la programmation oriente objet?

    2. Principes fondamentaux de la programmation oriente objet

    3. lments de modlisation dun programme orient objet

    4. Quelques lments importants du C++

    5. Premier exemple de programme C++

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 8/41

  • Pourquoi la programmation oriente objet?

    Plan du cours

    1. Pourquoi la programmation oriente objet?

    2. Principes fondamentaux de la programmation oriente objet

    3. lments de modlisation dun programme orient objet

    4. Quelques lments importants du C++

    5. Premier exemple de programme C++

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 9/41

  • Pourquoi la programmation oriente objet?

    Quest ce que la programmation oriente objet?

    Programmation Oriente Objet (POO) : paradigme de programmationinformatique

    I labor par Alan Kay, dans les annes 70I dfinition et interactions de briques logicielles objets

    Un objet = un concept, une ide ou une entit du monde physique

    I par exemple : une voiture, un tudiant, ...I possde une structure interne et un comportement

    Quelques langages objets : C++, Java, Ada, PHP, Python, ...

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 10/41

  • Pourquoi la programmation oriente objet?

    Pourquoi la programmation oriente objet?

    Depuis plusieurs annes :

    I le matriel de moins en moins cher, et de plus en plus puissantI le dveloppement dapplications de plus en plus performantes et complexes

    Le cot des dpenses informatiques principalement cot des logiciels

    prog

    ramm

    ation

    proc

    edur

    ale

    cout

    dela

    pplic

    atio

    n

    taille de lapplication

    I cot du logiciel de plus en plus levI en programmation procdurale : cot du logiciel croit de

    manire exponentielle avec la complexit de lapplication

    Objectifs de la programmation oriente objet :

    I diminuer le cot du logicielI augmenter sa dure de vie, sa rutilisabilit et sa facilit de maintenance

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 11/41

  • Pourquoi la programmation oriente objet?

    Pourquoi la programmation oriente objet?

    Depuis plusieurs annes :

    I le matriel de moins en moins cher, et de plus en plus puissantI le dveloppement dapplications de plus en plus performantes et complexes

    Le cot des dpenses informatiques principalement cot des logiciels

    prog

    ramm

    ation

    proc

    edur

    ale

    cout

    dela

    pplic

    atio

    n

    taille de lapplication

    I cot du logiciel de plus en plus levI en programmation procdurale : cot du logiciel croit de

    manire exponentielle avec la complexit de lapplication

    Objectifs de la programmation oriente objet :

    I diminuer le cot du logicielI augmenter sa dure de vie, sa rutilisabilit et sa facilit de maintenance

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 11/41

  • Pourquoi la programmation oriente objet?

    Pourquoi la programmation oriente objet?

    Programmation oriente objet : modlisation directe dobjets du monde rels

    I de trs nombreux reprsentants dun tout petit nombre de concepts diffrentsI exploiter cette redondance petites entits informatiques

    Rduction de limpact dune modification/extension dune partie dun programme

    I confinement dans de petites units qui ont peu de contact avec lextrieure = objets

    Guillaume Revy (Univ. de Perpignan Via Domitia) Introduction la Programmation Oriente Objet ... et son application au C++ 12/41

  • Pourquoi la programmation oriente objet?

    Pourquoi la programmation oriente objet?

    Programmation oriente objet : modlisation directe dobjets du monde rels

    I de trs nombreux reprsentants dun tout petit nombre de concepts diffrentsI exploiter cette redondance petites entits informatiques

    Rduction de limpact dune modification/extension dune partie dun programme

    I confinement dans de petites units qui o