|  |  | @@ -1,11 +1,11 @@ | 
		
	
		
			
			|  |  |  | Chapitre 10 - Introduction aux classes | 
		
	
		
			
			|  |  |  | ====================================== | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Ce qu’on a vu jusqu’ici: | 
		
	
		
			
			|  |  |  | Ce qu'on a vu jusqu’ici: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | * Des types simples (entiers, booléens, ...) | 
		
	
		
			
			|  |  |  | * Des structures de données (listes, dictionnaires, ...) | 
		
	
		
			
			|  |  |  | * Des fonctions qui manipulent ces types ou ces types | 
		
	
		
			
			|  |  |  | * Des fonctions qui manipulent ces types ou ces structures de données | 
		
	
		
			
			|  |  |  | * Des fonctions qui s’appellent les unes les autres | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | On appelle cet ensemble de concepts, cette façon d'écrire du code, un *paradigme* - | 
		
	
	
		
			
				|  |  | @@ -17,7 +17,7 @@ Orienté objet - une première définition | 
		
	
		
			
			|  |  |  | --------------------------------------- | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Un "objet" informatique *représente* un véritable "objet" physique | 
		
	
		
			
			|  |  |  | dans le vrai monde véritable. | 
		
	
		
			
			|  |  |  | dans le vrai monde. | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Ce n'est pas une très bonne définition: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -37,8 +37,7 @@ orientée objet permet de mettre au même endroit: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | L'important c'est que les deux aillent ensemble! | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | *Note: ce n'est pas **la** meilleure définition de l'orienté objet, mais on s'en contentera | 
		
	
		
			
			|  |  |  | pour le moment ...* | 
		
	
		
			
			|  |  |  | *Note: ce n'est pas la meilleure définition de l'orienté objet, mais on s'en contentera pour le moment ...* | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Les classes | 
		
	
	
		
			
				|  |  | @@ -55,11 +54,16 @@ On dit souvent qu'en Python, "tout est objet". | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Pour bien comprendre cela, il faut d'abord parler des *classes* et des *instances de classes*. | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Une classe est un *plan de construction*, et est définie ainsi:: | 
		
	
		
			
			|  |  |  | Une classe est un *plan de construction*, et est définie avec le mot-clé ``class``, suivi | 
		
	
		
			
			|  |  |  | du nom de la classes:: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | class MaClasse: | 
		
	
		
			
			|  |  |  | # du code ici | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Notez qu'on n'utilise pas le *snake case* pour les noms de classes, mais | 
		
	
		
			
			|  |  |  | le *Pascal Case*: le nom commence par une majuscule, et on alterne | 
		
	
		
			
			|  |  |  | minuscules et majuscules pour séparer les mots. | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Comme les fonctions, les classes contienent un *corps*, qui est le bloc *identé* en dessous | 
		
	
		
			
			|  |  |  | du mot-clé `class`, de nom de la classe et du `:` en fin de ligne. | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -78,7 +82,8 @@ un peu comme pour appeler une fonction:: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | mon_instance = MaClasse() | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Ici, ``mon_instance`` est une *instance* de la classe ``MaClasse``. | 
		
	
		
			
			|  |  |  | Ici, ``mon_instance`` est une *instance* de la classe ``MaClasse``. Notez que ``mon_instance`` utilise | 
		
	
		
			
			|  |  |  | *snake case*, comme toutes les variables qu'on a vues jusqu'ici. | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Attributs | 
		
	
		
			
			|  |  |  | --------- | 
		
	
	
		
			
				|  |  | @@ -239,10 +244,10 @@ les unes les autres:: | 
		
	
		
			
			|  |  |  | Une méthode spéciale | 
		
	
		
			
			|  |  |  | --------------------- | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Si vous définissez une méthode nomée ``__init__``, celle-ci est appelée *automatiquement* | 
		
	
		
			
			|  |  |  | Si vous définissez une méthode nommée ``__init__``, celle-ci est appelée *automatiquement* | 
		
	
		
			
			|  |  |  | quand l'instance est construite. | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | On dit que c'est une méthode "magique" parce qu'elle fait quelque chose _sans_ qu'on | 
		
	
		
			
			|  |  |  | On dit que c'est une méthode "magique" parce qu'elle fait quelque chose sans qu'on | 
		
	
		
			
			|  |  |  | l'appelle explicitement. | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | On utilise souvent ``__init__`` pour créer des attributs:: | 
		
	
	
		
			
				|  |  | 
 |