Commentaires

La POO en pâtisserie


Arthur, l'apprenti développeurC'est bon j'ai tout revu, je suis au point pour commencer la POO

Parfait Arthur, on va commencer alors, le concept de la POO c'est d'encapsuler des données pour qu'elle ne soient plus globales, mais spécifique à un objet. Et pour celà on va créer des classes.

Arthur, l'apprenti développeurOula, classes... Objets... C'est quoi la différence?

Très bonne question, tu aime la pâtisserie?

Arthur, l'apprenti développeurLa manger oui, mais je ne suis pas très doué. Et surtout je ne vois pas le rapport.

Pas besoin d'être doué, juste d'avoir quelques notions de bases. En POO une classe est un peu un moule à pâtisserie, et un objet est un gâteau que tu as préparé avec ce moule.

Arthur, l'apprenti développeurEuh, ok...

Il existe pleins de moules à pâtisserie, les plats à tarte, les moules demi-sphères, les moules à cannelés et j'en passe. On va dire par exemple que l'on utilise un moule à cacke. Il a une forme précise avec une largeur, une hauteur, une pronfondeur, et il peut aussi être de différent type, en silicone, en métal, en céramique... Bref, un certains nombre de points permettent de définir les caractéristique de ce moule, et donc indirectement les caractéristiques du gâteau qu'il nous permet de réaliser.

Arthur, l'apprenti développeurTout à fait.

Et bien avec ce même moule, on peut tout de même faire différents gâteaux, par exemple un cake jambon/olive, ou un quatre quart, ou encore un pâté en croute. Donc à partir d'un même moule, on est capable de créer différents type de pâtisseries. Elles sont toutes différentes, mais en même temps elles ont aussi certains points en commun, comme la forme et la taillle.

Arthur, l'apprenti développeurJe te suis jusque là

Une classe c'est la même chose, elle va permettre de définir une sorte de forme de base, et ensuite tu pourra construire différents objets à partir de cette même classe. On parle alors d'instances d'une classe.

Le petit truc en plus, est qu'un moule est un objet matériel, donc ils sont toujours plus ou moins régit par certaines contraintes physique. Une classe est immatérielle, elle n'as donc aucune limite et c'est à toi de définir le format qu'elle représente. Pour cela il existe deux choses les propriétés et les méthodes.

Les propriétés



La propriété, c'est un mot qui peut impressionner, mais il faut tout simplement voir ça comme une variable, mais une variable spécifique car cette variable n'existe que dans une classe particulière. Pour les définir en javascript, on le fait dans le constructeur.

Arthur, l'apprenti développeurEt c'est quoi un constructeur?

C'est une fonction un peu particulière qui existe dans toutes les classes, cette fonction sera appelée à chaque fois que l'on veut créer un nouvel objet à partir de cette classe, on parle alors d'instancier. Un petit exemple, je vais créer la classe MouleACake





Arthur, l'apprenti développeurJ'ai quelques doutes... Tu n'as pas oublié de mettre "function" devant la fonction de construction?

Absolument pas, dans une classe il ne faut pas préciser "function" mais j'y reviendrai après.

Arthur, l'apprenti développeurEt pourquoi "this", d'après ce que tu m'avais dit, ça sert dans les événements pour savoir quel élément a déclenché l'événement.

C'est exact, mais avant tout, this a une utilisation spécifique à l'intérieur d'une classe, un peu comme pour les événements, this représentera l'objet courant.

Arthur, l'apprenti développeurC'est à dire?

Comme pour un événement, il peut y avoir plusieurs éléments différents qui le déclenche, pour une classe il peut y avoir plusieurs objets instanciés qui en dépendent, "this" représente l'objet à partir duquel nous utilisons des propriétés de la classe.

Arthur, l'apprenti développeurJe n'ai pas tout compris...

On y reviendra aussi plus tard quand je t'aurais montrer comment faire une instance. Pour le moment, la partie importante est que nous avons créé une classe MouleACake qui a une propriété nommée largeur.

Arthur, l'apprenti développeurEt pourquoi null comme valeur?

J'y viens justement, pour le moment j'ai précisé une propriété vide, mais on peut lui préciser une valeur. Ou encore mieux, utiliser un paramètre de constructeur pour que la valeur soit définit à l'instance de l'objet. Par exemple :



Arthur, l'apprenti développeurMais... Il y a deux fois la variable largeur du coup !

Pas tout à fait, il y a le paramètre largeur, et il y a la propriété largeur. C'est justement le mot clé "this" qui va nous permettre de distinguer les deux.

Arthur, l'apprenti développeurAh d'accord, je comprend mieux le this

L'instanciation



Ce n'est pas finit pour le this, mais c'est un bon début. Maintenant on va instancier la classe.

Arthur, l'apprenti développeurJ'imagine qu'il faut appeler la fonction "constructor"

Pas directement, pour cela on utilise le mot clé "new", pour indiquer que l'on veut créer un nouvel objet de la classe, et on précise ensuite le nom de cette classe, et enfin les paramètres attendus par le constructeur.


J'ai terminé cette partie
Demander de l'assistance