Session du 01 août 2024 à 19h00
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
Concevoir une bibliothèque en Python objet
Présentation d’un projet de gestion de bibliothèque en ligne de commande, pensé pour pratiquer la programmation orientée objet en Python sans framework.
00:00:00 :On va attendre un petit peu qu'il y ai du monde qui arrive avant de commencer la présentationdu projet. Si vous avez des questions ou quoi que ce soit n'hésitez pas.
00:00:12 :Je n'ai pas eu le temps de traiter ce qu'on a discuté.Tu n'as pas eu le temps de rechercher ? Non je n'ai pas eu le temps du tout.
00:00:20 :Ok ça marche, je vais continuer de me tenir au courant.Est-ce que vous avez des questions, des trucs que vous voulez aborder en particulier ?
00:00:35 :Moi je suis nouveau, je découvre, donc ça va être le premier.Ok ça marche, bienvenue à toi, bonsoir Yannick.Vous êtes juste un étudiant premium c'est ça ? Vous n'êtes pas dans le programme Toza ?
00:00:50 :Non.Ok ça marche. Et vous avez découvert le Redoxing comment du coup pour curiosité ?Moi sur Youtube d'Amy, je suis la formation plutôt complète.
00:01:01 :D'accord ok. Et c'est avec toi sur Youtube ?Ouais.Et toi Yannis ?Alors ça fait très longtemps franchement, j'ai un peu oublié parce que je l'ai découvert sur Youtube.
00:01:13 :Ça marche, ça marche. Bonsoir Waxx.N'oubliez pas de signer la feuille de présence que j'ai envoyée dans le chat.Et si vous avez des questions avant qu'on démarre tranquillement, n'hésitez pas.
00:01:30 :J'ai peut-être une question. Est-ce que le projet est abordable pour quelqu'un qui débute en Python ?Pour débutant débutant, pas trop je pense. Il faut déjà avoir un petit niveau et surtout un niveau en programmation 20 objets pour pouvoir le faire.
00:01:54 :Par contre j'ai besoin d'un autre langage. J'ai déjà un niveau dans un autre langage.Après le projet c'est de le faire en Python.C'est le but.
00:02:08 :Si tu as un niveau dans un autre langage, ce sera plus facile pour toi d'apprendre les concepts de Python.Parce que après ça reste un langage de programmation et même si tous les programmes de programmation sont différents,un langage de programmation reste un langage de programmation et tu retrouveras des concepts d'un langage à un autre.
00:02:25 :La façon d'apprendre restera globalement la même.Est-ce qu'il n'y a pas d'autres questions avant de commencer ?Pour faire un partage d'écran. C'est moi ou j'ai mon fond qui fait n'importe quoi ?
00:02:44 :Non, tu as ton fond qui fait n'importe quoi.Je ne peux pas y faire grand chose. Je ne sais pas ce qui se passe.Peut-être à cause de ça.
00:03:02 :Je vais faire un petit partage d'écran.Ok, nickel.Le projet, ça va être un projet où vous allez gérer une bibliothèque.C'est un peu le genre de projet que tout le monde connaît, je pense, sous format web.
00:03:30 :C'est quelque chose qui est assez abordable. On est en version web avec une interface graphique.Sauf que là, tout le challenge, c'est de le faire uniquement en ligne de commande et en programmation orientée objet.
00:03:43 :Sans utiliser de framework ou quoi que ce soit.Le but, c'est vraiment de tout faire en code brut, d'essayer d'optimiser ce code-là,et que l'application soit utilisable à 100% en ligne de commande.
00:03:55 :Donc, qu'est-ce que votre application doit faire ?Elle doit gérer une collection de livres.Donc, gérer de l'ajout à la suppression, mais aussi à la mise à jour de livres.
00:04:05 :Gérer des utilisateurs pour la bibliothèque.Que les utilisateurs puissent ensuite emprunter et retourner des livres.Bien évidemment, un livre qui est emprunté ne peut pas être emprunté par quelqu'un d'autre.
00:04:16 :Il doit attendre d'être retourné.Une fonction de recherche.Par exemple, vous voulez un livre par titre ou quoi, vous pouvez le rechercher dans votre base de données.
00:04:26 :Et une petite option, si jamais ça vous donne envie, de pouvoir générer des statistiques sur l'utilisation de la bibliothèque.Par exemple, quel est le livre le plus emprunté ou le plus lu ?
00:04:38 :Combien de personnes ont emprunté des livres ce mois-ci ?Quelle est la catégorie de livres ?Des statistiques, ça peut être intéressant.Je vous envoie d'ailleurs le lien, il est déjà disponible normalement sur Docs.Link.
00:04:52 :Je l'ai publié tout à l'heure.Comme ça, vous pouvez regarder à côté si vous voulez.Donc, on reste comme un truc assez basique.Pour ajouter un livre, vous lui donnez un titre, un auteur.
00:05:05 :L'ISBN, en gros, c'est le nom de la bibliothèque.Donc, c'est le nom de la bibliothèque.Pour ajouter un livre, vous lui donnez un titre, un auteur.
00:05:14 :L'ISBN, pour faire simple, c'est chaque livre dans le monde a un numéro unique.C'est un peu comme un identifiant.C'est l'identifiant des livres.Donc, vous pouvez les rechercher par l'identifiant.
00:05:27 :Par exemple, l'identifiant c'est 1, 2, 3, 4 pour le Roi Lion.Vous pouvez rechercher par l'identifiant.Du coup, ces identifiants-là, ça permet plus simplement de supprimer un livre ou d'en emprunter unau cas où il n'y a pas de faute de frappe ou de vérifier si le titre est bien le même.
00:05:43 :Au moins, avec un identifiant unique, on n'a pas ce souci-là à gérer.Ainsi que le type, est-ce que c'est un livre papier ou c'est un livre numérique.
00:05:51 :Totalement en PO, il n'y a pas de base de données aussi.Moi, je l'ai mis dans les suggestions.La base de données n'est pas obligatoire.
00:05:59 :Donc, si vous ne la faites pas, le seul inconvénient, c'est quetout ce que vous allez enregistrer, les utilisateurs, etc. vont être supprimés après chaque utilisation.
00:06:10 :Donc, si vous voulez les sauvegarder, il faut utiliser une base de données.Mais ça, vous pouvez très bien le faire en programmation.Vous pouvez le faire avec une base de données SQLiteou alors vous connectez une base de données en ligne et toujours en restant en POavec une base de données MySQL en ligne ou même avec une base de données Redis
00:06:30 :ou une Postgre, peu importe.Vous utilisez ce que vous voulez, mais vous pouvez utiliser une base de données tout en restant en PO.Ça ne pose pas de problème.
00:06:38 :Mais la base de données n'est pas obligatoire.Moi, je la conseille parce que c'est sympa quand même de garder, par exemple, ces statistiques dans la base de données,de ne pas avoir à remettre le livre à chaque fois, de ne pas avoir à recréer les utilisateurs à chaque utilisation.
00:06:51 :Mais ce n'est pas obligatoire.Voilà.Donc après, les utilisateurs, c'est simplement juste un nom, en fait.Donc voilà, un nom unique.Et après, quand vous empruntez un livre, il faut juste le nom de l'utilisateur et l'identifier en ligne du livre.
00:07:06 :Et pareil pour le retourner.Et donc, comme je l'ai dit tout à l'heure, un livre qui est déjà emprunté ne peut pas être emprunté par quelqu'un d'autre.
00:07:14 :Oui, vous avez le droit pour la BDD.C'est ça que vous voulez.Vous pouvez vous contenter d'une base de données SQLite toute simple.Vous pouvez containeriser votre application avec une base de données sous Docker.
00:07:25 :La base de données, ça peut être une Postgre ou MySQL ou Redis.Que ce soit locale ou distante, ça peut être ce que vous voulez.
00:07:33 :Peu importe.La recherche de livre, du coup, est de pouvoir le rechercher soit par titre, soit par auteur, soit par identifiant.Et quand vous listez les livres, vous voyez la liste de tous les livres disponibles et la liste de tous les livres empruntés.
00:07:48 :Et enfin, pour les statistiques, c'est optionnel, mais je vous ai mis des pistes.Par exemple, voir combien il y a de livres au total, combien sont empruntés, combien utilisateurs, quels sont les livres les plus empruntés.
00:07:59 :C'est des idées, mais vous pouvez en rajouter autant que vous voulez.C'est vraiment au bon vouloir de chacun.Au niveau de l'architecture, là c'est des choses un petit peu plus techniques côté PO.
00:08:17 :L'utilisation d'un singleton pour gérer l'ensemble de la bibliothèque.Les principes de base de la PO à utiliser, c'est-à-dire l'encapsulation, l'héritage, le polymorphisme et l'abstraction.Tous ces termes-là, si c'est peut-être un petit peu abstrait et compliqué pour vous, vous pouvez tous les retrouver sur Docstring, ils sont très bien expliqués.
00:08:38 :Et aussi un des autres intérêts de ce projet-là, c'est de voir ce qui est possible à faire au niveau optimisation.Déjà d'utiliser les bonnes structures de données adaptées pour optimiser les recherches et les mises à jour.
00:08:51 :À ce moment-là, je vous renvoie sur l'article sur l'optimisation et sur la complexité logarithmique que j'ai fait.Je pourrais vous retrouver le lien si vous voulez.
00:09:00 :Ça va peut-être vous intéresser.Il y avait celui-là et je crois qu'il y en avait un autre aussi.C'était celui-là. Je vous mets le lien.
00:09:24 :C'est un article qui explique la notion de complexité algorithmique et qui explique les différences de complexité au niveau optimisationentre les listes, les dictionnaires, les sets, etc.
00:09:35 :Ça pourra vous guider sur le bon choix de structures de données adaptées,parce que suivant le type de structure de données que vous allez choisir,ça peut très bien mettre une demi-seconde à chercher un livre dans une base de données de 1000 livres,comme ça pourrait vous prendre 5 minutes si vous utilisez la mauvaise chose.
00:09:54 :Faites attention à ça.Et pareil, essayez de chercher les différentes méthodes d'implémentationpour voir ce qui est le plus efficace au niveau de votre code, au niveau optimisation.
00:10:05 :Après, vous pouvez utiliser tous les principes d'utilisation que vous voulez.Plus il y en a, mieux c'est que vous avez compris le concept d'optimisation.C'est un peu le but du projet.
00:10:17 :Vous devez l'utiliser intégralement en ligne de commande,c'est-à-dire que quand vous exécutez votre projet dans le terminal,ça doit être quelque chose de cette forme-là,où vous tapez 1 pour ajouter un livre,après vous avez tout le menu textuel avec des inputs.
00:10:31 :Donc voilà, c'est vraiment tout en ligne de commande,pas d'interface graphique, pas d'interface web,c'est vraiment ligne de commande interactif.J'ai mis des suggestions en bas,vous pouvez très bien utiliser des librairies comme ClickTyper ou ArcParsepour justement vous faciliter un petit peu la vie avec votre interface dans le terminal.
00:10:49 :Voilà pour l'utilisation en ligne de commande.Et après, bien évidemment, votre code doit être commentépour expliquer les fonctionnalités et les choix que vous avez faitset fournir une documentation technique,un guide pour expliquer comment utiliser l'application.
00:11:06 :Vous devez également implémenter des testspour vérifier le bon fonctionnement des différentes méthodes,pour vérifier que tout fonctionne bien ensemble.C'est aussi un petit peu pour éviter un peu les copier-coller de ChatGPTparce que je peux vous assurer qu'on le remarquera sur cette partie-là,si c'est fait par ChatGPT.
00:11:32 :Après, vous pouvez le faire, vous faites ce que vous voulez,ce n'est pas noté ou quoi.Vous pouvez très bien vous aider de ChatGPT,mais le but d'un projet, c'est quand même de prendre mon compétence,d'apprendre et d'en ressortir un petit peu grandi.
00:11:46 :Pour moi, savoir documenter son projet,que ce soit aussi bien au niveau des commentairesque fournir un guide pour qu'il explique comment l'utiliser,ça montre qu'on comprend ce qu'on code,qu'on comprend son code et qu'on sait l'expliquer à quelqu'un d'autre.
00:12:00 :Pareil, mener des tests, on s'assure du bon fonctionnement de notre codeet qu'il marche bien comme on le souhaite.Je trouve que ce sont des choses qui sont importantes dans les projets.
00:12:10 :C'est peut-être une partie un petit peu reloue pour certains,mais je pense que tout projet a besoin d'une documentation et de testspour être un projet un peu final.
00:12:23 :Au niveau des critères,utiliser une version assez récente de Python.J'ai mis à partir de 3.7.10.Utiliser les concepts APU que j'ai notés plus haut.
00:12:34 :Faire attention à la séparation des responsabilités.Utiliser les bons algorithmes et structures de données efficacesau niveau de l'optimisation.Un code propre commenté.Les fonctionnalités soient logiques.
00:12:47 :Que vous gérez les différentes erreurs.Que votre code soit robuste.Que ce soit utilisable par ligne de commande.Et au niveau des libraires, le code source, la documentation.
00:12:57 :Et si vous avez fait des statistiques, votre rapport de statistiques.Mais ça c'est optionnel, c'est si vous le souhaitez.Et voilà, on a fait un petit peu le tour.
00:13:06 :Si vous voulez participer, vous avez le bouton participer.Et du coup, comme c'est quand même un gros projet,d'habitude les projets mensuels c'est un mois pour les réaliser.
00:13:16 :Celui-là, du coup, on a mis deux mois.Parce que c'est quand même un assez gros projet.Parce qu'il y en a qui ont le Tosa, etc. à côté.
00:13:23 :Donc on a mis deux mois.Comme ça vous avez un petit peu plus de temps pour le faire tranquillement.Vous êtes un peu plus large.
00:13:31 :Alors quand tu parles de test concrètement, tu testes comment ton code.En l'utilisant pendant que tu le codes, ce n'est pas suffisant.Non, moi quand je parle de tests unitaires,il faut utiliser une bibliothèque de tests unitaires.
00:13:41 :Donc Unitest, c'en est un exemple.Il y en a d'autres.Moi je vais renvoyer par Vertac ceci.Je vous envoie le lien.Vous avez une mini formation avec D-Shell Trapitsur comment faire des tests unitaires en Python.
00:13:55 :C'est très intéressant parce que c'est quelque chosequ'on va vous demander obligatoirement en entreprise.Pour avoir bossé chez Orange, même démission freelance,on vous demande que votre code, il y a des tests,même quand vous êtes en cours en études supérieures,même au Canada, on vous demande que votre code ait des tests.
00:14:16 :Parce que comme ça, l'examinateur, votre supérieur, votre responsable d'équipe,il n'a pas besoin d'aller tester lui-même le codeet de vérifier est-ce que tout est bon avant de le mettre en production.
00:14:28 :Par exemple, vous avez directement vos tests unitaires,il a juste à les rouler et s'il voit que tout est en marcheet que les tests sont corrects,il peut directement les mettre en production et tout le monde gagne du temps.
00:14:38 :Donc là, vous avez un bon chapitrage au niveau des tests unitairesavec des issues en bibliothèque, unitest, pittest, doctest.Il y a pas mal de bibliothèques pour faire des tests.
00:14:51 :Utilisez celles que vous préférez.Mais l'idée, c'est de faire des tests unitaires.Il y a plein de façons de les faire.Chacun fait ça un petit peu à sa manière.
00:14:59 :Mais le tout, c'est de l'enfer.Est-ce qu'il y a des questions sur le projet en lui-même ?Bonsoir Simon.On aura comme les challenges un mentor ?
00:15:31 :Non, du tout.Ce n'est pas du tout la même chose ni le même principe.Les challenges, c'est ouvert à tout le monde sur Discordet vous avez un mentor à s'y créer.
00:15:39 :Là, les projets mensuels, c'est uniquement pour les étudiants Premium et Tosa.Et c'est vraiment un truc en autonomieoù on essaye de vraiment vous reproduire quelque chose qui s'apparente à de l'entreprise.
00:15:50 :Pour vous donner un exemple des anciens projets mensuels qu'il y avait,c'était des trucs plus au niveau Django.Par exemple, gérer un forum,faire un marketplace d'échange de vêtements,donc un truc un peu e-commerce, un SAS.
00:16:04 :C'est le genre.On essaie de vous mettre en place des projets assez concretsqui vont utiliser plein de concepts de Pythonque vous allez forcément utiliser en entreprise.
00:16:12 :Quelque chose qui se ressemble à un projet qu'on pourrait vous donner en entreprise.Le but, c'est d'être en autonomie.Après, vous pouvez utiliser YouTube.Vous avez à disposition tout Internet que vous voulez,chaque GPT si vous voulez vous aider.
00:16:26 :Attention quand même, je précise toujours chaque GPT.Le but, c'est qu'ils ne fassent pas tout à votre place.Le but, c'est quand même de prendre en compréhension et d'apprendre.
00:16:33 :Par contre, l'utiliser comme assistant, c'est une très bonne chose.Vous avez YouTube, vous avez toutes les formations sur Doctrine,les différents liens que je vous ai envoyés pour vous aider.
00:16:41 :Vous avez deux mois au lieu d'un.Il n'y a pas de pression à se mettre.Ce n'est pas noté.Chacun va à son rythme.Même si vous ne terminez pas le projet au bout des deux mois, ce n'est pas grave.
00:16:50 :Et pareil, si jamais vous avez des questions,on reste disponible sur Discord ou sur le site.Mais ce n'est pas du Mentorat à titrer comme les Challenges par exemple.
00:16:58 :Mais si vous avez des questions ou quoi que ce soit,il n'y a aucun souci là-dessus, on vous aidera.Salut, je passe en coup de vent.
00:17:04 :Désolé, je suivrai l'héritage.Attention, il n'y a pas de souci, Simon.Ce sera disponible.Une fois terminé, une personne nous fera un retour sur notre travail.
00:17:12 :Oui, sûrement au mois,mais ça peut très bien être Gabriel ou Thibaut s'ils ont le temps.Mais si tu veux, je vais reprendre un ancien.
00:17:21 :Ici, une fois que c'est terminé, il y a tous les projets des étudiants.Et donc, tu as le dépôt Git pour le dépôt du source code.
00:17:29 :Un autre des intérêts de ces projets mensuels,c'est que c'est un projet que vous pouvez mettre sur votre portfolio,sur votre GitHub, que vous pouvez présenter en entretien.
00:17:38 :C'est vraiment un assez gros projet concretqui montre que vous maîtrisez beaucoup d'aspects de la programmation en Python.Donc, ça peut être un gros avantage de montrer ce projet-là en entretienpour vous faire recruter pour votre portfolio.
00:17:53 :Une fois que vous avez déposé votre projet,vous pouvez mettre la description du projet ou le Git un petit peu ici.Vous pouvez mettre le GitLab.
00:18:02 :Et du coup, nous, on y a accès.Et moi, je pourrais vous faire un retour soit en mentorat,soit je vous ferai un retour écrit.
00:18:08 :Après, ça dépendra de chacun.S'il y en a qui ne préfèrent pas avoir un retour en public,dans un mentorat, il n'y a pas de souci.
00:18:16 :Moi, je vous ferai le retour en privé.Et pour ceux que ça ne dérange pas,je vous ferai le retour en live, en mentorat,où je vous regarde justement un petit peu tous les projets.
00:18:25 :Ça peut être intéressant.Vous voyez là, par exemple, une petite description des projets.Il y a vraiment beaucoup de bonnes raisons de faire ce projet-làet de tester.
00:18:39 :Même si vous ne pensez pas avoir les compétences,c'est quelque chose que vous pouvez faire un petit peu en side project.Petit à petit, de moi, vous avez vraiment le temps.
00:18:46 :Donc, même si vous êtes toujours en train d'apprendre, par exemple, le Python,Arwa, que je vous disais tout à l'heure,pour l'instant, tu ne maîtrises pas encore l'APO,tu peux très bien jeter un coup d'œil,continuer ta formation côté Python.
00:18:57 :Et puis, dès que tu attaques un petit peu l'APO,tu commences tranquillement le projet.Et puis, tu avances à ton rythme, même si tu ne termines pas à la fin.
00:19:04 :Même si tu avances juste un petit peu,au moins, tu auras testé un petit peu les concepts que tu as appris.Ça permet de mettre un petit peu en applicationce que vous apprenez dans la formation.
00:19:13 :Donc, c'est important aussi de faire quelque chose de concretavec les connaissances que vous avez apprises.Si vous voulez, je ne sais pas si il y a d'autres questions,mais je peux vous montrer un petit exemple.
00:19:31 :J'ai préparé un petit début.Ça ne respecte pas 100% du truc parce que je n'ai pas eu le temps,mais ça respecte un bon 60-70%et ça vous donne une petite idée de ce que j'attends à peu près.
00:19:42 :Je regarde juste s'il y a des questions avant que je vous montre la démo.Je ne sais pas vous montrer le code, par contre.Ce n'est pas le but.
00:19:52 :Est-ce qu'il y a des questions avant que je fasse la petite démo ?Là, je n'ai pas de base de données, par exemple.J'ai fait vraiment le truc de base.
00:20:03 :C'est juste pour vous donner une idée.S'il n'y a pas de questions, je vais vous montrer.Vous avez votre interface via terminal.Vous choisissez une option de 1 à 9.
00:20:22 :Par exemple, je vais commencer par ajouter un utilisateur.Nom de l'utilisateur.L'utilisateur a été ajouté.Maintenant, je vais ajouter un livre.Je mets son titre. Le Roi Lion.
00:20:34 :Le fameux Roi Lion de Spielberg.Je ne sais pas si vous le connaissez, celui-là.Et ISBN. Je ne l'ai pas en tête,l'ISBN du Roi Lion.
00:20:42 :Je vais vous montrer, si jamais, un ISBN.Le Roi Lion ISBN.Je pense que ça se trouve sur Internet assez facilement.En gros, c'est ça, les ISBN.
00:20:51 :Après, vous en avez suivant la reliure,suivant l'éditeur.Vous en prenez un au pif.Vous mettez un truc, 1, 2, 3, 4, 5.Le tout, c'est d'avoir un identifiant unique.
00:21:02 :C'est surtout le but.Là, je vais mettre 1, 2, 3, 4, 5. On s'en fiche un peu.Numérique.Là, j'ai le musicien.Le Roi Lion.
00:21:16 :En PDF.On s'en fiche.Maintenant, par exemple, si je lise mes livres,j'ai bien le Roi Lion de Spielberg avec son ISBN.Je peux l'emprunter.
00:21:26 :Je tape son ISBN.Le nom d'utilisateur qui veut l'emprunter.Le livre emprunté avec succès.Maintenant, imaginons que j'utilise un autre utilisateur.Par exemple, Thibault.Et que Thibault veut emprunter le Roi Lion.
00:21:40 :4, 5.Ça ne va me mettrequ'une erreur.Parce qu'il est déjà emprunté.Échec de l'emprunt.C'est un type d'erreur qu'il faut gérer.On ne peut pas le ré-emprunter.
00:21:54 :Si je veux rajouter un livreavec le même ISBN,ça ne devrait pas être possible.Là, je ne vais pas gérer l'erreur.C'est comme ça, en avançant,dans son compte qu'on voit.
00:22:10 :Je n'ai pas eu le temps de finir à 100% le cahier des charges.C'était surtout pour faire une démo.Là, par exemple, je me retrouve avecun deuxième livre qui a le même ISBN.
00:22:20 :Ça pose problème.Là, je peux retourner mon livre.Je remets celui qui est en tournée.Et là, il met échelle du retour.Il y a une erreur.
00:22:32 :Il y a un conflit.Je vais le supprimer.Est-ce que je peux le retourner ensuite ?Comme j'en ai créé deux,je n'ai pas géré l'erreur.
00:22:48 :On va s'en rajouter un.Question con, le deuxième que tu as créén'a pas écrasé le premier.Donc, le résultat n'existe plus.C'est possible.C'est totalement possible que ça ait fait ça.
00:23:00 :C'est une des erreurs que vous devez gérer dans votre projet.Comme je l'ai dit, c'est 50-60% du projet final.C'est juste pour vous donner une idée.
00:23:10 :Vous pouvez rechercher un livre.Par exemple, je vais le rechercher par ISBN.Il va me dire que je l'ai trouvé.Je peux évidemment le supprimer.
00:23:22 :Mais là, on ne va pas le faire tout de suite.On va le faire à la fin.Je vais rajouter un autre livre.Toy Story.
00:23:32 :On va mettre un, deux, trois, quatre, cinq, six.Si j'affiche mes statistiques,j'ai deux livres, deux utilisateurs,mais zéro livre emprunté.Maintenant, on va en réemprunter un.
00:23:50 :Un, deux, trois, quatre, cinq.Je raffiche maintenant mes statistiques.Vous voyez que maintenant,ça me met que j'ai un livre emprunté.C'est le genre de statistiques que vous pouvez faire.
00:24:00 :Ce ne sont pas des statistiques de fou,mais après, ces statistiques-là,vous pouvez très bien les utiliserpour ceux qui font un peu de data analysis,si ça vous intéresse,pour faire des graphiques ou des trucs un peu stylés.
00:24:12 :Pour ceux qui travaillent,qui veulent travailler dans l'analyse de donnéesou ce genre de choses,c'est un petit plus à votre projetqui pourrait être utile pour votre portfolio.
00:24:22 :Je donne des pistes, je donne des idées.Après, chacun fait un petit peu ce qu'il veut à sa sauce.Vous avez un peu une base de projet,un bon cahier des charges de base,mais j'aime bien donnerun certain degré de libertésur certains points du projetpour que ce ne soit pas
00:24:38 :le même truc à 100%et que tout le monde mûrchit le même code,que là, chacun puisse y ajouter un petit peu sa pâte.Si quelqu'un veut utiliserDocker ou pas Docker,quelqu'un utilise MySQL ou Postgre,quelqu'un fait des stats et pas l'autre,chacun peut quand mêmeun petit peu customiser le projet à sa sauce.
00:24:56 :Pareil, j'ai donné des exemples de bibliothèquespour gérer le terminal différent.Voilà, chacun peut le faireun petit peu à sa sauce.Du coup, maintenant, je vais retourner mon livre.
00:25:06 :Voilà, vous voyez,le livre a été retourné avec succès.Par exemple,maintenant, je peux aussi supprimer un livre.Maintenant, si je vais dans les statistiques,il n'y en a plus qu'un seul.
00:25:18 :Voilà un petit peu pour la démo du projet.Est-ce qu'il y a des questions ?Oui, on le trouve où sur Docstring ?Alors, je vais vous montrer ça.
00:25:30 :Vous allez dansaccompagnement,projet mensuelet gestion de la bibliothèque, normalement, il est là.Oui, super, merci.Vous avez en cours et après, si vous voulez participer,vous faites hop, je participe.
00:25:44 :Et après, du coup, voilà,vous pouvez mettre une image de présentation,votre description du projet,le lien vers le GitHubet vous allez pouvoirvous mettre dans le projet.
00:25:58 :Le lien vers le GitHub,et là, le site web en question, il n'y en a pas,donc vous n'en mettez pas.Et sinon, vous mettez le lien de votre GitHub,au pire. Mais voilà, comme ça,
00:26:08 :vous aurez le lien en roule, code source,je ne vous le demande pas sous forme de fichier.Le but, c'est que ce soit sur votre GitHub, pour que ce soit utilepour vous aussi, pour votre portfolio,ou pour quoi que ce soit.
00:26:18 :Pensez à mettre votre GitHub en public, par contre.Donc, voilà.Je ne crois pas avoir très bien comprisl'utilité de l'utilisateur, ici.Tout le monde peut supprimern'importe quel livre,il suffit juste de mettre le nom.
00:26:34 :Ouais, là, en gros,j'ai juste fait un truc simple.Juste, en gros, le nomsert juste pour les emprunts, et pourtourner des livres.Mais après, tu peux très bien pousser le truc.
00:26:46 :Comme je disais, je laisse un certain degré de liberté.Si tu sens que tu as le temps, etc.,tu peux très bien faire un truc d'utilisateur poussé,avec, par exemple, des administrateurset des étudiants, tu vois.
00:26:56 :C'est le genre de truc qu'on peut voir un peu plus facilement,et c'est plus facile à faire, aussi,sur des interfaces web, où tu faisun interface administrateur et une interfaceutilisateur. Sur un terminal,
00:27:06 :c'est quelque chose qui est un petit peu plus compliqué à faire,donc c'est pour ça que je ne l'ai pas mis.Le but, c'est que ce ne soit pas un projet qui soit trop compliqué,ou qu'il n'y ait que trois personnes qui puissent le faire, non plus.
00:27:14 :Mais, si tu te sens le faire,et que tu sais à peu près comment le faire,moi, il n'y a aucun problème à ce que tume fasses un des...
00:27:22 :Tu différencies tes utilisateursen administrateurs ou pas administrateurs,et qu'il n'y a, par exemple, que les administrateursqui puissent ajouter et supprimer des livres,et que les étudiants ne puissent qu'enemprunter, regarder les statistiques,ou les lister, tu vois.
00:27:36 :Ça peut être une piste, aussi, d'aller plus loin.Ok, ok, je vois, merci.On peut même le rajouter dedans, ouais.Hop, voilà.Petite suggestion, en plus.
00:27:56 :Hop.Ça s'est passé au regardé, c'est pas grave, je le rajouterai plus tard.Euh, si y a des questions.Hop.Hop, hop.Hop.C'est bon, tac.
00:29:02 :Hum, ah ok, c'est pour ça.Hop.Ok, c'est bon, tac.En plus, y a des questions.Euh, ClickTyper et ArcParse, c'est quoi ?Euh, c'est qu'on s'appelle...
00:29:36 :Hop.Vous avez des liens, là.C'est, en fait, des packages Pythonpour créer des lignes de commandeun peu plus sympas.En gros, pour faire une interface en ligne de commandequi est un petit peu plus sympa.
00:29:50 :Donc, ClickTyper et ArcParse.ArcParse, c'est pas vraimentune bibliothèque, c'est un module de Pythonde base.Donc, pour gérer, en fait, des différentsarguments et donc faireun truc un peu plus clairet propre niveau code.
00:30:06 :Alors que Typeret Click, c'est vraiment despackages pourfaire des CLI, en grosdes terminaux un petit peu plus sympas,plus intuitifs à utiliser, si vous voulez.
00:30:18 :Je ne sais pas s'ils mettent des exemples sur leur site,mais...Tu vois, par exemple, tu peux faire des petits trucscomme ça.Tu as moyen de rendre un petitpeu plus lowly ton interface utilisateur, en fait.
00:30:32 :Je ne crois pas qu'il y ait d'exemple.Non, il n'y en apas.Enfin, vous pouvez allerregarder ce qui vous plaît, maisc'est juste en gros pour...
00:30:48 :Si jamais vous voulez pareil, encore toujoursdans l'idée d'aller un peu plus loin, au lieud'avoir un truc simple comme ça, vous pouvezfaire un truc un petit peu plus joli, un petit peu plussympa à utiliser.
00:30:58 :Voilà. Il vaut mieux utiliserTyper parce que sur Dockstring,il y a une formation de Thibaut surTyper, alors que Click, c'est un peu plusaustère. Bah tiens,
00:31:08 :très bonne suggestion. Est-ce qu'il y a le...Ah bah tiens, hop.Je vous mets le lien et je vais même le mettresur le projet aussi.
00:31:16 :Hop.Tac.Merci de l'info.Tac.Hop, parfait.Voilà.Vous avez le lien directement dessus,ici.Tu peux expliquerSingleton ? Alors,bon pareil, ça c'est un trucqui doit être sur...
00:32:08 :Hop, tiens.Il y a un glossaire à ce sujet.Ça vaudra mieuxque mille mots.Je ne sais passi tu avais ma question, maisj'ai demandé si tu utilisaisPowerShell sur Windows.
00:32:28 :Pour les commandes que ce soitcelles de Windows ou même Python et tout.Quand on a plusieurs versions et tout.Les commandesà quel niveau ? Juste genre pour se déplacer
00:32:40 :dans le terminal et tout ? Genre un peu comme une formationpour mon Linux ?Oui, un peu de tout. Je ne sais pasle plus important quel'utiliser.
00:32:50 :Alors, ouais, j'utilisePowerShell sur mon Windows. Après, je t'avoueque c'est quand même vachement limité par rapport àLinux niveau commandes.Après, tu as des commandes qui ressemblentà Linux, genre par exemple pour te déplacerpour te déplacer d'un dossier à un autre,c'est CD, c'est comme sur Linux.
00:33:06 :Si tu veux éclairer ton terminal,par exemple, ça va être CLS au lieu deC. Je n'ai pas deformation en tête. J'avoue que moi, c'est juste que j'utilise Windows
00:33:14 :depuis 10 ans, maisje n'ai pasde formation en tête à te donner.Je ne suis pas sûr que Thibault utilise Linuxau max sur sa formation.
00:33:24 :Pourquoitu utilises PowerShellet pas GitBash ?Parce que dans GitBash, tu peux mettre quasimenttoutes les commandes de Linux.Parce que je suis sur Windows.
00:33:36 :Ce PC-là, ce n'est pas le PCavec lequel je développe professionnellement.Je suis sur Mac sinon.Je suis sur Linux 90% du temps quand je dev.
00:33:44 :Je suis sur Unix.En gros, là, c'est justepour plupart du temps,je suis en train de jouer ou je suis en train defaire des petits projets ou quoi, et du coup, ça me suffit largement.
00:33:54 :Je ne fais pas mes grosprojets ni rien là-dessus, donc ça ne me dérangepas.Je vais poser la question à Jimmy.Je ne sais plus si c'est Jimmy.
00:34:04 :C'est vrai qu'il peututiliser GitBash, oui.C'est quoi la question ?Non, c'était Yannick qui a posé la question.Il y a quelques problèmes sur GitBash quand même.
00:34:14 :Parce que parfois, ça bugaussi chez moi, GitBash, et il y a aussile problème des slash, anti-slashsur Windows.Autant utiliserle terminal Windows quand on code sur Windows,je pense.
00:34:28 :Après,j'imagine qu'il y a... Enfin, moi, j'utilise...Je n'utilise pas le PowerShellpar défaut. J'utilise un terminalun poil plus avancé.Mais j'imagine que commeiTerm2, par exemple, sur Mac, tu dois sûrementavoir des terminals pour Windowsqui sont un peu plussympas à utiliser, avec des aidesau niveau des commandes et tout.
00:34:50 :Je sais que sur Mac, par exemple,tu as iTerm2 ou tu as Termusqui fait aussi des trucs de SSHet tout. J'imagine que sur Windows, tu dois en avoir aussi
00:34:58 :qui peuvent t'aider au niveau descommandes et tout ça. Souvent, tu as des trucsun peu customcomme ça, où déjà, tu peux choisirle visuel de ton truc, mais aussien plus, tu peux avoir des aides au niveau des commandes.
00:35:10 :Il y en a qui ont peut-être une AI intégréeoù tu as juste à poser ta question« Comment je copie un fichier d'un endroità un autre ? » et il va te donner la commande pour le faire.
00:35:18 :Je sais qu'il y a des terminaux qui font ça.J'imagine qu'il doit en avoir aussisur Windows.Je n'ai pas de nom en tête à te donner, maisje pense que ça doit se trouver.
00:35:28 :Un truc un peudans ce style-là. Ça, c'est vraiment un truc basique,mais voilà.Après,je peux choisir si je passe en CMD, en PowerShelloulà, je suis sous PowerShell 7,maisil y a des trucs différents.
00:35:46 :Moi, je suis sous Windowset j'utilise Git Bashet je n'ai pas de problème particulieravec les Slash et les Anti-Slash.Dans quel contexte,Yanis, tu as des problèmes avec les Slashet les Anti-Slash ?
00:36:00 :Parfois, c'est quand je metsun chemin directement,un chemin absolu,que je mets un C et un chemin absolu.Il y a souvent un problème avec ça.
00:36:10 :Ah oui, sur Windows,les Slash sont inversés pour les chemins.Ce qu'il faut, c'est les échapper souvent,parce quele T pour tabulation,si tu échappes pas le Slash avant, ça ne marche passur le chemin.
00:36:24 :Peut-être qu'il faut prendre le coup de mettre deux Slashsur Windows.Ça rajoute un truc en plus.C'est quand tu écrisles chemins dans un script Pythonou directement dans le terminal ?
00:36:36 :Dans le script Python,je mets un Slashnormal, comme surMac ou Linux, et je n'ai pas de problème.Mais quand je suis dans le terminal,là, il y a un problèmequand je fais un C.
00:36:50 :Dans le terminal, sur Windows,les Slash sont inversés pour déplacer.Mais si tu le faisen échappé,avec des guillemets, normalement,tu dois pouvoir le mettre dans l'autre sens de tête.
00:37:02 :Ça peut être testé,mais si je prendsun dossier au pif,hop.Je mets tout le temps des guillemetsparce qu'il y a souvent des espacesdans mes chemins.
00:37:16 :Et je faisdes copier-coller depuis l'explorateurde Windows avecun clic droitet copier le chemin.Il faut copier en tant que chemin d'accèsou un truc comme ça.
00:37:30 :Et avec les guillemets,je n'ai jamais de problème.En fait, tu peux faire les deux.Par contre, ça,je ne suis pas sûr que ça marche.
00:37:40 :Je n'ai jamais essayé avec les guillemets.J'ai l'habituded'inverser les Slash.Je vais faire Hit Develop.Normalement, est-ce que ça marche ?Tu vois, les deux marchent.
00:38:02 :Après, ça dépend du terminal.Au pire, dans les cas,tu mets des guillemets et ça passe.Je ne connaissais pas ça.C'est bon à savoir.
00:38:14 :Comme tu le fais dans Python.OK.Est-ce qu'il y a des questions ?Avant qu'on fasse un ou deux petits exercices.Je ne sais pas si il y en aqui ont des derniers exercicesque vous auriez aimé voir.
00:38:34 :On a peut-être le temps d'en faire un ou deux.Merci.Merci, bonne soirée à toi, Simon.Est-ce qu'il y a des sujets,que ce soit les dictionnaires,l'Orienté Objet, les listes,ou un truc sur lesquels vous avez un peu plus de malet que vous auriez bien voulu voir un exercice
00:39:10 :en particulier ?Orienté Objet,ça peut être sympa vu qu'après,il y a le projet.Je ne sais pas, c'est quoi votre niveau ?Je pense que le niveau est assez originel en Orienté Objetparce qu'Arwax m'a dit qu'il n'y en avait presque pas fait.
00:39:28 :Les autres, vous êtes comment au niveau de l'Orienté Objet ?Vous êtes plutôt débutant ou plutôt avancé ?Débutant.Débutant, et Jimmy Yanis ?Pas vraiment débutant,maisil y a un conceptque j'oublie souvent parce qu'on ne l'utilise pas trop,commece qu'est encapsulation.
00:39:50 :On ne l'utilise pas trop dans Django,donc je les oublie très souvent.Est-ce que j'ai quelque chose sur l'encapsulation ?Non.Ça, ça va être un peu trop gros.
00:40:18 :Il y a un truc sur l'encapsulation,mais il est un peu gros.Il y a un truc, par contre,que je n'arrive pas très bien à comprendre,c'est les arcs et les quarks.
00:40:40 :Les quarks !Alors ça, je les ai expliqués dans un mentorat,il n'y a pas si longtemps que ça. Est-ce que j'ai un exercice là-dessus ?
00:40:48 :Ça peut être intéressant, à la limite.Oui, je l'avais fait. On peut le refaire aussi,ce n'est pas trop grave.L'encapsulation, je l'avais fait aussi.
00:40:58 :Ok, bon, j'en ai pas mal là. On va voir,niveau temps, comment on est.Ok, donc déjà,on va refaire un truc un peu classique.
00:41:06 :Je vois quelqu'un qui vient de rejoindre.Bonsoir, c'est là.On va refaire ça.Je ne peux pas effacer ma progression, là ?Voilà, on va le refaire.
00:41:32 :Ok, donc vraiment,truc de base, on va créernotre première classe.Juste histoire de revoir un petit peupour les deuxqui n'ont presquepas fait le PO.
00:41:46 :Après, on verra vite fait les quarks.Et je verrai si on a le tempspour faire l'encapsulation.Du coup, on créeune classe. C'est qui qui a dit qu'il n'y avait jamais fait ?
00:41:58 :Je crois que c'était Cédric et Arabax.Est-ce quevous savez comment, déjà, juste de base,on définit une classecomme ça,en Python ?Comment on gère les attributs,etc.
00:42:14 :Est-ce que vous avez déjàune petite piste ?Init, ouais, c'est une des trucs qu'on va utiliser.J'ai encore mon fond qui fait n'importe quoi.
00:42:22 :Init, ça va être utilisé, ouais.Bonsoir, Wilfried.Première chose, déjà.Comment on crée notre classe ?Notre classe qui doit s'appelerlivre. On va l'appeler livre
00:42:38 :puisqu'on gère des livres.Non.Def, c'est uniquementpour des fonctions. Pour définir une classe,c'est ce qu'Arabax a mis. On utilise le motclé classe.
00:42:52 :Classe, livre.Attention, là où lesfonctions, les variables, en général, en Python,on commence toujours par une minuscule.Là, c'est l'inverse. Pour les classes, on commence
00:43:02 :toujours par une majuscule pour le nom de votre classe.Très importante à savoir.Ensuite, du coup,c'est la fameuse fonction initdont parlaitArabax. La fonction init,
00:43:14 :on écrit comme ça, tiretiret du bas, init,tiretiret du bas.Elle prend déjà un premier argument obligatoirequi est l'argument selfqui, en fait,c'est pour s'auto-désigneret créer ses propres argumentsd'instance. Dans le sens
00:43:30 :où ce sera les attributs de classepour les objetsqui hériteront de cette classe.Je vais m'expliqueravec les trucs qui vont arriver.Là, en l'occurrence, on veutun nom,le nombre de pages. Je vais copier-coller.
00:43:46 :Vous avez à gauchele prix.Vous me dites si je vais trop vite.Pour les définir,c'est tout simple.C'est avec le mot clé self comme je vous l'ai dit.
00:43:58 :Pour définirle nom,on définitle nom dema classe.Avec le init, c'est quand on vacréer un objet de typeclasse libre, cet objet-làva être initialisé.
00:44:16 :Son attribut de nom,le sien, avec self,sera initialisé à la valeurqu'on va lui donner en paramètre,donc est égale à nom.Est-ce que c'est clair la façon dont je l'ai expliqué ?
00:44:28 :Je réexplique.Le self vient désignerl'argument,les attributsde l'objet qui sera crééà partir de la classe. Par exemple,je veux créer un objet. On va voir comment on fait juste après.
00:44:44 :Ce qu'on appelle une instance d'objet.Notre instance d'objet va être égale àlivre. On va l'initialiseravec des paramètres. Par exemple, le nom,on va le voir juste après à Harry Potter.
00:44:56 :On dit que le nom del'objet va être égal au nom qu'on lui passe en paramètre.Là, par exemple, je vais le fairepour les trois. Self.nombreDePage
00:45:04 :égale nombreDePageet self.prixégale prix.Tout simplement. Maintenant, pour créerune instance, c'est-à-dire que vous créez un objetavec la classe.L'instance, si on vous donneles noms, c'est tout simple.
00:45:20 :Vous donnez le nom que vous voulez à votre instance.Votre instance est égale àvotre classe.Si vous n'avez pas de paramètre là,vous pouvez vous contenter de juste mettre des parenthèses.
00:45:30 :Et ça va créer votre instance d'objet.Juste, elle n'aura pasde valeur. Par exemple, si je fais ça comme çaet que je veux afficherpar exemple, livreHP.nom
00:45:42 :Vous voyez que là, j'ai une erreur.Parce qu'on lui demandedes paramètres.Ils sont obligatoires en fait, ces paramètres.C'est comme si on faisait une fonction classique.
00:45:54 :Ici, on oblige des paramètres.Mais si j'aurais faitImaginez que j'aurais mis rien de tout ça.Et que j'aurais misself.nom égaleà Harry Potter.
00:46:08 :On va commenter ça.Et bien là,ça marche. On peut aussi définir par défautsans demander obligatoirement des paramètres.C'est les deux façons de faire.
00:46:18 :Nous, dans notre cas, on demande des paramètres.Je vais le refaire.C'est comme une fonction classique. Vous mettez vos paramètres.On récupère la valeur des paramètresdans l'attribut localde l'objet. Et du coup, ce qui fait
00:46:30 :que maintenant, pourdire que le nomsera Harry Potter, je metsjuste ici mes valeursà la suite dans l'ordre.J'ai mis un slash au lieu de mettre une virgule.
00:46:46 :Et donc là,si je fais.Nombre de pageset .Ri.Et là, je fais ça.Vous voyez qu'il a récupéréles valeurs que je lui ai données.
00:47:04 :En fait, je crée une instance d'objetet je lui précise les valeurs obligatoiresque j'ai demandées quand j'ai créé ma classe.Et du coup,ces valeurs-là sont récupéréesdans l'attribut de l'objet.
00:47:16 :On récupère la valeur qu'on lui donne en paramètreà sa création. Et d'ailleurs, on peutles afficher avec le nom de votreinstance d'objet, soitl'attribut de classe, ici par exemplenom, et ça a la valeurdu nom qu'on lui a donné ici,qui est ici. Est-ce que c'est clair ?
00:47:32 :Ça, c'est vraimentla base de comment créer une classe.C'est clair aussi, Airwax ?...J'ai du mal à comprendre la différence avec les fonctions,ça a l'air d'être pareil.
00:47:56 :Alors, oui et non.Ta classe, là,ce n'est pas une fonction.Mais dans une classe,tu crées des méthodes, des fonctions.Et la méthode ou la fonction initest obligatoire.
00:48:10 :Cette méthode-là, c'est la méthodequi permet de créer les paramètres,les attributs,par défaut, de ton objet.Il peut en avoiraucun. Tu peux très bien en avoir
00:48:22 :rien du tout. Mais en général,il y en a quand même souvent.L'attribut self est obligatoire, il permet de définirles attributs d'objet, et après,tu peux créer des fonctions comme tu veux.
00:48:32 :Tu peux très bien créer une fonctionaffichéenom, comme ça,avec self.Et je peux direintself.nom, et ma fonctionva juste servir à afficher le nomde ça. Et derrière,
00:48:50 :si je fais livreHP.affiché nom,ça m'affiche le nom, tu vois.Après, tu crées tes fonctionscomme tu crées n'importe quelle fonction.Juste les troisconcepts à comprendre, c'est que tu crées une classe.
00:49:04 :Ta classe, elle a des fonctions.La fonction init est obligatoire,parce qu'elle permet de créer les attributs d'objetpar défaut de ta classe. Comme j'ai dit,
00:49:12 :il peut en avoir aucun, mais il faut quand mêmecette fonction-là, parce que c'est la fonction qui initialiseson objet.Ton objet, tu le crées de cette façon-là, c'est-à-direque tu le crées comme une variablequi est assignée à ton nom de classe.
00:49:24 :Entre parenthèses, tes paramètres,si t'en as, sinon, juste pour lacréer en soi, tu crées ton instancejuste comme ça.Et voilà. Et derrière,tu crées autant de fonctions que tu veux à l'intérieurde ta classe, et ce seront des méthodes de classe.
00:49:38 :Donc là, par exemple,AfficherNom, c'est une méthode de maclasse Livre, et comme LivreHPest un objetde la classe Livre,l'objet, je peux utiliser la méthodede sa classe.
00:49:52 :Est-ce que c'est plus clair comme ça ?Tu me diras.J'ai le messagequi s'est enlevé.Ça va être plus rapide ici.Du coup, je demandais,quand on fait du fonctionnelou de l'orienté objet,c'est quoi le meilleur ?
00:50:32 :Parce qu'en termes d'optimisation,c'est pas pareil, j'imagine.Alors, quand tu fais de l'orienté objet,quand on parle d'orienté objet, deprogrammation orientée objet, il y a obligatoirement des classes.
00:50:42 :Parce que c'est avec des classesque tu fais des objets. Donc, quand on parlede programmation orientée objet,tu as des classes.Et, en fait, dans tes classes,tu peux définir des méthodes,et ces méthodes-là sont propresaux objets que tu crées du type de ta classe.
00:50:58 :Donc, par exemple, là, j'ai une classe Livre.Eh bien, tous les objetsque je vais créer de type Livre,qui appartiendront à la classeLivre, tous ces objetshériteront des paramètres que j'aidéfinis pour ma classe Livre, et des méthodesque j'ai définis pour ma classe Livre.
00:51:14 :Donc là, je peux très bien en créer un autre.On nous le demande dans l'énoncé.Là, je vais créer un deuxième objet.Tu vois, je peux en créer autant que je veux.
00:51:22 :Toujours avec la classe Livre.Je lui précise les paramètres que je veux.Donc là, ici, le nom va changer.Le nombre de pagesva changer, et le prixva changer, mais ce n'est pas pour autantqu'il ne peut pas accéder aux mêmes choses,et que je ne peux pas utiliser
00:51:38 :les mêmes méthodes, tu vois.Donc là, en fait,puisque Livre, l'autre,va être un objet de la classe Livre,il va hériterdes attributs de la classe, doncles attributs nom, nombre de pages et prix,qui, eux, sont définis par rapportaux paramètres quand tu crées l'instance,qui sont ici, et il hérite
00:51:58 :aussi de toutes les méthodes qu'il y a dedans.Donc ici, moi, je n'en ai fait qu'une.La méthode AfficherNom qui permet d'afficher le nom.Qu'est-ce quej'ai fait comme connerie ? Ok, il y a deux points.
00:52:08 :Hop.Donc au final,par rapport à une fonction, ça permetune plus grande flexibilité d'utiliserdes classes, quoi.Ça permet une plus grande flexibilité, et ça permetde vachement synthétiseret de regrouper des bouts de code un petit peuensemble, tu vois.
00:52:26 :Et en fait, ça permet de,c'est une très bonne explication,je suis un ami Yanis,mais ça permet de, par exemple,là, tu vois, je veux créer des livres,en fait, je peux créer une classe Livrequi va centraliser toute la création de mes livres.
00:52:40 :Et là, dans le projet, c'est pareil,tu crées une bibliothèque,mais dans ta bibliothèque, tu créeras une classe Livrequi va justement centralisertous tes livres, et ce sera un peu de la même manière.
00:52:50 :Ton livre, il aura nom, auteur, ISBNet le type, c'est exactement de la même manière.Pareil, tu auras une classe Utilisateurqui va gérer tes utilisateurs.
00:52:58 :Tu vois ?Il faut le voir un petit peu comme ça, en fait. Il faut le voir vraiment pour,quand tu veux créer un gros projet,il faut le fractionner en plusieurs parties.
00:53:06 :Il y a des parties que tu peux regrouper ensemble,et quand tu veux que,tous tes livres, tu puisses afficherleur nom, tu peux centraliserça dans une classe Livre qui a une méthodeAfficher Nom. Et comme ça, tous les livres
00:53:18 :que tu crées, tous lesobjets de type livre que tu crées,auront tous accès à la méthode Afficher Nom.Et pourtant, tu vois, je ne l'ai fait qu'une seule fois,la méthode Afficher Nom. Mais pourtant, j'ai deux
00:53:28 :objets qui peuvent l'utiliser.C'est ça un peu le but.Après, il y a plein d'avantages utilisables pour les objets,mais ça, c'est vraiment la base.
00:53:36 :Ok, merci.Pas de soucis.On va être un peu chiant niveau timing, du coup,Yanis, c'est toi qui m'as demandé, je crois, les Quarkset le Refactoring.
00:53:46 :Je ne sais pas, qu'est-ce qui vous intéresse le plusentre les deux. Quarks, je crois que je l'avaisdéjà fait dans un Mentorah, mais ce n'est pas très long.
00:53:52 :Refactoring, ça seraitun poil plus long quand même.Mais on peut le fairevite fait quand même.Mais ce sera vraiment, on le reverra.Mais de toute façon, les deux, je les ai fait en Mentorah.
00:54:06 :Je ne sais pas lequel vous intéresse le plus de le voir rapidement.Si t'as déjà fait les Quarks...Les deux, je les ai faites aussi.
00:54:16 :Les deux, je les ai fait.Il faudrait que j'essaie de les retrouver en rediffusion.Mais les deux, je les ai fait normalement.Après, je ne sais pas si j'ai encore eu le tempsde noter dans les rediffusionsce que j'ai faitconcrètement dedans, maisnormalement, généralement, t'asl'échapitrage,le slicing...
00:54:38 :Non, il faudrait voir......Je rajoute, mais je l'ai fait récemment les deux.J'ai fait en Mentorah sur les classeset on avait fait le refactoring.
00:54:58 :Et les Quarks,je l'ai fait aussi.Après, Quarks, je pensequ'il doit y avoir sur le site un trucpratique. Voilà.Pas très bien.Écoute, ça vaudra mieuxque mille mots.
00:55:14 :C'est quoi ? C'est à ce clousser qui t'expliquetout le fonctionnement.En fait, il faut le voir commeun argument dans une fonctionqui permet d'accepter un nombreindéfini d'arguments,mais des arguments nommés.
00:55:30 :À la différence de arg, je ne sais pas nommer.C'est-à-dire que, de cette façon-là,en gros,il n'y a qu'un seul truc,mais je peux en lui en donner autant que je veux.
00:55:40 :La seule condition, c'est qu'il soit nommé,parce qu'il y a variable égale valeur.Et en fait, derrière, la fonctionva les recevoir comme un dictionnaire.
00:55:48 :Tu vois ?Et donc si je l'affiche,ça va l'afficher sous forme de dictionnaire avec clé valeur.La clé, c'est ce qu'on a mis là,et la valeur, c'est ce qu'on a mis là.
00:55:58 :Et en gros, c'est juste qu'au lieu de,par exemple, de fairea,mo, et boolean,j'ai juste fait ça,et je les mets en paramètres là.
00:56:10 :Il y a plein de cas où ça peut être utile.Voilà pour t'expliquer simplement comment ça marche.Mais après, je te laisse lire l'entièreté du glossairepar rapport à ça.
00:56:18 :Et en capitulation,je ne sais pas s'il y a quelque chose,il y a l'exercice, donc c'était celui-là,que j'avais déjà fait.Je vais juste voir ce qu'il donne par défaut.
00:56:30 :Ouais, ok.Après, là, c'est ausside voir la séparation des responsabilités.En fait, on a une classe de baseet c'est de le diviser en trois classes.
00:56:42 :Mais ça, pareil, je l'ai fait.À la limite, pareil, il faudra aller voirdans les derniers mentorats, mais je l'ai fait.Je ne sais pas si tu vas pouvoir te le retrouvercomme ça, maisça doit être dans l'une des dernières,de toute façon.
00:56:58 :Je vais regarder rapidement sur l'échapitrage.Ah.Sur celle que tu viens de regarder,il y avait encapsulation à un moment.Sur celle juste avant ?
00:57:14 :Ouais.Ah, mince, je ne suis pas doué.C'était laquelle ?C'était celle-là ?C'était le 18, ouais.Non.C'était pas le 18, je ne sais pluslaquelle tu as marqué, mais il y avaitun chapitre en capturation.
00:57:34 :Ah, ouais ?Ah, ah !Euh...Ah, non, ce n'était pas celle-là.Non, je ne pense pas, c'est celle que j'ai affichée.Non.Euh...Pas sûr, hein ?
00:57:56 :Pas sûr, je ne suis pas sûr.Et là, le truc de livre,je l'avais déjà fait.Hum...Là, on a fait la P aussi,ou pas ?
00:58:20 :Je suis sûr de l'avoir déjà fait, parce que l'exerciceici,je ne l'avais pas fait en solo, ce truc-là, donc...Je ne vais pas réussirà le retrouver.
00:58:42 :Aïe, aïe, aïe.Je suis persuadé de l'avoir refait.C'est sûr quetu l'avais vu, à un moment donné, passersur l'écritrage ?Ben ouais, on se pile, mais...
00:58:56 :Ah.Ah, c'est peut-êtrelà.Ok.Ça, c'était un projet.Hum...Je suis persuadé de l'avoir fait, en plus.Bon, on va être un peu shortniveau time, mais essaye de regarderdans les derniers Mantora, au cours du moisde juillet, ou alors au maximumfin juin, Yanis,tu regardes dans l'échapitrage, je suis persuadé
00:59:48 :que je l'ai fait,celui sur l'encapsulation,celui que je t'ai montré.Mais c'est peut-être pas noté comme ça,c'est peut-être,je l'ai peut-être noté en tant que séparation des responsabilités.
01:00:00 :Donc si tu vois un truc là-dessus, c'estcet exercice-là.Ok, ok.Ok, ok. Est-ce qu'il y a des dernières questionsavant de conclure ?Si non,j'espère vous voir nombreuxsur le projet mensuel.
01:00:22 :J'ai vu qu'il y en avait quelques-unsqui s'étaient inscrits déjà.Et puis,hâte de voir ça.Et puis,sinon, s'il n'y a pas de questions,je vous souhaite une bonne finde semaine. Je vous revois
Aucune occurrence trouvée pour « ».
00:00:00
Introduction
00:00:26
Questions des participants
00:01:47
Présentation du projet de bibliothèque
00:03:08
Description du projet en ligne de commande
00:03:58
Fonctionnalités de l'application
00:07:13
Discussion sur l'utilisation de base de données
00:11:00
Questions supplémentaires
00:12:14
Tests et documentation
00:13:00
Retour et évaluation du projet
00:19:21
Discussion sur l'autonomie du projet
00:31:12
Alternatives PowerShell et Git Bash