Jusqu'à maintenant, vous avez fait de la programmation dite procédurale, utilisant des variables, des fonctions, ....

La Programmation Orientée Objet ( POO ) est une manière différente de programmer ( on dit précisément que c'est un "paradigme de programmation"...), que l'on considère comme plus "professionnelle" que la programmation procédurale.

Tous les langages ne permettent cependant pas cette manière de programmer ( le langage C par exemple ne la permet pas, Python le peut ), et elle n'est de toute façon pas indispensable dans de nombreuses situations. C'est à partir de "gros" projets, qui nécessitent des structures de données rigoureuses et fiables que l'on commence à en ressentir le besoin.

Pour faire court, dans ce type de programmation, on ne manipule plus des variables et des fonctions séparées, mais on les englobe dans des ensembles que l'on appelle des objets, qui partagent entre eux des similitudes au même titre que des objets de la vie courante présentent des similitudes : toutes les voitures ont un certain nombre de portes, de roues, peuvent avancer, reculer, etc...
Ces objets pourront être manipulés, copiés, pouvoir interagir entre eux grâce à leurs attributs ( les variables qui les décrivent ) et leurs méthodes ( les fonctions dont ils disposent ). Vous pourrez lire la page Wikipedia pour des explications plus complètes.

Nous allons tout de suite voir un exemple de problème dans lequel la POO permet d'écrire un code simple, lisible et fiable.

1. Un premier problème

1.2. Une "bulle" qui monte...

Vous allez coder en Python une petite animation qui, dans un premier temps, fera "monter" une "bulle" dans une fenêtre Tkinter.

Pour commencer, récupérer l'ébauche de code qui vous permettra de démarrer.

	from tkinter import *
	from random import randint
	
	# fonction d'animation
	def anim():
	
	    global x, y, couleur, taille, vitesse
	    
	    # effacement du canevas
	    can.delete('all')
	
	    # déplacement de la bulle avec test si la balle atteint le haut
	    # dans ce cas, on réinitialise au hasard les caractéristiques de la bulle
	    
	    ........................
	
	    # affichage de la bulle
	    bulle = can.create_oval(x - taille//2, y - taille//2, x + taille//2, y + taille//2,fill = couleurs[couleur])
	    
	    fen.after(20,anim) # appel toutes les 20 millisecondes
	
	
	# création de la fenêtre et du canevas de dessin
	fen = Tk()
	fen.title('Champagne !')
	can = Canvas(fen, width = 300, height = 200, background='black')
	can.pack()
	
	# initialisation des caractéristiques de la bulle
	couleurs = ['white', 'red', 'green', 'blue', 'cyan', 'yellow', 'magenta'] # liste des couleurs possibles
	
	x = randint(10,290)
	y = 190
	couleur = randint(0,6) # indice de la couleur dans la liste 'couleurs'
	taille = randint(2,10)
	vitesse = randint(1,10)
	
	anim() # lancement de l'animation
	
	fen.mainloop()			
			

Quelques commentaires sur ce code :

On remarque que les variables caractéristiques de la bulle ( x, y, taille, ....) sont globales au programme : on indique ainsi à la fonction anim() qu'il s'agit bien là des mêmes variables que celles définies dans le programme principal...

Travail à faire :

A vous de compléter le code dans la fonction anim() de façon à :

1.2. Deux bulles...

Travail à faire :

Compléter votre code précèdent de façon à faire "monter" deux bulles en même temps.

1.3. Trois, quatre,... bulles...

Travail à faire :

Compléter votre code précèdent de façon à faire "monter" plusieurs bulles en même temps !

Là, il y a 50 bulles...

Vous commencez à voir le problème ??