---
# System prepended metadata

title: Programmation orienté objet (langage Support c++)

---

# Programmation orienté objet (langage Support c++)

_Lien :_ https://defelice.up8.site/poo.html


**Encapsulation**
- Interface / Implantation de la classe
- Rassembler des fonctions et des données qui interagissent de façon cohérente à l'interieur d'une classe

**Héritage**
- Réalisation du code d'une classe existante pour fabriquer une nouvelle classe

**Polymorphisme**

```
   Vehicule         "->" = hérite
->Voiture ->Moto 
 ->Poids lourd
```

__Exemple :__
    Une fonction qui traite des objets de la classe vehicule peut traiter tous les objet qui "hérite" de la classe véhicule : les objets voiture, poids lourd, ...


Aussi **C++** on a :
- Les exceptions 
- Les templates : patron de classe
- Espace de noms

Du **C** au **C++** : 
```

| C                | C++             | 
| ---------------- | --------------- |
| Text             | Text            |
| gcc              | g++             |
| #include<stdio.h>| #include<cstdio>|
| .c               | .cpp            |
| .h               | .hpp            |
```
`-std = c++17` Ici std équivaut à standard

Pour utiliser une bibliothèque standard du langage C, il faut rajouter la lettre 'c' devant.
Exemple : stdio.h => cstdio
extension en c++:
    .cpp
    .hpp
typedef struct m{...}M;
struct M {....};
    


```c=
#include<cstdio>
struct Frac
{
    int num;
    int den;
    int pgcd;
    void afficher(void)
    {
        printf("%d/%d\n",num,den);
    }
    Frac produit(Frac g)
    {
        Frac retour;
        retour.num=num*g.num;
        retour.den=den*g.den;
        return retour;
    }
};

int main(void){
    Frac f1;
    f1.num = 3;
    f1.den = 4;
    f1.afficher();
    /*Frac f2;
    f2.num = 2;
    f2.den = 6;
    f2.afficher();
    Frac fproduit=f1*/
}


```
