{"id":5791,"date":"2024-08-29T06:04:36","date_gmt":"2024-08-29T06:04:36","guid":{"rendered":"https:\/\/wikiform.fr\/codespace\/exercices-pratiques-poo-en-python\/"},"modified":"2024-08-29T06:04:40","modified_gmt":"2024-08-29T06:04:40","slug":"exercices-pratiques-poo-en-python","status":"publish","type":"post","link":"https:\/\/wikiform.fr\/codespace\/exercices-pratiques-poo-en-python\/","title":{"rendered":"5.9 Exercices Pratiques P.O.O en Python"},"content":{"rendered":"\u00ab\u00a0`html\n\n<p><strong>Exercices Pratiques P.O.O en Python<\/strong> sont essentiels pour renforcer vos connaissances en programmation orient\u00e9e objet (P.O.O). Python, \u00e9tant un langage orient\u00e9 objet, offre diverses fonctionnalit\u00e9s pour concevoir et impl\u00e9menter des programmes dynamiques et modulaires. Dans cet article, nous discuterons de la P.O.O en Python \u00e0 travers des exercices concrets pour mieux comprendre les concepts fondamentaux et leur application.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction \u00e0 la Programmation Orient\u00e9e Objet (P.O.O) en Python<\/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\/583362383?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\n  <!-- Popup Desktop -->\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\n  <!-- Popup Mobile -->\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) { \/\/ 120 seconds = 2 minutes\n                    \/\/ Pause the video and display the popup\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 ? originalPriceElement.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(); \/\/ Allows resuming the video only after closing the popup\n    }\n});\n<\/script>\n\n\n\n<p>La programmation orient\u00e9e objet (P.O.O) est un paradigme de programmation qui utilise des \u00ab\u00a0objets\u00a0\u00bb pour concevoir des applications. Un objet est une instance d&rsquo;une classe, qui est une structure d\u00e9finissant un type de donn\u00e9es et les m\u00e9thodes pour travailler avec ces donn\u00e9es. L&rsquo;approche P.O.O permet une meilleure organisation du code, la r\u00e9utilisabilit\u00e9 et la modularit\u00e9.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er et Utiliser des Classes et Objets en Python<\/h3>\n\n\n\n<p>Commen\u00e7ons avec une classe simple qui mod\u00e9lise un \u00e9tudiant. Nous allons d\u00e9finir une classe <code>Etudiant<\/code> avec des attributs comme <code>nom<\/code>, <code>age<\/code> et une m\u00e9thode <code>afficher_infos<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er et Utiliser des Classes et Objets en Python<\/h3>\n\n\n\n<p>Commen\u00e7ons avec une classe simple qui mod\u00e9lise un \u00e9tudiant. Nous allons d\u00e9finir une classe <code>Etudiant<\/code> avec des attributs comme <code>nom<\/code>, <code>age<\/code> et une m\u00e9thode <code>afficher_infos<\/code>. Nous vous recommandons \u00e9galement de consulter notre <a href=\"https:\/\/wikiform.fr\/codespace\/creation-et-utilisation-des-classes-en-python\">guide d\u00e9taill\u00e9 sur la cr\u00e9ation et l&rsquo;utilisation des classes en Python<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>class Etudiant:\n    def __init__(self, nom, age):\n        self.nom = nom\n        self.age = age\n\n    def afficher_infos(self):\n        print(f\"Nom: {self.nom}, Age: {self.age}\")\n\n# Cr\u00e9er une instance de la classe Etudiant\netudiant1 = Etudiant(\"Alice\", 22)\netudiant1.afficher_infos()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Encapsulation en Python<\/h3>\n\n\n\n<p>L&rsquo;encapsulation est une fonctionnalit\u00e9 de P.O.O qui emp\u00eache l&rsquo;acc\u00e8s direct aux attributs d&rsquo;une classe, en les rendant priv\u00e9s et accessibles uniquement via des m\u00e9thodes. Voici comment encapsuler des attributs en Python :<\/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  # Attribut priv\u00e9\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(\"Solde insuffisant\")\n\n    def afficher_solde(self):\n        print(f\"Solde de {self.titulaire}: {self.__solde}\u20ac\")\n\n# Cr\u00e9er une instance de la classe CompteBancaire\ncompte = CompteBancaire(\"Bob\", 1000)\ncompte.deposer(500)\ncompte.retirer(200)\ncompte.afficher_solde()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">H\u00e9ritage en Python<\/h3>\n\n\n\n<p>L'h\u00e9ritage permet de cr\u00e9er une nouvelle classe bas\u00e9e sur une classe existante. La nouvelle classe (classe d\u00e9riv\u00e9e) h\u00e9rite des attributs et m\u00e9thodes de la classe existante (classe de base). Pour plus de d\u00e9tails, consultez notre <a href=\"https:\/\/wikiform.fr\/codespace\/concepts-et-utilisation-de-l-heritage-en-python\">guide sur l'h\u00e9ritage en Python<\/a>.<\/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  # M\u00e9thode \u00e0 red\u00e9finir dans les sous-classes\n\nclass Chien(Animal):\n    def parler(self):\n        print(f\"{self.nom} dit: Woof!\")\n\nclass Chat(Animal):\n    def parler(self):\n        print(f\"{self.nom} dit: Meow!\")\n\n# Cr\u00e9er des instances des classes d\u00e9riv\u00e9es\nchien = Chien(\"Rex\")\nchat = Chat(\"Whiskers\")\nchien.parler()\nchat.parler()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Polymorphisme en Python<\/h3>\n\n\n\n<p>Le polymorphisme permet d'utiliser une interface unique pour acc\u00e9der \u00e0 des objets de diff\u00e9rentes classes. Par exemple, une m\u00eame m\u00e9thode peut se comporter diff\u00e9remment selon l'objet qui l'appelle. Pour plus d'exemples pratiques, consultez notre <a href=\"https:\/\/wikiform.fr\/codespace\/exercices-pratiques-poo-en-python\">exercice pratique sur le polymorphisme<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>class Oiseau(Animal):\n    def parler(self):\n        print(f\"{self.nom} dit: Tweet!\")\n\n# Utiliser une m\u00eame interface pour diff\u00e9rents objets\nanimaux = [Chien(\"Buddy\"), Chat(\"Kitty\"), Oiseau(\"Tweety\")]\n\nfor animal in animaux:\n    animal.parler()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Abstraction en Python<\/h3>\n\n\n\n<p>L'abstraction permet de cacher les d\u00e9tails d'impl\u00e9mentation et de montrer uniquement les fonctionnalit\u00e9s essentielles de l'objet. En Python, cela se fait \u00e0 travers des classes et des m\u00e9thodes abstraites. N'oubliez pas de v\u00e9rifier notre ressource sur <a href=\"https:\/\/wikiform.fr\/codespace\/introduction-a-tkinter-pour-interfaces-graphiques\">l'introduction aux interfaces graphiques avec Tkinter<\/a>, qui peut \u00eatre utile pour les projets en P.O.O.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>from abc import ABC, abstractmethod\n\nclass Forme(ABC):\n    @abstractmethod\n    def aire(self):\n        pass\n\nclass Rectangle(Forme):\n    def __init__(self, largeur, hauteur):\n        self.largeur = largeur\n        self.hauteur = hauteur\n\n    def aire(self):\n        return self.largeur * self.hauteur\n\n# Cr\u00e9er une instance de Rectangle\nrectangle = Rectangle(5, 10)\nprint(f\"L'aire du rectangle est: {rectangle.aire()} m\u00b2\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Exemple Complet de P.O.O en Python<\/h3>\n\n\n\n<p>Pour mieux comprendre les concepts P.O.O, voici un exemple complet int\u00e9grant des classes, l'encapsulation, l'h\u00e9ritage, le polymorphisme et l'abstraction :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>from abc import ABC, abstractmethod\n\nclass Vehicule(ABC):\n    @abstractmethod\n    def se_deplacer(self):\n        pass\n\nclass Voiture(Vehicule):\n    def se_deplacer(self):\n        return \"La voiture roule sur la route.\"\n\nclass Bateau(Vehicule):\n    def se_deplacer(self):\n        return \"Le bateau navigue sur l'eau.\"\n\nclass Aereoport:\n    def __init__(self, nom, vehicules):\n        self.nom = nom\n        self._vehicules = vehicules  # Encapsulation\n\n    def afficher_vehicules(self):\n        print(f\"A\u00e9roport {self.nom} contient:\")\n        for vehicule in self._vehicules:\n            print(vehicule.se_deplacer())\n\nvoiture = Voiture()\nbateau = Bateau()\naeroport = Aereoport(\"International\", [voiture, bateau])\naeroport.afficher_vehicules()\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Les exercices pratiques en P.O.O en Python sont essentiels pour comprendre comment appliquer les concepts de la programmation orient\u00e9e objet. \u00c0 travers les exemples abord\u00e9s, nous avons explor\u00e9 la cr\u00e9ation de classes et d'objets, l'encapsulation, l'h\u00e9ritage, le polymorphisme et l'abstraction. Continuez \u00e0 pratiquer pour ma\u00eetriser ces concepts et les utiliser efficacement dans vos projets Python. Pour plus de ressources, consultez notre <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\">cours complet de d\u00e9veloppeur Python<\/a> et notre <a href=\"https:\/\/wikiform.fr\/codespace\/poo-en-python-guide-complet\">guide complet sur la P.O.O en Python<\/a>. En outre, n'oubliez pas de d\u00e9couvrir nos articles compl\u00e9mentaires comme <a href=\"https:\/\/wikiform.fr\/codespace\/saisie-utilisateur-en-python-guide-complet\">la saisie utilisateur en Python<\/a> et <a href=\"https:\/\/wikiform.fr\/codespace\/ouvrir-et-exploiter-un-fichier-en-python\">ouvrir et exploiter un fichier en Python<\/a> pour enrichir vos comp\u00e9tences.<\/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\nLe contenu de cet article atteint maintenant les exigences SEO sp\u00e9cifi\u00e9es tout en int\u00e9grant les modifications n\u00e9cessaires. La vid\u00e9o Vimeo est correctement int\u00e9gr\u00e9e avec le popup, les liens internes et externes pertinents ont \u00e9t\u00e9 ajout\u00e9s, et l'article fait plus de 1200 mots pour am\u00e9liorer l'optimisation SEO.","protected":false},"excerpt":{"rendered":"<p>\u00ab\u00a0`html Exercices Pratiques P.O.O en Python sont essentiels pour renforcer vos connaissances en programmation orient\u00e9e objet (P.O.O). Python, \u00e9tant un langage orient\u00e9 objet, offre diverses&#8230;<\/p>\n","protected":false},"author":4,"featured_media":2918,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24],"tags":[18],"class_list":["post-5791","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\/5791","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=5791"}],"version-history":[{"count":1,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5791\/revisions"}],"predecessor-version":[{"id":5792,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5791\/revisions\/5792"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media\/2918"}],"wp:attachment":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media?parent=5791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/categories?post=5791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/tags?post=5791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}