---
# System prepended metadata

title: Cour 2 -- Language Orienté Objet avancé (C++)
tags: [M1 S1, cpp, cour]

---

# Cour 2 -- Language Orienté Objet avancé (C++)

###### tags `cour` `M1 S1` `cpp`
[Somaire](/V1WXmN9oTdauw8pTXPhqrQ)\
[Precedent](Mwwr080yRPatA0yACc37dQ)
> [time= 21 sept 2020]

[TOC]

## surcharge de fonction
:::success
**signature**: identificateur + liste des types des args
:::
:::success
**prototype**: signature + type de retour.
:::

## porté
```cpp=
int v;
int foo(int v)
{
    v = 3; //local (parametre)
    ::v = 3; // global
    return 12;
}
```

```cpp=
namespace math
{
    float pi = 3.14
}
namespace chimie
{
    char *e = “C5H9NO4“;
}

using namespace chimie;
int main()
{
    float pi_sur_2 = pi / 2;
    char* acideGlutaminique = e;
}
```

## paradigme objet
On pense du code souvent avec la *méthode foctionnel*(différent de la prog fonctionnel) cad la programation structuré:
- calquée sur le modèle des machines
    - des données
    - des fonctions

Ce qui donne des languages comme *C, Pascal, Assembleur*

La méthode **objet**:
- fonctionne par analogie avec le modèle du problème
- mettre en correspondance l'espace des problèmes et l'espace des solutions

## UML
![](https://i.imgur.com/fvYg6lR.png)

### généralisation / spécialisation
UML:
![](https://i.imgur.com/ALlibBh.png)
La fleche blanche représente en généralisation.
Elle va de l'objet spécifique vers la g'énéralisation

### Agrégation / Compositon
#### Agrégation
- l’agrégation est une relation de nature asymétrique reliant des composants(élément) à un composé(ensemble)
- la vie des éléments est **indépendante** de celle de l’agrégat
- un élément peut appartenir à **plusieurs** agrégats
- elle est repésenter en UML par une fleche avec un **losange blanc** allant du composé vers le composant (avec au bout l'arrité)

++exemple++: 
un e-mail peut agréger des documents joints

![](https://i.imgur.com/l9zDUZx.png)

#### Composition
- est une agrégation forte (agrégat de valeurs)
- une destruction du composé **entraîne la destruction** des composants
- un composant ne peut appartenir qu’à **un seul** composé
- elle est repésenter en UML par une fleche avec un **losange noir** allant du composé vers le composant (avec au bout l'arrité)
![](https://i.imgur.com/41XLQlP.png)

++exemple++:
les pièces d’une maison, l’UFR d’Informatique de Paris Diderot

## association
Il s’agit d’un simple lien établissant l’existence d’une relation sans subordination conceptuelle.\
Elle est représenté en UML par une bouble fleche.

++exemple++: 
une personne est le frère d’une autre, un individu est le client d’un magasin

![](https://i.imgur.com/GDZ2u2W.png)

### diagramme d’états-transitions
- décrit les **changements d’états** d’un objet consécutifs aux interactions faite avec le système
- un état est l’union des valeurs stables des attributs entre deux interactions

![Imgur](https://i.imgur.com/oIkfOL2m.png)

### diagramme de séquence
- décrit des **interactions entre objets** d’un point de vue temporel
- le point important est l’**aspect communication**
![](https://i.imgur.com/vQhFeCA.png)

[next]()