{"id":229949,"date":"2022-11-17T18:44:00","date_gmt":"2022-11-17T15:44:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229949"},"modified":"2022-11-09T19:25:46","modified_gmt":"2022-11-09T16:25:46","slug":"programmation-orientee-objet-dans-wordpress-analyse-partie-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/programmation-orientee-objet-dans-wordpress-analyse-partie-1\/","title":{"rendered":"Programmation orient\u00e9e objet dans WordPress : analyse, partie 1"},"content":{"rendered":"\n<p>Lorsque j&rsquo;ai commenc\u00e9 \u00e0 proposer des <a href=\"https:\/\/tommcfarlin.com\/membership-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">adh\u00e9sions<\/a> sur ce site, je savais que la premi\u00e8re chose que je voulais aborder \u00e9tait une introduction \u00e0 la programmation orient\u00e9e objet.<\/p>\n<p>C&rsquo;est quelque chose qui semble \u00eatre int\u00e9ressant pour la plupart des gens qui travaillent dans WordPress, mais il y a un probl\u00e8me qui d\u00e9tourne beaucoup de gens ou g\u00e9n\u00e8re de mauvais r\u00e9sultats :<\/p>\n<p>La programmation orient\u00e9e objet peut se compliquer rapidement. Et cela devient d\u00e9motivant.<\/p>\n<p>Voici ce que je veux dire: supposons que vous \u00eates un d\u00e9veloppeur WordPress qui commence \u00e0 faire des recherches sur la programmation orient\u00e9e objet. Il commence par parler de classes, de constructeurs et de fonctions, et tout semble bien.<\/p>\n<p>Mais ensuite, il entre rapidement dans:<\/p>\n<ul>\n<li>m\u00e9thodes priv\u00e9es et prot\u00e9g\u00e9es,<\/li>\n<li>h\u00e9ritage,<\/li>\n<li>polymorphisme,<\/li>\n<li>mod\u00e8les de conception,<\/li>\n<li>injection de d\u00e9pendance,<\/li>\n<li>r\u00e9f\u00e9rentiels,<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>\u00c7a fait boule de neige, non? Et ce n&rsquo;est pas du tout comme \u00e7a que \u00e7a doit \u00eatre, mais il est difficile de trouver une bonne introduction \u00e0 part <a href=\"https:\/\/carlalexander.ca\/discover-object-oriented-programming\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">quelques ressources<\/a> qui existent.<\/p>\n<p>Cela dit (et servant de toile de fond \u00e0 l&rsquo;endroit o\u00f9 je me dirige), je voulais cr\u00e9er une s\u00e9rie de contenus pour ceux qui\u00a0:<\/p>\n<ul>\n<li>sont vraiment int\u00e9ress\u00e9s par la programmation orient\u00e9e objet,<\/li>\n<li>ne savez pas par o\u00f9 commencer,<\/li>\n<li>souhaitent d\u00e9velopper leurs comp\u00e9tences,<\/li>\n<li>veulent repartir de z\u00e9ro sans d\u00e9g\u00e9n\u00e9rer trop rapidement en mati\u00e8re plus compliqu\u00e9e.<\/li>\n<\/ul>\n<p>Et c&rsquo;est ce que je commence aujourd&rsquo;hui et dans le premier grand s\u00e9rieux pr\u00e9vu pour les <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">membres<\/a>. Avec tout cela dit, commen\u00e7ons.<\/p>\n<p>Plus pr\u00e9cis\u00e9ment, commen\u00e7ons \u00e0 parler de programmation orient\u00e9e objet, d&rsquo;analyse, de conception et pourquoi elle devrait commencer par l\u00e0.<\/p>\n<h2>Programmation orient\u00e9e objet\u00a0: analyse<\/h2>\n<p>Lorsqu&rsquo;il s&rsquo;agit d&rsquo;\u00e9crire du code, il existe actuellement trois fa\u00e7ons populaires de le faire\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Functional_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fonctionnel<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">proc\u00e9dural<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Object-oriented_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">orient\u00e9 objet<\/a>.<\/li>\n<\/ul>\n<p>Chaque fois que nous travaillons et lisons du code WordPress, vous allez lire une combinaison de code proc\u00e9dural et de code orient\u00e9 objet.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e125a74e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e125a74e.png\" alt=\"Programmation orient\u00e9e objet dans WordPress : analyse, partie 1\" ><\/a><\/p>\n<p>Il y a plusieurs raisons pour lesquelles c&rsquo;est le cas, mais cela sort du cadre de notre discussion.<\/p>\n<p>C&rsquo;est parce que WordPress est construit avec les deux et parce que certains aspects du d\u00e9veloppement WordPress peuvent \u00eatre \u00e9crits avec du code proc\u00e9dural, comme les plugins et les th\u00e8mes, et d&rsquo;autres n\u00e9cessitent un d\u00e9veloppement orient\u00e9 objet comme les <a href=\"https:\/\/codex.wordpress.org\/Widgets_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">widgets<\/a>.<\/p>\n<h3>Analyse et conception<\/h3>\n<p>Tr\u00e8s souvent, la premi\u00e8re chose que nous voulons faire, en tant que d\u00e9veloppeurs (en herbe ou non), est de nous lancer imm\u00e9diatement dans l&rsquo;\u00e9criture de code. Je re\u00e7ois aussi. C&rsquo;est marrant. Nous avons une id\u00e9e, nous voulons lui donner vie, nous voulons commencer \u00e0 l&rsquo;utiliser et nous voulons la montrer \u00e0 d&rsquo;autres personnes.<\/p>\n<p>Voici le probl\u00e8me avec cela, cependant: nous passons souvent directement \u00e0 l&rsquo;\u00e9criture de code pour essayer de faire en sorte que le projet fasse ce que nous voulons qu&rsquo;il fasse.<\/p>\n<p>S&rsquo;il s&rsquo;agit d&rsquo;un projet simple (et je veux dire tr\u00e8s simple), alors ce n&rsquo;est pas si grave. Honn\u00eatement, je l&rsquo;ai fait (et <a href=\"https:\/\/github.com\/tommcfarlin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a> en est la preuve). Mais en ce qui concerne le travail que nous faisons chez <a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pressware<\/a> ; c&rsquo;est une autre histoire.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e173b695.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e173b695.png\" alt=\"Programmation orient\u00e9e objet dans WordPress : analyse, partie 1\" ><\/a><\/p>\n<p>Quand il s&rsquo;agit de projets comme celui-l\u00e0, nous voulons faire un peu d&rsquo;analyse et de conception avant d&rsquo;\u00e9crire du code.<\/p>\n<p>Ce qui soul\u00e8ve la question, qu&rsquo;est-ce que l&rsquo;analyse et la conception orient\u00e9es objet ?<\/p>\n<h4>Une analyse<\/h4>\n<p>En bref, pensez-y de cette fa\u00e7on:<\/p>\n<p>L&rsquo;analyse est le processus qui consiste \u00e0 prendre l&rsquo;id\u00e9e que le client ou que vous avez et \u00e0 creuser ce qui doit vraiment \u00eatre construit.<\/p>\n<p>Cela peut vous aider \u00e0 d\u00e9terminer quel est le coof de l&rsquo;application et ce qui n&rsquo;est pas n\u00e9cessaire pour la premi\u00e8re version de l&rsquo;application. J&rsquo;aime les \u00e9tiqueter en ce qui concerne les &quot;incontournables&quot; et quels sont les &quot;sympa \u00e0 avoir&quot;.<\/p>\n<p>Une bonne r\u00e8gle de base est la suivante\u00a0:<\/p>\n<ul>\n<li><strong>les incontournables<\/strong> sont les choses qui sont au c\u0153ur de l&rsquo;application et doivent entrer dans la premi\u00e8re it\u00e9ration du projet,<\/li>\n<li><strong>les choses agr\u00e9ables \u00e0 avoir<\/strong> sont les choses que nous pouvons \u00e9ventuellement y int\u00e9grer<\/li>\n<\/ul>\n<p>En fin de compte, cela nous aide \u00e0 travailler vers une premi\u00e8re version solide pour le client. Un exemple est peut-\u00eatre pour WordPress\u00a0:<\/p>\n<ul>\n<li>La premi\u00e8re version de WordPress avait-elle besoin d&rsquo;avoir une API de plugin ou avait-elle simplement besoin d&rsquo;avoir la possibilit\u00e9 pour les gens d&rsquo;\u00e9crire des articles et de les publier sur le Web ?<\/li>\n<\/ul>\n<p>Si vous construisez une plate-forme pour les blogs, doit-elle \u00eatre extensible d\u00e8s la premi\u00e8re version\u00a0? Ce n&rsquo;est rien de plus qu&rsquo;un exemple, mais vous voyez l&rsquo;id\u00e9e.<\/p>\n<h4>Qu&rsquo;est-ce qui rend l&rsquo;analyse si difficile\u00a0?<\/h4>\n<p>Je pense que cela a souvent \u00e0 voir avec les personnages.<\/p>\n<p>Par exemple, nous, en tant que programmeurs, pensons qu&rsquo;un projet doit toujours faire ce que veut le client. La v\u00e9rit\u00e9 est que ce n&rsquo;est pas toujours le cas.<\/p>\n<p>Je veux dire, \u00e9ventuellement, \u00e7a pourrait l&rsquo;\u00eatre, mais la premi\u00e8re version du projet n&rsquo;a pas n\u00e9cessairement besoin d&rsquo;\u00eatre ainsi.<\/p>\n<p>De plus, l&rsquo;un des principes de la programmation orient\u00e9e objet est que nous n&rsquo;\u00e9crivons pas beaucoup de code en double. Mais cela peut \u00eatre tr\u00e8s difficile \u00e0 faire si une analyse ad\u00e9quate n&rsquo;a pas \u00e9t\u00e9 effectu\u00e9e.<\/p>\n<p>Enfin, les plus exp\u00e9riment\u00e9s diront qu&rsquo;un bon logiciel utilisera des principes \u00e9prouv\u00e9s \u2013 qu&rsquo;il s&rsquo;agisse de mod\u00e8les de conception ou non \u2013 mais qu&rsquo;il est capable d&rsquo;\u00eatre modifi\u00e9 facilement au fil du temps. Cela, dans un sens, se d\u00e9veloppe organiquement.<\/p>\n<h2>Alors, que devons-nous faire\u00a0?<\/h2>\n<p>Dans le prochain article, je vais parler de trois choses que nous pouvons faire, en tant que d\u00e9veloppeurs, pour nous assurer que le logiciel que nous construisons pour nous-m\u00eames ou pour les autres nous emm\u00e8ne dans la bonne direction.<\/p>\n<p>Je ne dirai pas que c&rsquo;est une solution miracle parce que je ne crois pas que cela existe, mais je dirai que c&rsquo;est une approche assez forte que j&rsquo;ai trouv\u00e9 d&rsquo;autres \u00e0 utiliser et bien que moi-m\u00eame et qui m\u00e8ne \u00e0 une assez bonne direction en termes d&rsquo;analyse orient\u00e9e objet.<\/p>\n<p>Cela nous m\u00e8nera \u00e9ventuellement \u00e0 la conception. Mais nous n&rsquo;en sommes pas encore l\u00e0.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La programmation orient\u00e9e objet dans WordPress, sans parler de n&rsquo;importe quelle plate-forme, peut \u00eatre une t\u00e2che ardue. Mais je veux commencer \u00e0 z\u00e9ro et avancer \u00e0 partir de l\u00e0.<\/p>\n","protected":false},"author":1,"featured_media":165351,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,832,841],"tags":[1167],"class_list":["post-229949","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-guide-pour-les-debutants","category-tutoriels","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=229949"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229949\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/165351"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}