Session du 07 juin 2024 à 21h00
Pratique & Live Coding
Bases du Langage
Qualité & Architecture
Programmation Orientée Objet (POO)
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Du tri de chaînes à la POO
Exercices en live (ordonner strings, classes POO, refactoriser classe POO, init)
00:00:00 :Je rappelle pour les derniers qui sont arrivés, n'oubliez pas dans le chat de faire votre fiche de présence pour ceux qui viennent du Toza.Au programme d'aujourd'hui, c'est résolution d'exercices de différents types.
00:00:14 :Essayons de voir la résolution de problèmes.On va repasser sur la manipulation de chaînes de caractère.On va commencer par un petit exercice simple comme ça.
00:00:21 :Ensuite, on va voir la création de classes en programmation orientée objet.Je vais en faire une tout seul en vous montrant comment je fais.Après, il y en a une très simple, ça prend cinq minutes.
00:00:32 :Je vous laisserai la faire de votre côté et après, on la corrigera ensemble.Ensuite, on fera un petit peu de PO un petit peu plus poussé avec plusieurs classes.
00:00:41 :On va essayer de créer un compte bancaire avec des méthodes, etc.Et enfin, on va faire de la refactorisation.C'est-à-dire qu'on a un code tout simple qui nous est présenté comme ça.
00:00:53 :Et le but, ça va être de le diviser en plusieurs classes afin de l'optimiseret de voir certains concepts de la programmation orientée objet un petit peu plus avancés.
00:01:02 :On va le faire dans cet endroit-là.Du coup, je vais commencer avec l'exercice sur les chaînes de caractère.Ce sont des exercices qui sont sur...
00:01:12 :Vous avez mon micro qui sature ?Attends, je vais essayer de le baisser.Dans les paramètres, tu peux régler...Là, on t'entend moins.Mais c'est vrai que tout à l'heure, ça a craché.
00:01:24 :Alors, je peux peut-être le baisser directement depuis mon logiciel. Ne bougez pas.Oui, voilà. Ou depuis les paramètres aussi.Oui, voilà. C'est là.Est-ce que c'est mieux là, du coup ?
00:01:50 :Vas-y, augmente un peu pour voir.Je recommence un petit peu ?Oui, normalement, c'est bon.Oui, c'est de meilleure qualité que tout à l'heure.OK, nickel.
00:02:01 :Merci.Vous me dites si ça recommence, je le réglerai.OK. Du coup, premier exercice, manipulation de chaînes de caractère.Le but de l'exercice, ça va être de remettre en ordre alphabétiquela chaîne de caractère qu'on a là avec différents prénoms.
00:02:18 :Et pour ça, on va utiliser des méthodes qui sont dans Python de base.Je vais accepter un petit retardateur.Et donc, on va essayer d'utiliser des méthodes Python de basepour remettre en ordre ces chaînes de caractère.
00:02:31 :On va utiliser plusieurs méthodes.Est-ce que certains d'entre vous ont des idéesdes méthodes qu'on pourrait utiliser pour parvenir à notre but ?Sachant que nous, on veut obtenir ça comme résultat à la fin.
00:02:41 :Avec les prénoms classés par ordre alphabétique.Est-ce qu'il y en a qui ont des idées au niveau des méthodes à utiliser ?Il y en a trois qu'on va utiliser.
00:02:51 :On a sort. On va utiliser sort qui va nous permettre de remettre par ordre alphabétique.Mais avant sort, on a une première à utiliser d'abord.
00:03:06 :Split, effectivement, et join.OK. On les a tous eus.Et après, dans l'ordre, on va utiliser split en premier.Pourquoi split en premier ?Parce que split va permettre de séparer la chaîne de caractère qu'on a làen plusieurs éléments.
00:03:25 :Ici, c'est les virgules qui nous gênent un petit peu.Donc ici, on va pouvoir créer une nouvelle chaîne.On va l'appeler chaîne list.Et on va appliquer la méthode split sur notre chaîne qu'on a actuellementen choisissant d'enlever ce qui nous gêne, c'est-à-dire ceci.
00:03:44 :Et comme ça, on aura une liste avec tous les prénoms.Une liste, c'est quand même beaucoup plus facile à trier grâce à la méthode sort que vous avez citée.
00:03:52 :Ça, c'est la première étape.Deuxième étape, on a maintenant notre liste.Et on va tout simplement utiliser la méthode sort de base dans Pythonqui va nous permettre d'avoir une liste qui sera triée par ordre alphabétique.
00:04:08 :Je vais pouvoir vous l'afficher par exemple.Est-ce que c'est possible que tu agrandisses un peu l'écran, s'il te plaît ?Je vais agrandir un peu l'écran.
00:04:18 :Alors, comment je peux faire ça ?Comme ça, est-ce que c'est mieux ?Super.Je vais encore agrandir un poil peut-être.Voilà, comme ça, ça sera peut-être pas mal.
00:04:34 :Ok, donc, je reprends.Première étape, on prend notre chaîne de caractèrepour appliquer de la méthode sort qui sert à trier par ordre alphabétique.On a envie de la transformer en liste.
00:04:44 :Pour ça, on utilise la méthode split et on enlève ce qui nous gêne,c'est-à-dire les virgules et les espaces qu'on met ici en paramètre.On obtient donc notre liste qui est ici.
00:04:53 :Et comme je l'affiche, vous voyez que ça y est,on a récupéré tous nos prénoms par ordre alphabétique.Le problème, c'est qu'actuellement, on a une liste.
00:05:01 :Et nous, ce qu'on veut, c'est récupérer une chaîne de caractère.Et pour ça, comme certains l'ont dit,ce qu'on va vouloir faire, c'est une nouvelle chaîne de caractèrequi va du coup utiliser notre liste avec la méthode join.
00:05:17 :Et du coup, c'est cette méthode-là.Donc, avec la méthode join, je vais l'utiliser n'importe comment.On va donc la remettre en utilisant les espaces et les virgulescomme on l'a eu au départ.
00:05:38 :Donc avec virgule, espace, on prend la méthode joinet on indique qu'on souhaite mettre notre liste en paramètre.Donc voilà, le format, c'est d'abord,on met ce qu'on veut comme séparateur entre nos chaînes de caractère.
00:05:53 :Donc ici, une virgule et un espace.Ensuite du coup, on indique qu'on veut joindreles différents paramètres qui sont dans notre liste, donc les prénoms.
00:06:01 :Et maintenant du coup, si j'achète cette nouvelle chaîne,on voit que je récupère bien la liste qui est indiquée juste ici.Est-ce qu'il y a des questions sur ce premier exercice ?
00:06:13 :Alors du coup, c'est là qu'il faut que je lui donne le nom qu'il veut.Chaîne en ordre.Et voilà, on voit que l'exercice est réussi.
00:06:22 :Est-ce qu'il y a des questions sur ce premier exercice ?Non, la syntaxe de join, c'est vrai que je ne l'utilise pas souvent,mais j'ai parfois du mal, et c'est vrai qu'elle n'est pas non plustrès très facile à retenir.
00:06:35 :Le fait que c'est d'abord ça, point join,c'est pour ça que c'est important de la revoir un petit peu de temps en temps,parce que ce n'est pas la plus logique, on va dire.
00:06:45 :Ok, c'est clair pour tout le monde pour ce premier point ?Nickel.Nickel.On va pouvoir du coup passer à la programmation orientée objet.Est-ce que tout le monde ici a une première base de ce que c'estla programmation orientée objet ?
00:07:00 :Ouais, la plupart ont.Ok.Si jamais, pour ceux qui ne connaissent pas trop,je vais d'ailleurs sortir bientôt un glossaire et un article sur Docstringpour expliquer un petit peu les bases.
00:07:12 :Mais vous avez plein d'exercices déjà sur Docstring pour commencer à apprendre.Et là, c'est vraiment un des exercices de base,le premier concept de la programmation orientée objet.
00:07:19 :On va du coup créer une classe avec des attributs pour un employé,donc son prénom, son nom, sa position « hiérarchique » et son salaire.
00:07:34 :Et du coup, ensuite, on va pouvoir le définir avec nom, prénom,son position et son salaire.J'imagine que c'est un salaire annuel, vu ce que Thibault a mis.
00:07:48 :Du coup, est-ce qu'il y en a qui ont une première piste un petit peusur comment on crée une classe en Python ?Je pense que la base, je vous le mets quand même,c'est qu'on met « classe » en minuscule,et après on respecte les règles typographiques en Python
00:08:07 :qui sont de « on met toujours une majuscule à son nom de classe »et ensuite on peut définir notre classe.Quelle est la première méthode à utiliser quand on veut définirles attributs d'une classe en Python ?
00:08:25 :Est-ce qu'il y en a qui savent ?« init », ok parfait.Donc on va utiliser la méthode « init »,donc « def init »,et là du coup on va avoir, vous voyez qu'on a quatre attributs,mais on va en décrire cinq.
00:08:44 :Pourquoi ? Parce que dans la programmation d'entre-objets en Python,vous avez un paramètre obligatoire qui est le paramètre « self ».Le paramètre « self », qu'est-ce qu'il fait ?
00:08:52 :Concrètement, il permet de s'auto-appeler pour pouvoir réutiliser les attributsdans les différentes méthodes que vous avez créées dans votre classe.C'est très simple.Et ensuite du coup on va pouvoir indiquer qu'on souhaite un prénom, un nom,la position et le salaire.
00:09:06 :Jusque là, basique.« Je suis dans quel camp ? Je suis en Bretagne. »C'est vrai qu'on n'a pas trop l'habitude d'avoir du soleil à cette heure-ci,mais on profite d'en savoir.
00:09:16 :Donc on crée notre définition « init »,et on va pouvoir utiliser, comme je disais, la méthode « self »pour dire que dans la classe locale,le prénom va être égal à le prénom qu'on utilise pour initialiser la classe,idem pour le nom,idem pour la position,et idem pour le salaire.
00:09:48 :Voilà, c'est tout ça.Simple, il n'y a pas plus compliqué que ça.Voilà comment vous faites votre première classe en programmation en objetde façon très simple, avec la définition d'attribut.
00:09:58 :Et ensuite, vous pouvez définir votre employéen mettant le nom de votre variablequi est égal à le nom de la classe,avec les différents paramètres que vous lui souhaitez lui dire.
00:10:08 :Rien de plus compliqué.Et là, vous voyez que l'exercice est validé.Est-ce qu'il y a des questions sur cette base-là,au niveau de la programmation en objet ?
00:10:20 :Alors ça, vu que c'est vraiment un exercice qui n'est pas long,et que c'est vraiment la base,je vais vous proposer un exercice similaire.C'est vraiment, globalement, la même chose.
00:10:27 :Je vais vous l'envoyer.Et je vous laisse.Allez, on va se dire, vous avez vu que c'était vraiment pas long.5 minutes pour essayer de le faire de votre côté.
00:10:34 :Et après, on corrige, on voit si certains ont eu des difficultés,on peut en diffuser, etc.Je vous envoie le lien dans le chat.C'est vraiment, globalement, la même chose.
00:10:42 :Là, vous aurez 3 attributs au lieu de 4 qu'on vient de faire.Mais c'est globalement la même chose,histoire de voir si vous avez bien compris.
00:10:52 :Voilà.Je vous laisse faire ça de votre côté.Il est 18.Je vous laisse jusqu'à 24, 25,s'il y en a qui ont un peu de mal et qui n'ont jamais fait de programmation.
00:11:03 :Et puis après, on corrige.Je vous aide pour ceux qui ont des difficultés et qui n'ont jamais fait de BUO.Je vous laisse faire ça.
00:11:13 :Ceux-là, vous l'avez déjà fait ? C'est dans les devoirs ?Ah !Il n'a pas été malin.Il m'a mis dans la liste qu'il fallait faire ce soir.
00:11:21 :Pendant que les autres le font,je vais essayer de vous en trouver un autre,pour ceux du Cosa.Il est assez rapide, mais peut-être un peu différent quand même.
00:11:31 :On va se prendre un truc intermédiaire, en orienté objet.Qu'est-ce qu'on peut vous mettre de sympa ?Oui, c'est un peu plus long, ça.Oui, c'est un peu plus long, ça.
00:11:59 :Ça, ça a l'air d'être la même chose.On les a tous fait, les débutants et les intermédiaires.Vous les avez tous fait, tous ?Ah ouais ?
00:12:44 :Vous avez vraiment tous les intermédiaires de suite ?Vous avez bien avancé, côté Cosa.Je vous joue que je n'ai pas trop suivi.C'est Tibo qui gère ça pour le moment.
00:12:51 :Ok.Bon, écoutez, ça vous fait des révisions.Je vais essayer de vous en trouver d'autres, peut-être plus tard.Je suis désolé pour ça.Il y a un peu plus d'un endroit, ça peut faire des révisions.
00:13:05 :Devoir maison, comme à l'école.Alors, on a un premier de Salvatore.Salvatore.Je suis désolé si je prononce mal.Ça m'a l'air pas mal du tout.
00:13:19 :Bon, c'était bien Salvatore, c'est l'italien.Ça marche.Arnaud.Ouais, Arnaud, ça m'a l'air pas mal aussi.On va attendre encore deux petites minutes.Il n'y a que les difficiles, du coup ?
00:13:36 :Vous ne l'avez pas fait, côté Cosa ?C'est ça ?Allez, avancez, je veux dire.Ça tombe bien, on va en faire deux autres après.
00:13:44 :On va en faire deux autres après.Comme ça, au moins ceux-là, vous ne les aurez pas faits.De toute façon, tout le monde a l'air de plus ou moins réussir.
00:14:03 :Pour le temps, il est temps que je la connaisse.Ouais, mais c'est bien d'avoir des projets.Ça permet de mettre en condition réelle un petit peu ce qu'on a appris.
00:14:12 :C'est même mieux des fois que faire des exercices.Après, c'est chacun ses goûts.Donc, normalement, on avait l'air d'avoir plutôt tous réussi.On crée la classe voiture.
00:14:24 :On crée la méthode init avec les attributs self, le nom de la voiture.Donc, il veut qu'on l'appelle comment ? La marque.J'imagine que ça va être le prix et la couleur.
00:14:36 :Et du coup, après, on a juste à mettre self, marque, égale marque.Self, égale prix.Self, couleur, égale couleur.Ça devrait nous valider sans trop de problèmes.
00:14:53 :Ça n'a pas de question là-dessus, du coup ?On a l'air d'avoir compris. C'est le base là.C'est parfait.Du coup, on va essayer de passer sur un petit peu plus compliqué.
00:15:05 :On va, du coup, se créer un gestionnaire de compte complet.C'est-à-dire, en plus d'une méthode init où on va définir les attributs de base,on va avoir aussi deux autres méthodes.
00:15:19 :La méthode déposer et la méthode retirer.Pour l'exercice, je vais vous le dire en direct.On va essayer de créer un compte bancaire qui va nous permettre de déposer de l'argentet de retirer de l'argent.
00:15:30 :Géré dans deux méthodes distinctes, déposer et retirer.On va y indiquer le montant qu'on souhaite déposer et le montant qu'on souhaite retirer.On le définit avec trois attributs.
00:15:40 :Nom, numéro et balance.Le numéro de compte, il est donné.Ce n'est pas un numéro aléatoire.On peut lui donner le numéro qu'on veut.On crée un compte avec le nom de la personne qui crée le compte,le numéro du compte et la balance de base.
00:15:55 :Et après, voilà.Du coup, moi je vais aussi rajouter un petit truc.C'est qu'on va faire en sorte que quand on retire de l'argent,on ne peut pas retirer une somme qui est supérieure à notre solde de base.
00:16:09 :Parce que sinon, ça peut créer des erreurs.Donc on va essayer d'implémenter ça aussi.Première chose à faire, c'est qu'encore une fois, on va créer notre classe compte.
00:16:19 :On va donc faire notre méthode init avec,on a dit qu'on allait avoir un nom pour le nom du compte,un numéro pour le numéro du compte et la balance de base.
00:16:29 :On va y définir les arguments de base.On va donc créer une nouvelle méthode,une méthode inhérente à notre classe,donc la méthode déposer.On va du coup pouvoir utiliser celle pour pouvoir interagir avec les différents éléments de notre classeet ainsi qu'un montant,donc le montant de l'argent qu'on va souhaiter déposer à notre compte bancaire.
00:16:51 :Et cette classe-là, bien évidemment,c'est la méthode déposer.C'est-à-dire qu'on va créer une nouvelle méthode,une méthode inhérente à notre classe,donc la méthode déposer.
00:17:01 :Et cette classe-là, qu'est-ce qu'elle va faire ?Après, c'est comme la programmation Python classique,on va juste prendre notre balanceet on va y ajouter le montant.
00:17:11 :Rien de plus compliqué que ça.Vraiment, il n'y a pas trop de soucis à se faire.Et après, pour retirer, c'est exactement la même chose.
00:17:20 :On retire un montant,à la seule différence que moi, je vais ajouter une petite condition en plus.Si le montant est inférieur à SELF en balance,on peut mettre SELF en balance et on retire l'argent.
00:17:33 :Parce que là, il n'y a aucun problème.On souhaite retirer un montant qui est inférieur à notre balance,donc on a l'argent qu'on peut retirer.
00:17:39 :Aucun souci là-dessus.Mais sinon,on va afficher une petite erreur.Solde insuffisant.Et voilà, c'est tout. Rien de plus compliqué.Là, on peut créer notre compte avec son nom, son numéro et sa balanceet on peut déposer et retirer comme on veut.
00:17:59 :Est-ce qu'il y a des petites questions par rapport à ça ?Est-ce que j'ai été un peu trop vite ou pas ?Pour au compte, les annotations de type lors de la déclaration ?
00:18:08 :Alors, si on a des annotations de type lors de la déclaration,pour au compte, les annotations de type lors de la déclaration ?Je pense qu'il n'y a pas de pour ou contre.
00:18:20 :Il y en a qui ressentent le besoin,parce que des fois, ils viennent d'un autre langageou alors c'est parce qu'ils sont débutantset que ça leur permet d'y voir plus clair,de ne pas se tromper, etc.
00:18:30 :Moi, j'avoue qu'avec le temps, je ne le fais plus.C'est limite plus une perte de temps des fois qu'autre chose.Mais c'est vrai que quand on débuteou alors qu'on doit respecter certaines normes,par exemple, ou qu'on vient d'un autre langageoù il faut typer, par exemple.
00:18:46 :Je n'ai pas de langage en tête,mais je sais qu'il y a des langages de programmationoù il faut typer.C'est quelque chose qui peut être utile.
00:18:54 :C'est techniquement mieux de l'utiliser en soi,mais souvent, quand on arrive à quelques années de développement,on ne le fait plus.Moi, je ne le fais plus vraiment.
00:19:04 :On dit qu'il faudrait le faire quand même,mais si tu ne le fais pas, ce n'est pas un drame.Il n'y a pas vraiment de faux ou cons.
00:19:11 :Pour ceux qui ne savent pas, c'est quoi les annotations de type ?Par exemple, ici, on va dire que le nom est une string,tout simplement.
00:19:23 :Ou alors que notre balance est un int.Ça permet de dire une erreur si jamais le type n'est pas bon.Oui, quand on débute, c'est bienparce que ça nous permet de voirsi, par exemple, on met une string à la place d'un int.
00:19:40 :Mais à la longue, une fois qu'on s'y connaît,ce n'est pas quelque chose de très utile, selon moi.C'est au goût et personnel de chacun.
00:19:49 :Ce n'est pas un truc qui est essentiel au code, on va dire.On va peut-être pouvoir passer au dernier exercicequi est un petit peu plus compliqué.
00:19:58 :C'est-il pour les tests ?Oui, c'est utile pour les tests en soi,avec Mydentic aussi, comme l'a dit Gabriel.En soi, c'est une bonne pratique.
00:20:06 :C'est une bonne pratique,mais qui n'est pas non plus super utile.J'estime que c'est bien quand on débute,j'estime que c'est bien quand on fait des tests,mais quand tu es dans ton projet à toi,ou qu'on ne te demande pas,ça ne sert à rien de se forcer à le faire.
00:20:23 :On va passer sur le dernier exercice.Le dosa vous ne l'avez pas fait non plus,normalement celui-là,qui est de la refactorisation de code.Pour ceux qui savent pas ce que c'est de la refactorisation de code,c'est qu'on va nous donner un code de base,et il va falloir le recoder,
00:20:43 :le réécrire et le factoriser,c'est-à-dire le séparer en plusieurs blocs,pour qu'il soit plus lisible, des fois plus optimisé.Ça a beaucoup d'avantages la refactorisation.
00:20:55 :Dans les principes solides,c'est le principe de la séparation de responsabilités,c'est-à-dire qu'on n'a pas une seule classe qui gère tout.On sépare les différentes utilités.
00:21:06 :Là, on va créer une banque.La banque ne faut pas qu'elle gère tout.On va avoir une classe qui va gérer le compte bancaire,comme on l'a fait juste avant,une classe qui va gérer tous les comptes bancaires,et une classe pour la banque.
00:21:18 :Sur les exercices,on a notre code de base,qui nous donne un exemple de comment ça fonctionne actuellement.On nous dit qu'il faut avoir une classe compte,qui doit avoir deux attributs.
00:21:32 :Un identifiant unique généré automatiquement,appelé compte ID.Là, ce n'est pas comme avant,on met un numéro aléatoire.Pour ça, vous avez plusieurs solutions.Vous pouvez utiliser la bibliothèque random,et vous pouvez aussi utiliser la bibliothèque UUID.
00:21:52 :Un UUID, c'est un identifiant unique utilisateur.Moi, j'aime beaucoup cette bibliothèque,parce qu'elle a pas mal de méthodes utiles.Notamment, vous allez voir ce que je vais utiliser.
00:22:04 :Je vais utiliser UUID.UUID4.Et cette méthode-là,elle permet de générer un identifiant unique aléatoire.A différencier avec UUID1,qui lui génère aussi un identifiant unique,mais qui est basé sur votre ordinateur,sur votre carte réseau, sur votre carte mère, etc.
00:22:33 :Donc, techniquement, il peut être copié.Ça peut être ce qu'on appelle spoof,c'est-à-dire que quelqu'un peut imiter cet identifiant-là.Alors qu'avec UUID4,normalement, il n'y a pas trop de risques.
00:22:46 :C'est un peu comme la cryptographie,c'est vraiment unique.Donc moi, ça, j'aime bien l'utiliser.Combien de chiffres aléatoires on n'a pas de risque de redondance ?
00:22:58 :Alors, je crois que de tête, c'est 4.Donc après, ça dépend.Moi, je dis surtout que c'est la 4,parce que souvent, quand c'est des petits projets,t'as pas besoin de beaucoup non plus.
00:23:13 :Donc ça doit être 9999.Donc techniquement, t'as un risque de redondance.C'est un truc où il faut l'utiliser si t'as plus de 10 000 utilisateurs.
00:23:20 :Je n'ai jamais utilisé plus haut.J'imagine qu'il faut aller voir à côté de la bibliothèque,où il doit y avoir des méthodes, peut-être,pour plus de caractère, pour éviter la redondance.
00:23:27 :Mais dans ce genre de petits projets, ça suffit largement.Donc du coup, on va pouvoir commencer à créer notre classe compte,qui doit avoir un identifiant.
00:23:39 :On commence toujours par init avec le self.On doit avoir le compte ID et le solde du compte.Donc on va mettre le solde initial,parce que du coup, on n'a pas besoin d'indiquer le compte ID,puisqu'on va le générer avec cette méthode.
00:23:59 :Et du coup, self.Là, les deux petits points importants.Self.compteID, je viens de le dire,est égal à UID.UID4.Et ça, du coup, comme ça génère un chiffre en version int,nous on va, par souci de...
00:24:23 :ça va être plus facile à manipuler après,on va le transformer en string, simplement, avec la méthode str.Et du coup, notre solde initiale va être égale au solde initialqu'on aura fourni en paramètres pour créer notre compte.
00:24:37 :Une méthode compte, du coup, elle doit atteindreune cure des méthodes de dépôt et de retrait.Là, rien de compliqué, c'est exactement les mêmes qu'on a fait avant.
00:24:45 :J'aurais pu même laisser les pour aller les récupérer.C'est pas grave, on va les refaire.Classe dépôt, avec le self, avec le montant qu'on souhaite déposer.
00:24:55 :J'oublie mes deux petits points.Self.solde.Donc là, on crée un nouvel attribut.On crée l'attribut solde et on va lui ajouter...Je vais y arriver.
00:25:09 :...qu'on souhaite y ajouter.Et du coup, notre salle de retrait, on va retirer le montantexactement de la même façon qu'avant, avec, encore une fois,on vérifie toujours si le montant qu'on souhaite retirern'est pas supérieur au montant de notre solde.
00:25:30 :Ça évite d'avoir des erreurs.Et dans la vraie vie, vous n'allez pas retirer 150 000 €si votre compte en banque n'en contient que 10 000.
00:25:37 :Donc, on vérifie que le solde est bien supérieur ou égal au montant.D'ailleurs, ça me fait penser que tout à l'heure, j'avais pas mis le égal.
00:25:46 :Et du coup, à ce moment-là, on peut retirer le montantà notre solde.Et sinon, on va afficher l'erreur que le solde est insuffisant.Jusque-là, ça va.
00:26:03 :C'est la même chose que l'exercice d'avant,juste qu'on rajoute en plus le compte ID et la méthode UID.Est-ce qu'il y en a qui avaient déjà entendu parler de cette bibliothèque-là ?
00:26:14 :Ou alors, est-ce que vous utilisez d'autres alternatives,comme random.org, random.indint, ou ce genre de choses ?J'imagine qu'il y a pas mal d'alternatives.Je sais que moi, pour ce genre de petits projets, j'aime bien UID.
00:26:27 :Mais on peut très bien le faire avec randint.En JavaScript ? Ouais, JavaScript, j'imagine,il y a assez de bibliothèques pour ça aussi.Mais voilà, par exemple, je vous le montre avec random,si ça vous intéresse.
00:26:41 :Il y en a qui préfèrent utiliser random.On peut, du coup, utiliser random et faire, par exemple,un ID qui va être random.randint entre 0 et 10 puissance 4,
00:26:59 :histoire vraiment d'avoir de la marge.Et voilà, vous aurez globalement quelque chose du même accueil.Le contrôle de retrait n'aurait pas dû être faitau niveau du gestionnaire de comptes ?
00:27:12 :Alors là, en tout cas, ce qui est demandé,c'est que ce soit mis dans la méthode de classe de comptes.Après, dans d'autres circonstances,tu pourrais la mettre dans le gestionnaire de comptes.
00:27:27 :Mais là, en tout cas, dans l'énoncé,c'est dit que le dépôt et les retraits, c'est dans la classe comptes.Et qu'après, la gestionnaire de comptes,elle est chargée de gérer les comptes.
00:27:39 :Et du coup, d'ajouter, trouver, supprimer les comptes.Normalement, ça, c'est pour gérer les comptes.Et la classe comptes gère ton argent.C'est ça un petit peu la séparation des responsabilités.
00:27:48 :C'est vraiment que chaque classe a son utilité.On essaye de ne pas mélanger les choses.La méthode Hache ?Oui, je n'utilise pas beaucoup, mais ça peut être une solution aussi.
00:28:01 :Alors...En tout cas, le souci que je vois dans ton truc, Gabriel,c'est que tu as mis Return False dans ton retrait.Et que, en soi, ça marche.
00:28:31 :C'est juste que l'utilisateur ne sait pas pourquoi ça ne marche pas.Moi, je trouve ça cool de lui mettre un print.Mais ça marche, sinon.
00:28:41 :En général, oui, je fais un raise.Oui, tu peux raise une erreur aussi.Là, j'ai mis False pour aller plus vite, mais oui, j'ai raise une erreur.
00:28:48 :Oui, tu peux raise une erreur, tu peux mettre un print.Tout ça, c'est un petit peu la même chose.Et oui, tu peux mettre un try catch.
00:28:55 :Il n'y a pas mal de solutions.Moi, je fais vraiment au plus simple.Mais ça marche aussi.On peut passer à la deuxième classe,qui est la classe gestionnaire de comptes.
00:29:05 :Qui, du coup, va gérer les comptes.Donc, elle, ce qu'elle veut comme attribut,c'est...Qu'est-ce que j'ai fait, là ?Une définite.En soi, ce n'est pas grand-chose.
00:29:24 :Elle a juste besoin d'avoir accès à elle-même.Donc, en soi, juste un self.On n'a pas besoin de lui donner d'autres choses.Et on nous demande juste de lui créer un attributqui est un dictionnaire et qui va gérer les comptes.
00:29:37 :Self, par contre, est égal à un dictionnaire vide, tout simplement.Hop et hop.Je m'embrouille un peu dans mes touchesparce que je fais souvent...
00:29:49 :J'échange entre mon Mac et mon clavier Windowset je m'embrouille dans mes touches.Ensuite, on lui demande d'ajouter une méthodepour ajouter, trouver et supprimer les comptes.
00:29:59 :Et donc, pour ça, par exemple, regardez,on a déjà une petite fiche qui est donnée iciqu'on peut reprendre.Et là-dessus, qu'est-ce qui est bien ?
00:30:10 :Alors, attendez parce que, du coup, à cause du...Est-ce que c'est assez grand, là, quand même ?J'ai réduit un petit peu, mais c'est histoirequ'on puisse voir tout.
00:30:21 :Ouais, ça va, OK.Donc, voilà, on a notre classe, du coup,qu'on s'appelle d'ajout de comptes.Trop petit ?Comment je pourrais faire ?Eh bien, comme ça.
00:30:36 :Ouais, voilà, comme ça, parfait.On trouve toujours des solutions.Donc, voilà.Donc, là-dedans, qu'est-ce qui est bien ?Enfin, là, qu'est-ce qu'il faut changer ?
00:30:49 :Ben, on n'a plus besoin, en fait,de mettre le numéro de compte et le solde initial.Je vais l'écrire en dessous, comme ça,vous voyez la différence.
00:30:56 :On va écrire, du coup, notre nouvelle méthoded'ajouter des comptes.Ici, du coup, on n'a pas besoin, en fait,de mettre ni le numéro du compte...
00:31:02 :Enfin, on n'a pas besoin de mettrele numéro de compte parce que, du coup,on peut directement aller le chercher.On a juste besoin, du coup,du solde initial.
00:31:10 :Ici, du coup, on va pouvoir créerun nouveau compte avec la classequ'on a créée juste au-dessus.Donc, compte est égal à...On appelle la classe compteavec le solde initial qu'on a fourniici, juste ici.
00:31:28 :Et ensuite, on va, du coup, pouvoiraller chercher dans notre database,notre liste des comptes,notre compte,et l'ID du compte,qui va, du coup, être égale à notre compte.
00:31:45 :Et ensuite, on va, du coup, pouvoirreturn le compte ID.Et comme ça, à chaque fois qu'on crée un compte,on aura l'ID du comptepour pouvoir faire des manipulationsaprès avec.
00:31:58 :Donc, on récapitule.Ici, on avait besoin du numéro de comptepour aller le chercher, en fait,dans notre liste de comptes.Mais, du coup, le numéro de compte,puisqu'il est créé aléatoirementet qu'il n'est pas fourni,on n'en a plus besoin.
00:32:12 :Donc, on a juste besoin des'appeler nous-mêmes,de fournir le solde initialde quand on crée un compte.Puisque là, on crée notre nouveau compteen appelant la classe compte,en lui fournissant le solde initialparce que c'est tout ce qu'elle a besoin.
00:32:27 :L'ID du compte sera créée automatiquementavec la méthode du ID.Et derrière, du coup,comment on l'indexe dans notre dictionnaire de comptes ?Eh bien, on va tout simplement lui direque dans compte,l'indexe sera l'ID du compte,donc compte.ID,
00:32:47 :et la valeur sera directement l'objet compte.Voilà.Est-ce que ça, ça va ?Oui, OK.Et du coup, après, pour les deux suivantes,ça va être encore plus simple.
00:33:06 :Pour trouver un compte,tout ce qu'il faut,c'est, donc, qu'on s'appelle self,et ainsi que, du coup,là, cette fois-ci, il nous faut l'ID du compte.
00:33:17 :Mais l'ID du compte, en soi,quand tu crées un compte,on te le donne pour que tu connais ton ID.Et après, c'est tout simple.
00:33:23 :Donc, on va juste allerEt du coup, pareil pour supprimer les comptes.Sauf que cette fois-ci,on va utiliser la méthode TOP.On fournit que le compte ID.
00:33:34 :Et du coup, c'est tout simple.On va chercher dans notre dictionnaire,avec la méthode GET,le compte ID,et qu'on s'appelle,et tout ce qu'il faut, en fait.
00:33:46 :On va juste lui fournir le compte ID.Et du coup, pareil pour supprimer les comptes.Sauf que cette fois-ci,on va utiliser la méthode TOP.
00:33:54 :On fournit que le compte ID.C'est tout ce qu'il a besoin.Et on returne.J'oublie mes deux petits points à chaque fois.Et du coup, cette fois-ci, pareil,compte.
00:34:05 :Et pareil, on fournit que le compte ID.On n'a pas besoin de lui fournir la valeur.Est-ce que ça va pour la classe dictionnaire de compte ?
00:34:16 :Je peux récapituler aux besoins,si ça a été un petit peu vite.Je peux reprendre un petit peu rapidementpar rapport à les différentes étapes.
00:34:27 :Très rapidement,on crée un dictionnaire qui va contenir tous les comptes.Pour créer un compte,on appelle la méthode compte.On lui fournit le sot initial.
00:34:37 :On l'indexe dans notre dictionnaire de compteavec, comme index, l'ID du compteet comme valeur, l'objet du compte,de la classe compte.Pour le trouver, comme c'est un dictionnaire,on peut utiliser la méthode GET.
00:34:49 :L'index qu'on fournit, c'est le compte ID.On n'a pas besoin de lui fournir de valeur.Et pour la supprimer, pareil,on utilise la méthode POP,qui est un dictionnaire,et on fournit que le compte ID.
00:35:00 :La méthode POP ne fait pas un remove ?Non, je ne pense pas.Ça la supprime.Là, on veut...Merde, c'est juste que moi qui ai mal nommé ma méthode.
00:35:15 :C'est supprimé, ici.J'ai mis deux fois trouver.Non, ici, c'est supprimé.Autant pour moi.Ici, c'est la méthode pour supprimer le compte.C'est pour ça qu'on utilise POP.
00:35:24 :J'ai juste mal nommé.Pour supprimer, on utilise POPen lui fournissant la liste du compte,donc l'index,pour qu'il la trouve.On peut passer à la classe banque,qu'on va refaire.
00:35:41 :Ici, c'est toutes les méthodes qu'on a déjà refaites.On va lire l'énoncé.La classe banque doit inclure un attribut pour le nom de la banque.
00:35:53 :On sait déjà que ça signifie qu'on doit avoirun nom pour la banque,donc self.nom égale nom.Un attribut gestionnairequi va contenir une instancede gestionnaire de compte.
00:36:12 :Donc là, self.gestionnaireva être égal à gestionnaire de compte.Et il va nous falloir une adresse,donc ça, il faut la fournir.Je ne sais plus écrire l'adresse, je crois.
00:36:34 :Et du coup, on va la mettre là par souci d'esthétique,est égale à l'adresse.Quand on dit qu'il faut un attribut qui est une instance,c'est-à-dire que l'attribut est égal à la classequi est appelée.
00:36:53 :Ça, c'est une instance de classe.Et ensuite, elle doit écrire une méthodepour afficher les détails de la banque,y compris le nombre total de comptes gérés.
00:37:02 :Pour ça, pareil, on va créer une nouvelle méthode,afficher les détails, c'est comme ça qu'on nous demande de l'appeler,qui a juste besoin de s'appeler elle-même,puisqu'elle a accès à tout ce qu'elle a besoin.
00:37:15 :Et puis ensuite, elle va pouvoir affichertous les détails qu'on veut.Détail de la banque, ça va être son nom et son adresse,et le nombre total de comptes.
00:37:24 :Pour son nom, c'est très simple.Moi, j'utilise les primes F.Pour ceux qui ne connaissent pas, vous mettez F devant les guillemets.Et ça permet d'utiliser directement un attributavec les crochets, comme ça.
00:37:40 :Donc là, self.nom.En plein milieu de votre phrase, donc nom de la banque.Et c'est un petit peu plus pratique que de faire ça.Voilà.
00:38:00 :Ça permet d'inclure directement dans votre print,sans devoir fermer, mettre un plus, réouvrir, etc.,entre crochets, tous les attributs que vous voulez.Et ça permet aussi, techniquement, de faire des calculs.
00:38:11 :Imaginons ici que c'était un chiffre.Vous pouvez faire ça plus autre chose, par exemple.Donc c'est quand même pas mal pratique.Donc le nom de la banque.
00:38:21 :Là, on affiche l'adresse de la banque.De la même façon, self.adresse.Et enfin, pour afficher le nombre total de comptes,c'est simple.Comme on a accès à l'instance de gestionnaire de comptes,on a aussi accès à ses attributs, tout simplement.
00:38:47 :Et donc, vu qu'on a accès à ses attributs,nombre de comptes,on va pouvoir appliquer la méthode l'n.L'n, c'est pour avoir la longueur de quelque chose.
00:39:02 :Ici, par exemple, on a notre dictionnaire.L'n de notre dictionnaire, ça va nous direcombien il y a d'éléments intérieurs.Donc, combien il y a de comptes.
00:39:10 :On va appliquer la méthode l'n sur notre gestionnaire,qui est définie ici, et on va accéder aux comptes.Tout simplement.Et hop, on ferme.Et voilà.
00:39:24 :Et là, normalement,voilà.On reprend juste pour la méthode banque.Je vais voir s'il n'y a pas d'autres questions.On nous a demandé quel est un nom et une adresse.
00:39:38 :Là, c'est classique, c'est les attributs qu'on lui donne.Ainsi qu'une instance de notre classe,c'est-à-dire qu'on lui donne un nom,et qui est égal à, vous l'appelez comme si c'était une méthode,avec les parenthèses, vous appelez le nom de votre classe.
00:39:51 :Ça va créer une instance,et vous allez pouvoir accéder aux attributs de votre classe.Et ça nous permet de faire ce genre de choses,d'appeler le point gestionnaire,ça va appeler notre gestionnaire de comptes.
00:40:04 :On va pouvoir accéder à la méthode compte.Et c'est une méthode compte, c'est notre dictionnaire qui contient tous les comptes.Et on peut lui appliquer la méthode deadline,pour savoir combien il y a d'éléments dedans,et donc combien il y a de comptes.
00:40:16 :Voilà, tout simplement.Et là, vous voyez que du coup, on a le nom de la banque,BNP Paribas,l'adresse qui est fournie ici,et combien il y a de comptes.
00:40:23 :Il y en a un, mais on n'en a qu'ajouté qu'un.Compte 2égale ma banquepoint gestionnairepoint ajouter compte.Maintenant, si je veuxajouter un deuxième compte,je peux totalement,et je vais l'exécuter.
00:40:43 :Et vous voyez qu'il y a deux comptes.Tout simplement.Et maintenant, je peux très bien le supprimer,et réafficher, et vous verrez queau début il y en a deux,puis après, quand je l'ai supprimé,il y en a qu'un, donc tout marche parfait.
00:40:57 :L'élastique, c'est la vie, oui.Alors, je vais augmenter un petit peu les questions.Je n'ai pas compris un truc.Pourquoi le gestionnaire n'est pas dans les paramètres ?
00:41:14 :Le gestionnaire est dans les paramètres.Enfin, s'ils appellent ça les paramètres, les attributs,si, le gestionnaire est dedans.Mais pourquoi il n'est pas là, tu veux dire ?
00:41:23 :Tout simplement parce que ce n'est pas quelque chosequ'on fournit, en fait.Ici, c'est des attributs que tu fournis.C'est-à-dire que quand tu vas appeler ta classe banquepour l'instantier, par exemple comme ça,le nom, tu dois le fournir.
00:41:34 :L'adresse, tu dois la fournir.Mais le gestionnaire, tu n'as pas besoin de le fournir.En fait, il se définit tout seul.Techniquement, c'est quand tu as quelque chosequi ne va pas bouger, en fait.
00:41:45 :Le nom, tu vois, tu peux créer des banquesavec des noms différents.Mais techniquement, si ta banque,je ne sais pas, moi, je vais dire le siège social,on va dire que toutes les banques de France,le siège social, il est à Paris, tu vois.
00:41:58 :Je n'aurais pas besoin de le fournir là, en fait.Je pourrais très bien définir que, de base,le siège social est à Paris.Et en fait, pour des choses qui ne bougent pas,tu n'as pas besoin de les mettre en paramètre ici.
00:42:07 :Et tu peux tout autant les créer quand mêmeet créer le paramètre qui est associé.Et donc là, dans mon cas, le gestionnaire,c'est une instantiation de ça.
00:42:15 :Ça ne bouge pas, en fait.Ça va, si jamais je mets gestionnaire ici,en fait, tu vas tout le temps mettre ça icicomme paramètre.
00:42:22 :Donc ça ne sert à rien, en fait.Tu peux directement le mettre iciet ça évite d'appeler un paramètre supplémentaire.Et en plus de ça, ça évite aussi d'indiqueraux utilisateurs le fonctionnement derrière.
00:42:32 :Ils ne savent pas que ça utilise le gestionnaire de comptes,tu vois.Pour eux, tout marche avec ça.En fait, tu vois, quand tu as ta banque,t'as l'impression de parler qu'avec ta banque,alors que derrière, il y a un système qui gère les compteset il y a un système qui crée et qui gère ton montant de banque,
00:42:47 :tu vois.On ne pourrait pas mettre une méthode STR.Dans quel contexte, du coup, Cécile ?Parce que ça fait cinq minutes,si tu as moyen de me redire dans quel contexte.
00:43:03 :Alors, j'ai une question.À quoi sert l'objet dans un cas comme ça ?Car finalement, on peut très bien avoir un dictionnaireet des fonctions qui font l'équivalent.
00:43:11 :Ajout d'un nouveau compte dans le dictionnaire,ajout d'un montant, retrait d'un montant, etc.Je connais très mal l'objet,donc j'ai du mal à voir en quel contexte c'est le plus intéressant.
00:43:18 :Oui.De toute façon, en général,tout ce qui peut être fait en objet,il y a beaucoup de cas où ça pourrait être fait normalement.
00:43:26 :Le principe de l'objet, c'est justement de créer des objets,des instantiations,et du coup, d'avoir des méthodes pour créer plusieurs éléments.Ça permet d'avoir un code qui va être beaucoup plus optimisé,de respecter des principes solides.
00:43:41 :Ici, par exemple, tu vois, comme je disais,l'utilisateur ne sait pas comment ça fonctionne derrière.Lui, en fait, il n'interagit que avec la classe banque.
00:43:49 :Il ne sait pas qu'il y a deux autres classes derrière.Il ne sait pas comment tout gérer en fond.Il y a plein d'avantages à la programmation d'objets.
00:43:56 :Ce serait un peu trop compliqué d'expliquer ça en quelques minutes.Je t'invite à te balader sur Docstring.Je pense qu'il y a pas mal.De toute façon, tu as les cours de Thibaultqui t'expliquent à quoi sert réellement la programmation d'objets.
00:44:09 :Et quand tu les auras suivis,tu comprendras pourquoi c'est peut-être plus intéressant,dans certains cas, de faire de cette façon-là,plutôt que de faire simplement avec un code classique.
00:44:22 :L'exercice y prête bien.Oui, tout à fait, l'exercice y prête plutôt bien.Ça me donne surtout l'impression qu'on a regroupé des fonctionsdans une sorte de boîte plus grande pour les ordonner.
00:44:31 :Oui, c'est ça.C'est le principe de la séparation des responsabilités.Au lieu d'avoir une grosse boîte qui va tout gérer,et qui a aussi des risques de sécurité,on sépare les responsabilités.
00:44:44 :Notre classe compte ne sert qu'à initialiser notre compteet faire des dépôts et des retraits.On a notre classe gestionnaire des comptesqui sert à gérer tous les comptes,à en créer un en appelant l'autre méthode,à en trouver un et en supprimer un.
00:45:02 :Et notre classe banque sert à créer une banqueet de savoir combien de comptes il y a dans la banque.Ici, on voit un peu aussi le principe de l'encapsulation.
00:45:14 :En fait, les trois principes clés de la POO,c'est l'encapsulation, l'héritage et le polymorphisme.Cet exercice-là se prête surtout à l'encapsulation,parce que c'est vraiment le principe de basede la préservation d'un objet.
00:45:32 :C'est d'avoir plusieurs fonctions,qui vont avoir des méthodes chacune de leur côtépour faire calcul leur travail.Et après, je ferai sûrement d'autres sessionsoù on verra l'héritage et le polymorphisme.
00:45:43 :Je voyais que tu levais la main, Gabriel.Tu avais peut-être quelque chose à rajouter.Oui, il y avait une question vachement intéressante de Arnaud,j'ai mis un lien,justement par rapport à ça peut faire l'approchementen quoi sert la POO.
00:45:57 :Et dedans, c'est un peu la même chose,c'est-à-dire qu'il y a des classesoù on peut faire l'approchement en quoi sert la POO.Et dedans, il y a du code.
00:46:05 :Et franchement, cette question-là, elle était super intéressante.Je n'ai jamais attendu.Il nous reste encore un petit peu de temps,donc on va pouvoir,je vais finir de répondre aux questions vite fait,quand même sur le Meet.
00:46:17 :On était arrivé à afficher le détail.Oui, donc j'avais répondu après, mais...Oui.Après, STR,ça va te limiter à juste, en fait,tes attributs qui sont des strings, en fait.
00:46:38 :Il ne me semble pas que tu puisses faire, par exemple,des manipulations comme ça avec l'n ou quoi.Comme ici, on a besoin d'utiliser l'n,c'est pratique d'avoir une méthode qui est associée.
00:46:48 :On a parlé de la méthode STR,c'est juste pour l'affichage.Le rep est STR.Ah.Ah oui.Oui, en soi, c'est une solution.Après, techniquement, par exemple,sur le site, tu peux proposer tes solutions,ça peut en être une, etc.
00:47:10 :Ici, on se contente juste de suivre l'exerciceet ce que notre cher Thibault nous demande.Parce que c'est aussi un peu ça,la résolution de problèmes et de codes.
00:47:18 :Je ne sais pas si certains d'entre vousvous avez déjà fait, par exemple, sur le Discord,je sais qu'il y a souvent des exercices de codes,ce genre de choses.
00:47:26 :Là aussi, il y a une compétition.Chaque jour, vous avez un nouvel exercice.Et souvent, dans la résolution de problèmeset ce genre de choses,ce qui est important, c'est bien d'y réappliquer les noms C.
00:47:38 :C'est pour ça qu'on essaie de respecter au maximum.Mais après, oui, comme tout à l'heure,il a proposé sa solution à Gabriel,il y a plein de méthodes différentesde résoudre le problème.
00:47:48 :Ce n'est pas trop un souci.Pour une single responsibility,j'aurais plus fait un truc du genre.Oui.Après, le problème, c'est que du coup...Oui.
00:48:09 :Tu mets ta no-credit en dehors.Après, oui, encore une fois,c'est aussi une solution viable.Là, en soi,c'est quand même bien, dans la PO,d'illustrer aussila séparation de la responsabilitéainsi que l'encapsulation.
00:48:32 :Je n'ai pas compris ta dernière question.Je vais regarder la question d'Arnaud en attendant.Je vais me permettre de dézoomer vite faitparce que je ne vois pas grand-chose.
00:48:51 :Alors...Ma réponse est un peu longue,mais c'est vrai que cette questionétait vachement intéressante, je trouve.Ah oui, ok, celui-là, oui.Parce que je n'étais pas là.
00:49:18 :Hum...Je m'imagine que tu l'as expliqué après,la différence entre underscore et double underscore.Je suis un peu plus loin,et en fait, ça montre l'intérêt de la PO.
00:49:36 :Tu te rends compte que c'est vachement puissant.C'est vrai que...Oui, d'accord.D'ailleurs, pour ceux qui ne sauraient pas,c'est une convention de mettreun carré du bas devant le nomde sa variable, et c'est pour indiquerqu'elle est censée être privéeet ne pas être accessibledepuis l'extérieur de la classe.
00:49:57 :Comme l'a dit, ça permetde la rendre un petit peu privée.Mais en soi, elle reste accessible.Ce n'est pas interdit.Si jamais ça intéresse certains,il me semble que j'ai fait un post sur mon LinkedInpour vraiment interdire la chose.
00:50:11 :Vous pourrez la retrouver si ça vous intéresse.Mais c'est pas le sujet.Numéro de setteur, j'avoue que je ne connaissais pas.J'ai pas dû suivre ce truc-là.
00:50:20 :Après, le name mangling, oui.C'est quand tu définis un intérêt classique.Pareil, tu peux y avoir accès,mais c'est juste pareil, c'est des conventions en soi.
00:50:34 :Mais du coup, tu ne peux pas y accéderdirectement comme ça.Oui, c'est intéressant.Tu as mis le lien dans le truc ?Oui.Je vais pousser un peu l'explication,mais ça montre vraiment l'intérêt de la PO.
00:50:49 :L'encapsulation,l'abstraction,c'est vraiment bien.Effectivement, pour ceux qui veulent pousserun petit peu plus,et qui ont déjà un petit niveau en PO,ça peut être très intéressant d'aller faire un tourde cette question.
00:51:11 :Et puis, comme je disais tout à l'heure,si vous voulez vous pousser un petit peu,par exemple, à faire du web,que ce soit avec Flask, avec Django,avec n'importe quoi,la PO, c'est obligatoire.
00:51:24 :Vous n'avez pas d'autre choix que de faire de la PO.Je pense qu'on est pas mal.On est même plutôt dans les temps.Est-ce qu'il y a des questionspour finir sur tout ce qu'on a pu faire là ?
00:51:38 :Oui, Cécile, vas-y.Tu peux parler normalement direct.Non, désolé, je n'avais pas de questions.J'ai fait une mauvaise manip en fait.Pas de soucis.Pour la question de tout à l'heureentre STR, parce que ce n'était pasexplicitement marqué qu'il fallaitune fonction afficher contenu,et donc en général, la fonction STR...
00:52:08 :C'est marqué là ?Oui, une méthode pour afficher...En soi, oui, mais en fait,c'est moi qui le comprends,mais quand on dit inclure une méthodepour afficher les détails,pour moi, c'est sous-entendu qu'on veutune méthode dédiée à ça et pas la méthode STR.
00:52:29 :En soi, c'est tout à fait viable.OK, merci.Et oui, pour ceux qui ont incité tout à l'heureau truc de Gabriel, j'imagine quetout était en PO.
00:52:41 :Mais voilà, pareil, si vous voulez suivrela formation Django sur le site,ou même que Gabriel puisse vous aidersur Django, etc.,maîtriser la PO, c'est un petit peuobligatoire.
00:52:53 :Et donc c'est pour ça que c'est importantde faire ce genre d'exercice,à la fois pour un petit peu introduireà la PO, à des concepts un petit peuavancés, et à voir aussi comment on faitdes exercices,comment on fait la résolutiond'exercices, la résolution de problèmes,comment un développeur appréhende ce genre
00:53:11 :de choses. Vous avez vu comment j'essaiede lire les lancers étape par étape,de voir un petit peu petit à petitcomment on peut faire.
00:53:19 :Pour ceux qui s'intéressent,je pense qu'on refera des sessionsde mentorat comme celle-là, sur d'autres sujetsou sur d'autres principes de la PO,etc., je pense que c'est intéressant.
00:53:29 :Même pour ceux qui sont du JOSA, ça fait aussiun petit peu de révision et ça permetde rester dans le bainet de retravailler.
00:53:37 :Il y a un prochain mentorat,vendredi prochain,ça sera 20h ou 21h aussi,animé par moi aussi.On n'a pas encore décidé à 100% du sujetavec Thibault, on vous le dira dans les prochains jours.
00:53:49 :On va fixer ça ce week-end, je pense.Et pour ceux que ça intéresse,je ne sais pas s'il y en a qui étaient là à ma dernièreprésentation sur la cybersécurité,du mentorat que j'avais fait la dernière fois.
00:53:59 :Je fais une conférence sur le Discordjeudi prochain, jeudi soir.Je vais vous dire l'heure, c'est le 13.Je vais vous dire l'heure, je n'ai pas envie de dire de bêtises.
00:54:07 :Je crois que c'est 20h.20h30 le jeudi 13, pour ceux que ça intéresse,je fais une présentationsur ce qu'on appelle le crypto-jacking.C'est tout simplementle fait que certains pirates,c'est une forme de hacking en fait,certains pirates utilisent vos appareils,vos téléphones, vos ordinateurs, etc.
00:54:27 :pour miner des crypto-monnaiessans que vous vendiez les comptes.J'ai eu la chance de faireun sujet de rapport de stagede recherche au Canada l'année dernière là-dessus.
Aucune occurrence trouvée pour « ».
00:00:12
Le programme de la session
00:02:05
Résolution du 1er exercice : ordonner une chaîne de caractère
00:06:56
Résolution du 2ème exercice : créer une classe employé
00:10:24
3e exercice réalisé individuellement
00:15:03
4e exercice : Créer un gestionnaire de compte
00:20:26
5e exercice : Refactoring d'une classe
00:41:05
Question sur les paramètres de __init__