ajout de tous les cours et TP préparés cet été
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
## Programmation orientée objet
|
||||
# Programmation orientée objet
|
||||
|
||||
> Concept fondamental dans la programmation moderne : **la Programmation Orientée Objet**, ou **POO** pour les intimes, est un changement de paradigme par rapport à ce qu’on a vu jusqu’ici.
|
||||
|
||||
@@ -32,7 +32,7 @@ dico = {'Nom': 'Dupond','Prenom': 'Bob', 'Spe1' : 'NSI', 'Age': 17}
|
||||
|
||||
Ici le dictionnaire contient des informations qui peuvent s'apparenter à un étudiant. Il est possible de changer les clés, les valeurs des clés. Mais en réalité nous manipulons un dictionnaire. Si nous vérifions le type de *dico* il s'agit d'un dictionnaire, non d'un étudiant.
|
||||
|
||||
La programmation objet va permettre, de créer un type *Etudiant* qui contiendra des caractéristiques qui lui sont propres (nommées **attributs**) et des fonction appropriées (nommées **méthodes**).
|
||||
La programmation objet va permettre de créer un type *Etudiant* qui contiendra des caractéristiques qui lui sont propres (nommées **attributs**) et des fonctions appropriées (nommées **méthodes**).
|
||||
|
||||
## Programmation orientée objet
|
||||
|
||||
@@ -47,7 +47,7 @@ Ces types possèdent des méthodes, par exemple le type str possède la méthode
|
||||
|
||||
Le but ici est donc de réaliser la même chose sur un type que nous allons créer. (le type *Etudiant*)
|
||||
|
||||
Avant d'écrire la moindre ligne de code, il définir la classe :
|
||||
Avant d'écrire la moindre ligne de code, il faut définir la classe :
|
||||
|
||||
```python
|
||||
class Etudiant :
|
||||
@@ -104,13 +104,13 @@ False
|
||||
|
||||
### Méthodes associées à la classe
|
||||
|
||||
Une fois notre constructeur crée il faut pouvoir manipuler l'objet. Ici nous pouvons accéder à ses attributs. Mais nous allons créer des méthodes permettant de changer, ajouter des attributs.
|
||||
Une fois notre constructeur créé il faut pouvoir manipuler l'objet. Ici nous pouvons accéder à ses attributs. Mais nous allons créer des méthodes permettant de changer, ajouter des attributs.
|
||||
|
||||
Supposons que l'étudiant change de spécialité. Bob voudrait arrêter de faire NSI (impossible, mais supposons pour l'exemple).
|
||||
|
||||
```python
|
||||
def change_spe(self,nouvelle_spe) :
|
||||
self.spe = nouvelle_spe
|
||||
self.spe1 = nouvelle_spe
|
||||
```
|
||||
|
||||
<u>Pour appeler la méthode :</u>
|
||||
@@ -144,12 +144,12 @@ def nouvelle_spe(self,new_spe):
|
||||
>>> etudiant2 = Etudiant('Timo','Alice','SES',17)
|
||||
>>> etudiant2.spe1
|
||||
'SES'
|
||||
>>> e.nouvelle_spe(self,etudiant2.spe1)
|
||||
>>> e.nouvelle_spe(etudiant2.spe1)
|
||||
>>> e.spe2
|
||||
'SES'
|
||||
```
|
||||
|
||||
Ici nous utilisons la spé de l'étudiant 2 (Alice) pour l'étudiant 1. Il y a peu intérêt dans cet exemple, mais il permet de démontrer que c'est possible.
|
||||
Ici nous utilisons la spé de l'étudiant 2 (Alice) pour l'étudiant 1. Il y a peu d'intérêt dans cet exemple, mais il permet de démontrer que c'est possible.
|
||||
Un objet peut dépendre d'un autre, que cela soit dans un paramètre, un attribut, etc.
|
||||
|
||||
### Méthodes particulières
|
||||
@@ -195,7 +195,7 @@ Actuellement appeler un objet renvoie ceci :
|
||||
|
||||
```python
|
||||
def __repr__(self):
|
||||
return self.nom + ' ' + self.prenon
|
||||
return self.nom + ' ' + self.prenom
|
||||
```
|
||||
|
||||
```python
|
||||
@@ -210,7 +210,7 @@ Dupond Bob
|
||||
|
||||
### Pour aller plus loin :
|
||||
|
||||
Il est possible de rendre les attributs privés. Actuellement nous pouvons modifier/ accéder aux attributs d'un objets simplement par son nom.
|
||||
Il est possible de rendre les attributs privés. Actuellement nous pouvons modifier/accéder aux attributs d'un objet simplement par son nom.
|
||||
|
||||
```python
|
||||
>>> e = Etudiant('Dupond','Bob','NSI',17)
|
||||
@@ -218,7 +218,7 @@ Il est possible de rendre les attributs privés. Actuellement nous pouvons modif
|
||||
'Dupond'
|
||||
```
|
||||
|
||||
En utilisant des types privés il n'est plus possible d'accéder directement aux attributs d'un objets. Cette modification se passe dans le constructeur.
|
||||
En utilisant des types privés il n'est plus possible d'accéder directement aux attributs d'un objet. Cette modification se passe dans le constructeur.
|
||||
|
||||
```python
|
||||
class Etudiant :
|
||||
@@ -248,7 +248,7 @@ Ces méthodes sont appelées des accesseurs et modificateurs. Elles sont optionn
|
||||
|
||||
-----------
|
||||
|
||||
Auteurs : Florian Mathieu, Timothée Decoster, Enzo Frémaux
|
||||
Auteurs : Florian Mathieu, Enzo Frémeaux, Thimothée Decooster
|
||||
|
||||
Licence CC BY NC
|
||||
|
||||
|
||||
Reference in New Issue
Block a user