{"id":5775,"date":"2024-08-29T05:32:33","date_gmt":"2024-08-29T05:32:33","guid":{"rendered":"https:\/\/wikiform.fr\/codespace\/presentation-de-la-poo-en-python-introduction\/"},"modified":"2024-08-29T05:32:36","modified_gmt":"2024-08-29T05:32:36","slug":"presentation-de-la-poo-en-python-introduction","status":"publish","type":"post","link":"https:\/\/wikiform.fr\/codespace\/presentation-de-la-poo-en-python-introduction\/","title":{"rendered":"5.1 Pr\u00e9sentation de la P.O.O en Python : Introduction"},"content":{"rendered":"\n<p><strong>P.O.O Python<\/strong> est un concept fondamental que tout d\u00e9veloppeur Python doit ma\u00eetriser. La Programmation Orient\u00e9e Objet (P.O.O) permet de structurer le code d&rsquo;une mani\u00e8re qui est \u00e0 la fois intuitive et modulaire. Dans cet article, nous vous guiderons \u00e0 travers les bases de la P.O.O Python avec des exemples concrets et une explication approfondie des concepts cl\u00e9s.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction \u00e0 la <strong>Programmation Orient\u00e9e Objet en Python<\/strong><\/h2>\n\n\n\n<div id=\"videoContainer\" style=\"position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;\">\n    <iframe src=\"https:\/\/player.vimeo.com\/video\/583348392?dnt=1&#038;fullscreen=0&#038;pip=0\" loading=\"lazy\" loading=\"lazy\" style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\" frameborder=\"0\" allow=\"autoplay\" allowfullscreen id=\"vimeoPlayer\"><\/iframe>\n    <div id=\"popupContainer\" class=\"desktop-popup\" style=\"display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 90%; max-width: 400px; padding: 20px; border-radius: 10px; text-align: center; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.95); box-sizing: border-box;\">\n        <h2 style=\"color: #333; font-size: 1.5em; margin: 10px 0;\" id=\"profitez-de-loffre-spciale-\">Profitez de l\u2019offre sp\u00e9ciale !<\/h2>\n        <p style=\"color: #e74c3c; font-size: 1.2em; margin: 10px 0;\">Obtenez notre cours pour seulement <strong id=\"price\">29.5\u20ac<\/strong> au lieu de <del>59\u20ac<\/del> !<\/p>\n        <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" style=\"display: block; padding: 10px 20px; background-color: #701CF5; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 1em; margin: 20px auto;\" rel=\"noopener\">Commencer maintenant<\/a>\n        <button onclick=\"closePopup()\" style=\"padding: 10px 20px; font-size: 1em;\">Fermer<\/button>\n    <\/div>\n    <div id=\"popupContainerMobile\" class=\"mobile-popup\" style=\"display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 80%; max-width: 300px; padding: 15px; border-radius: 10px; text-align: center; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.95); box-sizing: border-box;\">\n        <p style=\"color: #e74c3c; font-size: 1em; margin: 5px 0;\">Cours sp\u00e9cial \u00e0 <strong id=\"priceMobile\">29.5\u20ac<\/strong> au lieu de <del>59\u20ac<\/del> !<\/p>\n        <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" style=\"display: inline-block; padding: 8px 15px; background-color: #701CF5; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 0.9em;\" rel=\"noopener\">Commencer maintenant<\/a>\n        <button onclick=\"closePopup()\" style=\"padding: 5px 10px; font-size: 0.9em;\">Fermer<\/button>\n    <\/div>\n<\/div>\n\n<script src=\"https:\/\/player.vimeo.com\/api\/player.js\"><\/script>\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    var iframe = document.getElementById('vimeoPlayer');\n    var player = new Vimeo.Player(iframe);\n    var isPopupDisplayed = false;\n\n    player.on('play', function() {\n        if (!isPopupDisplayed) {\n            player.on('timeupdate', function(data) {\n                if (data.seconds >= 120 && !isPopupDisplayed) {\n                    player.pause().then(function() {\n                        if (window.innerWidth > 768) {\n                            document.querySelector('.desktop-popup').style.display = 'block';\n                        } else {\n                            document.querySelector('.mobile-popup').style.display = 'block';\n                        }\n                        fetchPriceAndUpdatePopup();\n                        isPopupDisplayed = true;\n                    });\n                }\n            });\n        }\n    });\n\n    function fetchPriceAndUpdatePopup() {\n        fetch('https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144')\n            .then(response => response.text())\n            .then(html => {\n                var parser = new DOMParser();\n                var fetchedDoc = parser.parseFromString(html, 'text\/html');\n                var priceElement = fetchedDoc.querySelector('.ammount .fw-500');\n                var originalPriceElement = fetchedDoc.querySelector('.ammount del');\n                var price = priceElement ? priceElement.textContent.trim() : '29.5\u20ac';\n                var originalPrice = originalPriceElement ? originalPrice.textContent.trim() : '59\u20ac';\n\n                document.getElementById('price').textContent = price;\n                document.getElementById('priceMobile').textContent = price;\n                document.querySelector('.desktop-popup del').textContent = originalPrice;\n                document.querySelector('.mobile-popup del').textContent = originalPrice;\n            })\n            .catch(error => console.error('Error fetching the price:', error));\n    }\n\n    function closePopup() {\n        document.querySelector('.desktop-popup').style.display = 'none';\n        document.querySelector('.mobile-popup').style.display = 'none';\n        player.play();\n    }\n});\n<\/script>\n\n\n\n<p>La Programmation Orient\u00e9e Objet (P.O.O) est un paradigme de programmation qui utilise \u00ab\u00a0les objets\u00a0\u00bb &#8211; des entit\u00e9s qui regroupent des informations et des comportements connexes. En Python, la P.O.O simplifie la gestion des donn\u00e9es et des op\u00e9rations complexes en permettant de cr\u00e9er des structures de donn\u00e9es personnalis\u00e9es, appel\u00e9es \u00ab\u00a0classes\u00a0\u00bb. Avant de plonger dans les d\u00e9tails, regardons rapidement pourquoi la P.O.O est si puissante. Pour apprendre \u00e0 installer Python, consultez ces articles : <a href=\"https:\/\/wikiform.fr\/codespace\/installer-python-sur-mac-2024-guide-complet\">installer Python sur Mac<\/a> ou <a href=\"https:\/\/wikiform.fr\/codespace\/installer-python-sur-windows-facilement\">installer Python sur Windows<\/a>.<\/p>\n\n\n\n<p>La P.O.O vous permet de mieux organiser votre code, de le rendre plus lisible et de r\u00e9utiliser les composants de mani\u00e8re efficace. Voyons comment nous pouvons mettre en \u0153uvre ces concepts en Python. Si vous en \u00eates \u00e0 vos premiers pas, suivez notre guide pour \u00e9crire <a href=\"https:\/\/wikiform.fr\/codespace\/premier-programme-python-hello-world\">votre premier programme en Python<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9ation et Utilisation des Classes<\/h3>\n\n\n\n<p>Une classe est un plan pour cr\u00e9er des objets. Elle encapsule les attributs (donn\u00e9es) et les m\u00e9thodes (fonctions) qui d\u00e9finissent le comportement des objets. Commen\u00e7ons par cr\u00e9er une classe simple en Python :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>class Voiture:\n    def __init__(self, marque, mod\u00e8le, ann\u00e9e):\n        self.marque = marque\n        self.mod\u00e8le = mod\u00e8le\n        self.ann\u00e9e = ann\u00e9e\n    \n    def description(self):\n        return f\"{self.ann\u00e9e} {self.marque} {self.mod\u00e8le}\"\n\n# Cr\u00e9ation d'instance de la classe Voiture\nma_voiture = Voiture(\"Tesla\", \"Model S\", 2022)\nprint(ma_voiture.description())\n<\/code><\/pre>\n\n\n\n<p>Dans cet exemple, nous avons d\u00e9fini une classe <code>Voiture<\/code> avec un constructeur <code>__init__<\/code> pour initialiser les attributs <code>marque<\/code>, <code>mod\u00e8le<\/code>, et <code>ann\u00e9e<\/code>. La m\u00e9thode <code>description<\/code> renvoie une cha\u00eene de caract\u00e8res d\u00e9crivant la voiture. Ensuite, nous avons cr\u00e9\u00e9 une instance de cette classe et utilis\u00e9 la m\u00e9thode <code>description<\/code> pour afficher les d\u00e9tails de la voiture. Pour des informations plus d\u00e9taill\u00e9es sur la cr\u00e9ation des classes, consultez <a href=\"https:\/\/wikiform.fr\/codespace\/creation-et-utilisation-des-classes-en-python\">cet article<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Encapsulation : Prot\u00e9ger les Donn\u00e9es Internes<\/h3>\n\n\n\n<p>L&rsquo;encapsulation est une des pierres angulaires de la P.O.O. Elle permet de prot\u00e9ger les donn\u00e9es internes des objets et de contr\u00f4ler leur acc\u00e8s. En Python, cela se fait en utilisant des attributs priv\u00e9s et des m\u00e9thodes d&rsquo;acc\u00e8s (getters et setters).<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>class CompteBancaire:\n    def __init__(self, titulaire, solde):\n        self.__titulaire = titulaire\n        self.__solde = solde\n    \n    def deposer(self, montant):\n        self.__solde += montant\n    \n    def retirer(self, montant):\n        if montant <= self.__solde:\n            self.__solde -= montant\n        else:\n            print(\"Fonds insuffisants\")\n    \n    def get_solde(self):\n        return self.__solde\n\n# Cr\u00e9ation d'une instance de CompteBancaire\ncompte = CompteBancaire(\"Alice\", 1000)\ncompte.deposer(500)\nprint(compte.get_solde())  # Affiche : 1500\n<\/code><\/pre>\n\n\n\n<p>Dans cet exemple, les attributs <code>__titulaire<\/code> et <code>__solde<\/code> sont priv\u00e9s (indiqu\u00e9s par les double tirets bas), ce qui signifie qu'ils ne peuvent \u00eatre acc\u00e9d\u00e9s directement depuis l'ext\u00e9rieur de la classe. Les m\u00e9thodes <code>deposer<\/code>, <code>retirer<\/code>, et <code>get_solde<\/code> permettent de modifier et de lire ces attributs de mani\u00e8re contr\u00f4l\u00e9e. Pour en savoir plus, d\u00e9couvrez une <a href=\"https:\/\/wikiform.fr\/codespace\/gerer-erreurs-et-exceptions-en-python\">introduction \u00e0 la gestion d'erreurs et d'exceptions en Python<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">H\u00e9ritage : R\u00e9utilisation et Extension de Classes<\/h3>\n\n\n\n<p>L'h\u00e9ritage permet de cr\u00e9er une nouvelle classe qui reprend les attributs et les m\u00e9thodes d'une classe existante. Cela facilite la r\u00e9utilisation du code et l'extension des fonctionnalit\u00e9s. Voici un exemple d'h\u00e9ritage en Python :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>class Animal:\n    def __init__(self, nom):\n        self.nom = nom\n    \n    def parler(self):\n        pass\n\nclass Chien(Animal):\n    def parler(self):\n        return \"Woof!\"\n\nclass Chat(Animal):\n    def parler(self):\n        return \"Meow!\"\n\n# Utilisation des classes h\u00e9rit\u00e9es\nchien = Chien(\"Rex\")\nchat = Chat(\"Whiskers\")\n\nprint(chien.nom, \"dit\", chien.parler())  # Rex dit Woof!\nprint(chat.nom, \"dit\", chat.parler())    # Whiskers dit Meow!\n<\/code><\/pre>\n\n\n\n<p>Dans cet exemple, nous avons une classe <code>Animal<\/code> avec une m\u00e9thode <code>parler<\/code> non impl\u00e9ment\u00e9e. Les classes <code>Chien<\/code> et <code>Chat<\/code> h\u00e9ritent de <code>Animal<\/code> et impl\u00e9mentent leur propre version de la m\u00e9thode <code>parler<\/code>. Pour une exploration approfondie de l'h\u00e9ritage, consultez notre article sur les <a href=\"https:\/\/wikiform.fr\/codespace\/concepts-et-utilisation-de-l-heritage-en-python\">concepts et l'utilisation de l'h\u00e9ritage en Python<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Polymorphisme : Traitement de Diff\u00e9rents Objets Uniform\u00e9ment<\/h3>\n\n\n\n<p>Le polymorphisme permet de traiter diff\u00e9rents objets de mani\u00e8re uniforme. En utilisant des m\u00e9thodes communes, nous pouvons interagir avec divers objets sans nous pr\u00e9occuper de leur type exact.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>def faire_parler(animal):\n    print(animal.nom, \"dit\", animal.parler())\n\n# Utilisation du polymorphisme\nfaire_parler(chien)  # Rex dit Woof!\nfaire_parler(chat)   # Whiskers dit Meow!\n<\/code><\/pre>\n\n\n\n<p>Ici, la fonction <code>faire_parler<\/code> accepte tout objet ayant une m\u00e9thode <code>parler<\/code> et un attribut <code>nom<\/code>, d\u00e9montrant ainsi le polymorphisme. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Applications R\u00e9elles de la P.O.O en Python<\/h3>\n\n\n\n<p>Les concepts de la P.O.O ne sont pas seulement th\u00e9oriques; ils sont utilis\u00e9s dans de nombreuses applications r\u00e9elles. Par exemple, les frameworks web comme Django et Flask utilisent largement la P.O.O pour structurer leur code. De plus, les biblioth\u00e8ques pour l'analyse de donn\u00e9es comme Pandas et les moteurs de jeux comme Pygame utilisent \u00e9galement ces concepts pour offrir des interfaces puissantes et intuitives.<\/p>\n\n\n\n<p>Si vous d\u00e9butez en Python, il est essentiel de ma\u00eetriser <a href=\"https:\/\/wikiform.fr\/codespace\/installer-python-sur-linux-ubuntu-etape-par-etape\">l'installation sur Linux<\/a> et la mani\u00e8re de structurer vos programmes avec des <a href=\"https:\/\/wikiform.fr\/codespace\/creer-et-gerer-des-packages-en-python\">packages en Python<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>La <strong>Programmation Orient\u00e9e Objet en Python<\/strong> est un outil puissant qui vous permet de structurer et d'optimiser votre code. En comprenant et en pratiquant les concepts de classes, d'encapsulation, d'h\u00e9ritage, et de polymorphisme, vous pouvez cr\u00e9er des programmes plus robustes et maintenables. Continuez \u00e0 explorer et \u00e0 appliquer ces concepts pour am\u00e9liorer vos comp\u00e9tences en P.O.O Python.<\/p>\n\n\n\n<a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/wikiform.fr\/codespace\/wp-content\/uploads\/2024\/07\/learnify-formation-PYTHON-offre-50.gif\" loading=\"lazy\" alt=\"Learnify Formation Python Offre 50%\" title=\"\"><\/a>\n\n\n<p>Pour une formation plus approfondie sur Python, consultez notre <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\">cours de d\u00e9veloppement Python<\/a>.<\/p>.","protected":false},"excerpt":{"rendered":"<p>P.O.O Python est un concept fondamental que tout d\u00e9veloppeur Python doit ma\u00eetriser. La Programmation Orient\u00e9e Objet (P.O.O) permet de structurer le code d&rsquo;une mani\u00e8re qui&#8230;<\/p>\n","protected":false},"author":4,"featured_media":2949,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24],"tags":[18],"class_list":["post-5775","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-tutoriels"],"acf":[],"_titre_de_la_formation":null,"_description_":null,"_objectifs_pedagogiques":null,"_programme_":null,"_url_de_limage":null,"_materiel_necessaire":null,"_modalites_devaluation_des_acquis":null,"_moyens_pedagogiques_et_techniques":null,"_accessibilite_":null,"_formateur_":null,"menu_order":0,"_links":{"self":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/comments?post=5775"}],"version-history":[{"count":1,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5775\/revisions"}],"predecessor-version":[{"id":5776,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5775\/revisions\/5776"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media\/2949"}],"wp:attachment":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media?parent=5775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/categories?post=5775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/tags?post=5775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}