{"id":85,"date":"2021-05-29T14:07:35","date_gmt":"2021-05-29T14:07:35","guid":{"rendered":"https:\/\/www.louismarchand.me\/?page_id=85"},"modified":"2021-05-29T14:29:21","modified_gmt":"2021-05-29T14:29:21","slug":"encapsulation","status":"publish","type":"page","link":"https:\/\/www.louismarchand.me\/index.php\/encapsulation\/","title":{"rendered":"Encapsulation"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Toutes les th\u00e9ories de programmation orient\u00e9e objet vue jusqu&rsquo;ici nous permettent d&rsquo;arriver \u00e0 un concept fondamental de ce type de programmation. On appelle ce concept l&rsquo;encapsulation.<\/p>\n<h2>Qu&rsquo;est-ce que l&rsquo;encapsulation<\/h2>\n<p>En programmation orient\u00e9e objet, l&rsquo;encapsulation permet de cr\u00e9er des classes de qualit\u00e9, fiables et permettant la r\u00e9utilisation de code. Pour respecter le principe d&rsquo;encapsulation d&rsquo;une classe, il faut prendre en consid\u00e9rant les \u00e9l\u00e9ments suivants:<\/p>\n<ul>\n<li>Les classes sont s\u00e9par\u00e9es en fonction des donn\u00e9es qu&rsquo;elles contiennent;<\/li>\n<li>Tous les m\u00e9canismes permettant la manipulation des donn\u00e9es de la classe doivent, au maximum, \u00eatre plac\u00e9s dans la classe;<\/li>\n<li>Seuls les m\u00e9canismes qui doivent \u00eatre accessibles aux clients le sont (l&rsquo;interface est minimale);<\/li>\n<li>La classe a la responsabilit\u00e9 de l&rsquo;int\u00e9grit\u00e9 de ses donn\u00e9es;<\/li>\n<li>Une classe doit \u00eatre d\u00e9velopp\u00e9e de mani\u00e8re ind\u00e9pendante des autres classes d&rsquo;un syst\u00e8me (sauf pour les liens que la classe est enfant ou client d&rsquo;une autre classe)<\/li>\n<\/ul>\n<h3>\u00c0 noter<\/h3>\n<p>Il est important de voir que, malgr\u00e9 son importance, l&rsquo;encapsulation n&rsquo;est pas une m\u00e9canique de programmation orient\u00e9e objet en tant que telle, mais bien un guide afin de cr\u00e9er le meilleur \u00ab\u00a0design\u00a0\u00bb possible.<\/p>\n<h2>Quelques petits trucs<\/h2>\n<ul>\n<li>Lorsqu&rsquo;une m\u00e9canique est cr\u00e9\u00e9e, toujours se poser la question: \u00ab\u00a0quelle classe devrait avoir la responsabilit\u00e9 de cette m\u00e9canique?\u00a0\u00bb<\/li>\n<li>Lorsqu&rsquo;on cr\u00e9e une m\u00e9thode ou un attribut dans une classe, se poser la question: \u00ab\u00a0qui devrait avoir acc\u00e8s \u00e0 cette m\u00e9thode ou \u00e0 cet attribut?\u00a0\u00bb<\/li>\n<li>Lorsqu&rsquo;on cr\u00e9e une classe, toujours se poser la question: \u00ab\u00a0comment le client peut-il briser ma classe?\u00a0\u00bb<\/li>\n<li>Ne pas oublier qu&rsquo;une classe repr\u00e9sente un objet (une instance) et non un utilitaire de gestion. Par exemple, la classe \u00ab\u00a0Pomme\u00a0\u00bb sert \u00e0 repr\u00e9senter \u00ab\u00a0une pomme\u00a0\u00bb et non pas \u00e0 g\u00e9rer \u00ab\u00a0des pommes\u00a0\u00bb.<\/li>\n<li>Beaucoup de code similaire entre diff\u00e9rentes classes veut g\u00e9n\u00e9ralement dire qu&rsquo;il devrait y avoir un anc\u00eatre commun entre ces deux classes.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.louismarchand.me\/index.php\/programmation-orientee-objet-1\/\">Retour<\/a><\/p>\n<p>&nbsp;<\/p>\n<hr>\n<p>Auteur: Louis Marchand<br \/>\n<a href=\"https:\/\/creativecommons.org\/licenses\/by\/4.0\/deed.fr\" target=\"_blank\" rel=\"license noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/i.creativecommons.org\/l\/by\/4.0\/80x15.png\" alt=\"Creative Commons License\"><\/a><br \/>\nSauf pour les sections sp\u00e9cifi\u00e9es autrement, ce travail est sous licence <a href=\"https:\/\/creativecommons.org\/licenses\/by\/4.0\/deed.fr\" target=\"_blank\" rel=\"license noopener noreferrer\">Creative Commons Attribution 4.0 International<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Toutes les th\u00e9ories de programmation orient\u00e9e objet vue jusqu&rsquo;ici nous permettent d&rsquo;arriver \u00e0 un concept fondamental de ce type de programmation. On appelle ce concept l&rsquo;encapsulation. Qu&rsquo;est-ce que l&rsquo;encapsulation En programmation orient\u00e9e objet, l&rsquo;encapsulation permet de cr\u00e9er des classes de qualit\u00e9, fiables et permettant la r\u00e9utilisation de code. Pour respecter le principe d&rsquo;encapsulation d&rsquo;une&hellip; <a class=\"more-link\" href=\"https:\/\/www.louismarchand.me\/index.php\/encapsulation\/\">Continue reading <span class=\"screen-reader-text\">Encapsulation<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-85","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/pages\/85","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/comments?post=85"}],"version-history":[{"count":2,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/pages\/85\/revisions"}],"predecessor-version":[{"id":110,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/pages\/85\/revisions\/110"}],"wp:attachment":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/media?parent=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}